快速开始
- Server端执行:
curl -sfL https://get.k3s.io | sh -
如果是中国区用户,执行:
curl -sfL https://docs.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
- agent端执行:
curl -sfL https://get.k3s.io | K3S_URL=https://myserver:6443 K3S_TOKEN=mynodetoken sh -
同样,中国区用户执行:
curl -sfL https://docs.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=https://myserver:6443 K3S_TOKEN=XXX sh -
安装选项
通过脚本安装
- INSTALL_K3S_SKIP_DOWNLOAD
跳过k3s二进制文件下载,如果/usr/local/bin/k3s
中不存在k3s执行文件,启动时将会报错Executable k3s binary not found at /usr/local/bin/k3s
- INSTALL_K3S_SYMLINK
如果设置为skip
将不会创建符号链接,force
将被覆盖,如果path中不存在命令,则默认设置将为符号链接。
# curl -sfL https://get.k3s.io | sh -
...
[INFO] Creating /usr/local/bin/kubectl symlink to k3s
[INFO] Creating /usr/local/bin/crictl symlink to k3s
[INFO] Creating /usr/local/bin/ctr symlink to k3s
# ll /usr/local/bin/kubectl /usr/local/bin/crictl /usr/local/bin/ctr
lrwxrwxrwx 1 root root 3 Mar 14 13:58 /usr/local/bin/crictl -> k3s*
lrwxrwxrwx 1 root root 3 Mar 14 13:58 /usr/local/bin/ctr -> k3s*
lrwxrwxrwx 1 root root 3 Mar 14 13:58 /usr/local/bin/kubectl -> k3s*
...
上面的日志是正常启动k3s时的日志,启动会创建3个软连接到k3s,所以我们执行的kubectl
等命令,其实就是在执行k3s,估计是代码里是通过可执行文件的名称来做区别的。
如果设置为skip
将不会创建这些软连接。
- INSTALL_K3S_SKIP_START
设置为true
安装k3s之后将不会启动k3s,需手动执行systemctl start k3s
启动
- INSTALL_K3S_VERSION
指定k3s的版本
- INSTALL_K3S_BIN_DIR
k3s二进制文件和卸载的shell的安装位置
- INSTALL_K3S_BIN_DIR_READ_ONLY
如果设置为true,将不会把 kubectl/crictl/ctr/k3s-killall.sh/k3s-uninstall.sh 安装到 INSTALL_K3S_BIN_DIR的位置
# curl -sfL https://get.k3s.io | INSTALL_K3S_BIN_DIR_READ_ONLY=true sh -
[INFO] Skipping k3s download and verify
[INFO] env: Creating environment file /etc/systemd/system/k3s.service.env
[INFO] systemd: Creating service file /etc/systemd/system/k3s.service
[INFO] systemd: Enabling k3s unit
Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service.
[INFO] systemd: Starting k3s
这么整,那怎么删集群啊…… 刚才测试了下,用正常的命令从新安装集群,感觉是把原来的集群覆盖掉了,然后就可以生成卸载集群的脚本了。
NSTALL_K3S_SKIP_DOWNLOAD=true
官网里写的这个参数是没搞懂是干啥的
- INSTALL_K3S_SYSTEMD_DIR
就是k3s.service
的安装位置
- INSTALL_K3S_EXEC
用于在脚本启动k3s时,传递一些server或agent的参数,大概有以下几种形式,但结果都是一样的,例如启动时禁用flannel
curl ... | INSTALL_K3S_EXEC="--no-flannel" sh -s -
curl ... | INSTALL_K3S_EXEC="server --no-flannel" sh -s -
curl ... | INSTALL_K3S_EXEC="server" sh -s - --no-flannel
curl ... | sh -s - server --no-flannel
curl ... | sh -s - --no-flannel
设置NodeName
# curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--node-name=k3s-1" sh -
# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k3s-1 NotReady master 6s v1.17.3+k3s1
- INSTALL_K3S_NAME
其实就是修改systemd服务的名字,如果未指定参数,默认使用k3s
作为systemd服务的名称,如果指定了,就用k3s-
作为前缀
# curl -sfL https://get.k3s.io | INSTALL_K3S_NAME=ksd sh -
Created symlink /etc/systemd/system/multi-user.target.wants/k3s-ksd.service → /etc/systemd/system/k3s-ksd.service.
- INSTALL_K3S_TYPE
要创建的systemd服务类型,如果未指定,将默认使用K3s exec命令。 没搞懂是干啥的……
通过二进制文件安装
如果是多网卡情况,需要注意。比如我的环境有两个网卡:
- eth0: nat网卡,用于虚拟机访问外网
- eth1: hostonly网卡,用户pc连接虚拟机
如果启动k3s不指定任何参数,使用agent连接时将会报错,大概意思就是使用eth0连接,但我们应该使用eth1去使用集群,所以对应的启动server和agent需要加-advertise-address
# server
k3s server --advertise-address 192.168.99.211
# agent
k3s agent --token xxx --server https://SERVER_IP:6443 --node-ip AGENT_IP
更多的参数选项还是看官网吧
Other
默认的kubectl配置文件位置
/etc/rancher/k3s/k3s.yaml