高可用k3s和Rancher管理

发布于 2022-01-17  4630 次阅读


之前有写过一篇k3s的搭建文章,但是那个只有一个master节点,只要这个master挂了,虽然节点的服务还在,但是整个集群的管理就废了。遂又花了些时间搭建了一个高可用的k3s集群

1、思路

使用两台服务器,搭建一个只有两个master的集群,这样就算一个挂了,还有另外可以用。虽然不是完全的高可用,但是这个会了,多个就没问题了。

因为我的服务器在不同的云厂商,所以所有的节点都需要配置公网ip,具体怎么配置,下面的步骤中讲。

2、实操

2.1、安装master1节点

${DATASTORE} 替换为数据库链接字符串,比如:mysql://USERNAME:PASSWORD@tcp(IP_ADDRESS:3306)/K3S

大写的需要替换为自己的用户名,密码,IP地址,数据库名称。如果没有创建数据库,会自动创建。

正真高可用:数据库也需要实现高可用。

${IP} 替换为当前节点的公网ip,为了能被其他节点发现和访问。

curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION=v1.19.13+k3s1 sh -s - server \
  --datastore-endpoint="${DATASTORE}" \
  --kube-apiserver-arg advertise-address=${IP} --kube-apiserver-arg external-hostname=${IP} --tls-san=${IP}

2.2、安装master2节点

查看master节点的token,用于master2节点加入master1节点。

cat /var/lib/rancher/k3s/server/node-token

${TOKEN} 替换为上面这个命令获取到的token值,其他依旧



curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION=v1.19.13+k3s1 sh -s - server \
  --datastore-endpoint="${DATASTORE}" \
  --kube-apiserver-arg advertise-address=${IP} --kube-apiserver-arg external-hostname=${IP} --tls-san=${IP} \
  --token=${TOKEN}

这样master2节点就能加入到master1节点,并且master2节点的token会变得和master1节点一样,这样worker节点,只需要用这个token加入到集群就是两个master节点的子节点了。

2.3、配置外网访问

${NODE_NAME} 为 kubectl get nodes 获取到的节点name

${IP} 为节点自己的公网ip

这里有两个节点,所以下面的语句应该执行两条,我这里写一条是说明。

kubectl annotate nodes ${NODE_NAME} flannel.alpha.coreos.com/public-ip-overwrite=${IP}

3、Docker安装Rancher

如果出现404 not page页面,请修改端口即可

docker run -d --privileged --restart=unless-stopped \
    -p 80:80 -p 443:443 \
    -v /docker/rancher:/var/lib/rancher \
    rancher/rancher:latest

4、可视化导入集群

直接在可视化界面点击导入集群,设置名称后会生成一串连接代码,直接到服务器中运行就可以加入Rancher的管理了

其他配置参考我的另一篇文章:


欢迎欢迎~热烈欢迎~