记录下K3s agent 部署的过程,官网给了简单的Oneclick 的命令,但是实际安装过长中还是遇到了些许的问题。这里就记录一下。

k3s 默认使用 containerd 作为容器运行时, 因为我更熟悉 docker, 所以打算在 k3s 中使用 docker 代替 containerd.

先升级一下系统

apt update
apt upgrade -y

在系统中安装 docker, 直接使用 apt 安装

apt install docker.io

然后安装 k3s 的 master 节点

curl -sfL https://get.k3s.io | sh -s - --docker

安装完成后, 从 master 节点上的 /var/lib/rancher/k3s/server/node-token 获取到 token 值. 然后用 token 值安装 node 节点

这里的Server 是已经配置好的hostname,需要网络是可通状态。

curl -sfL https://get.k3s.io | K3S_URL=https://server:6443 K3S_TOKEN=token sh -s - --docker

给 node 节点添加 role,

kubectl label node k3s-worker node-role.kubernetes.io/worker=worker

计划中 master 和 node 将使用两个网络出口, 给两种服务提供支撑, 所以我们需要给节点打标记来让应用可以正确的部署到对应的节点中。

因为计划把master作为registry,所以这里打上 storage 的标签。

kubectl label nodes k3s-master network=proxy
kubectl label nodes k3s-worker network=direct
kubectl label nodes k3s-master storage=true

正文

需要先在Worker上信任Server证书,命令如下

curl -k https://192.168.3.xxx:6443/cacerts -o /usr/local/share/ca-certificates/k3s.crt
update-ca-certificates

查看Worker

sudo cat /var/lib/rancher/k3s/server/node-token
LOAD_BALANCER_IP=192.168.0.73
TOKEN="K1033..."
sudo curl -sfL https://get.k3s.io | K3S_URL=https://$LOAD_BALANCER_IP:6443 K3S_TOKEN=$TOKEN sh -