单机单点 Rke2 Single 升级到 高可用 Rke2 HA

第一台:192.168.10.5,weifor5
第二台:192.168.10.6,weifor6
第三台:192.168.10.7,weifor7

第一步,单点安装在 192.168.10.5(weifor5):
指定版本:
curl -sfL http://rancher-mirror.rancher.cn/rke2/install.sh | INSTALL_RKE2_MIRROR=cn INSTALL_RKE2_VERSION=v1.22.7+rke2r2 sh -

开机自启动,并手动启动kre2服务(第一次启动需要下载镜像等文件,需要一定时间):
systemctl enable rke2-server.service && systemctl start rke2-server.service

查看启动日志(另外开一个对话框)
journalctl -u rke2-server -f

安装完成可以查看到:
kubectl get nodes
NAME STATUS ROLES AGE VERSION
weifor5 Ready control-plane,etcd,master 3d1h v1.22.7+rke2r2

第二步,升级到高可用
第一台 192.168.10.5,weifor5
即上述单点Rke2的服务器,先增加配置文件config.yaml:
vim /etc/rancher/rke2/config.yaml
token: K10a2347d16c12b05dad3ea90b007eb11d5c3191062c29271eee1afb344ba887c86::server:fecc0a409fd6023ba52ae28c6266eaaa
tls-san: tmp.weifor.com

然后重启Rke2服务:
systemctl restart rke2-server.service

查看启动日志(确保等到Rke2服务已经启动完成)
journalctl -u rke2-server -f

第二台:
mkdir -p /etc/rancher/rke2
vim /etc/rancher/rke2/config.yaml
server: https://192.168.10.5:9345
token: K10a2347d16c12b05dad3ea90b007eb11d5c3191062c29271eee1afb344ba887c86::server:fecc0a409fd6023ba52ae28c6266eaaa
tls-san: tmp.weifor.com

然后重启Rke2服务:
systemctl restart rke2-server.service

查看启动日志(确保等到Rke2服务已经启动完成)
journalctl -u rke2-server -f

在第一台查看Server加入情况:
kubectl get nodes
NAME STATUS ROLES AGE VERSION
weifor5 Ready control-plane,etcd,master 3d1h v1.22.7+rke2r2
weifor6 NotReady 4s v1.22.7+rke2r2

几分钟后:
kubectl get nodes
NAME STATUS ROLES AGE VERSION
weifor5 Ready control-plane,etcd,master 3d1h v1.22.7+rke2r2
weifor6 Ready control-plane,etcd,master 2m4s v1.22.7+rke2r2

第三台:
mkdir -p /etc/rancher/rke2
vim /etc/rancher/rke2/config.yaml
server: https://192.168.10.5:9345
token: K10a2347d16c12b05dad3ea90b007eb11d5c3191062c29271eee1afb344ba887c86::server:fecc0a409fd6023ba52ae28c6266eaaa
tls-san: tmp.weifor.com

然后重启Rke2服务:
systemctl restart rke2-server.service

查看启动日志(确保等到Rke2服务已经启动完成)
journalctl -u rke2-server -f

在第一台查看Server加入情况:
kubectl get nodes
NAME STATUS ROLES AGE VERSION
weifor5 Ready control-plane,etcd,master 3d1h v1.22.7+rke2r2
weifor6 Ready control-plane,etcd,master 5m42s v1.22.7+rke2r2
weifor7 NotReady 3s v1.22.7+rke2r2

几分钟后:
kubectl get nodes
NAME STATUS ROLES AGE VERSION
weifor5 Ready control-plane,etcd,master 3d1h v1.22.7+rke2r2
weifor6 Ready control-plane,etcd,master 13m v1.22.7+rke2r2
weifor7 Ready control-plane,etcd,master 8m v1.22.7+rke2r2

最后,没有最后了。。。。。。。已经完成了!

3 个赞

太赞了,广为传播!

其中,config.yaml 里的 token 值,可以通过在第一台单机单点服务器weifor5,通过以下文件查看到:

# cat /var/lib/rancher/rke2/server/token
# K10a2347d16c12b05dad3ea90b007eb11d5c3191062c29271eee1afb344ba887c86::server:fecc0a409fd602

请问如果192.168.10.5服务器关机了,rke2不就连不上了吗?

你是指谁连接 192.168.10.5 ?

192.168.10.5关机,192.168.10.6192.168.10.7就无法连接上192.168.10.5:9345了,这样不是单点故障

192.168.10.5 关机,已经启动另外两台 RKE2 节点就不会连接 192.168.10.5了。而且,内置的 ETCD 是高可用的,也不会影响 ETCD 集群,其他K8s组件也都是高可用 的。

如果你发生了上面的情况,你可以新建一个话题,然后我看看能不能按照重现步骤去重现这个问题。