需要两台ubuntu虚拟机。 集群中每个节点都需要唯一的主机名,这点请记好。 我的两台配置如下:
| 主机名 | Linux发行版 | ip地址 | 节点信息 |
|---|---|---|---|
| k3s-node1 | ubuntu-22.04LTS | 192.168.10.40 | docker,master,node |
| k3s-node2 | ubuntu-22.04LTS | 192.168.10.41 | docker,node |
安装k3s server
也就是主节点,或者叫master节点,kubernetes在1.25版本默认使用containerd作为CRI,因此掌握一下containerd的使用是很有必要的,这里我们使用docker来作为CRI安装集群。 docker的安装, 使用以下命令
curl -fsSL get.docker.com |sh
在 k3s-node1上,运行以下命令以安装k3s-server
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION=v1.26.1+k3s1 INSTALL_CHANNEL_VERSION=latest sh -s - --docker
实际上,你还需要加上一个token参数,用来帮助agent节点加入server,但这个token值会被记录在/var/lib/rancher/k3s/server/node-token中,所以这个选项不是必须的,如果你想自己配置token,可以加上K3S_TOKEN参数,例如K3S_TOKEN=12345。 只需要稍等片刻,server节点就布置成功了。
将agent节点加入server
现在我们需要把agent节点同样安装k3s并加入到server中。 在agent节点运行以下命令:
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION=v1.26.1+k3s1 INSTALL_CHANNEL_VERSION=latest K3S_URL=https://192.168.10.40:6443 K3S_TOKEN=K103359213688594ace119e90dab2d5dcc95a8f4a504932a0a474cd43f3196dd55f::server:051e00557478475b0a2c1989a70ceca0 sh -s - --docker
其中K3S_URL就是server节点的ip,如果配置了host信息,使用host代替也是可以的。K3S_TOKEN值存储在/var/lib/rancher/k3s/server/agent-token中,完整复制不要省略,如果你在安装的时候指定了K3S_TOKEN,那么使用指定的token值。 稍等片刻,agent就处于可用状态了。 当然,如果你在agent节点,也就是k3s-node2上运行kubectl命令,将会得到以下信息。
这不是因为部署错误,而是由于没有集群密钥,如果你需要在agent节点运行kubectl命令,那么执行以下操作。
mkdir ~/.kube
scp 192.168.10.40:/etc/rancher/k3s/k3s.yaml ~/.kube/config #替换192.168.10.40为server地址
还有最后一步,就是替换~/.kube/config这个文件中的server地址。 !将标红处,server的ip地址修改为正确地址。 这样在agent节点也可以运行kubectl命令了。
至此,含有一个agent节点的k3s集群搭建完成。
安装后步骤
k3s安装完成后,删除这两个pod: 这两个pod已经在安装过程中运行完成。使用以下命令删除:
kubectl delete pod --namespace kube-system helm-install-traefik-crd-kllf2 helm-install-traefik-ckp7x