K3s常用配置

K3s常用配置

Posted by Ksd on March 14, 2020

参考: K3S官网 K3S中文官网

快速开始

  • 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