之前有写过一篇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的管理了
其他配置参考我的另一篇文章:
Comments | NOTHING