rancher~rancherv2.3.3升級到(dao)rancherv2.6.3
kubectl安裝
在主機(ji)或者遠程訪(fang)問的筆記(ji)本上安裝(zhuang)kubectl命令行(xing)工具
rancher-cluster.yml(RKE配置文件)
通過RKE創建kubernetes集群,需(xu)要(yao)預(yu)先設置rancher-cluster.yml配置文(wen)件,通過這個配置文(wen)件安(an)裝(zhuang)kubernetes集群,同時可以指定kubernetes的版本。
RKE安裝kubernetes集群后,會(hui)在RKE二進(jin)制文(wen)件(jian)相(xiang)同目(mu)錄下(xia)生(sheng)成(cheng)kube_config_rancher-cluster.yml文(wen)件(jian),復制該配置文(wen)件(jian)到(dao)~/.kube/目(mu)錄,這個文(wen)件(jian)在升級集群時(shi)會(hui)用的到(dao)。
升級步驟
-
在安裝了(le)kubectl命令(ling)行工具的(de)電腦上打開終(zhong)端
-
切(qie)換路徑到(dao)RKE二進制文件所在(zai)目錄,確認(ren)rancher-cluster.yml在(zai)同一路徑下
一 升級前的準備工作
1.1 x509證書問題的產生原因
- x509: certificate relies on legacy Common Name field, use SANs or temporarily enable Common Name matching with GODEBUG=x509ignoreCN=0"
這是因為 Rancher 把 v2.5.10 以上,或 2.6.x 之后將 go 版本從 1.14 提升到了 1.16。而且,go 1.15 版本開始廢棄 CommonName,推薦使用 SAN 證書,參考: 。 如果你的自簽名證書中不包含 SANs,就會出現上面的報錯。 - 要解決這個問題,有兩種方案:
- 方案 1:替換 Rancher HA 證書#
使用一鍵生成 ssl 自簽名證書腳本 重新生成證書,然后參考無需重新搭建集群,輕松替換證書替換 Rancher HA 的證書。 - 方案 2:添加環境變量 GODEBUG=x509ignoreCN=0#
- 更新 Rancher Server ,添加環境變量GODEBUG=x509ignoreCN=0
- 升級業務集群Rancher-agnet 通過extraEnv設置環境變量GODEBUG=x509ignoreCN=0
- 方案 1:替換 Rancher HA 證書#
1.2 x509證書問題的解決
1.2.1 生成集群集群
kubectl set env deployment/rancher -n cattle-system GODEBUG="x509ignoreCN=0"
1.2.2 業務集群升級
export GODEBUG=x509ignoreCN=0
kubectl set env deployment/cattle-cluster-agent -n cattle-system GODEBUG="x509ignoreCN=0"
kubectl set env daemonset/cattle-node-agent -n cattle-system GODEBUG="x509ignoreCN=0"
二 創建ETCD快照備份
替換<SNAPSHOT.db>為您喜歡的快照(zhao)名(ming)稱(例如upgrade.db),默認位置:/opt/rke/etcd-snapshots/,注意需要修改這(zhe)個目錄(lu)下的文件權(quan)限,否(fou)則vonechain用戶無權(quan)訪問它,可以返回root賬(zhang)號,進(jin)行以chown vonechain:root /opt/rke/etcd-snapshots
# Linux
rke etcd snapshot-save --name 20220310.bak --config rancher-cluster.yml
# 恢復
rke etcd snapshot-restore --name 20220222.bak --config rancher-cluster.yml
# restore: 指定用于恢復的快照文件
# -data-dir:恢復到哪個目錄
RKE獲取每(mei)個(ge)etcd節點上的運行快照,保(bao)存快照文件當前到etcd節點的/opt/rke/etcd-snapshots目(mu)錄下.
三 升級RKE對應的k8s
如果原來是rancherv2.3.3,對應的rke版本比較低,只能先升級到k8s v1.18.20-rancher1-3;再高的版本,其它業務集群的k8s無法平滑過渡
rancher-cluster.yml文件下如
nodes:
- address: 192.168.0.204
internal_address: 192.168.0.204
user: vonechain
role: [controlplane,worker,etcd]
kubernetes_version: "v1.18.20-rancher1-3"
services:
etcd:
snapshot: true
creation: 6h
retention: 24h
下(xia)載rkev1.2.8版本,對基礎集群(qun)的k8s進行(xing)升級
./rke_linux-amd64-1.3.8 up --config=./rke2019/rancher-cluster.yml
升級之(zhi)后,可以在基礎集群上看一下版本
kubectl get nodes
NAME STATUS ROLES AGE VERSION
192.168.0.204 Ready controlplane,etcd,worker 11h v1.18.20
四 Rancher基礎集群升級
輸入以下命令進行升級(ji),注意升級(ji)的(de)代(dai)碼根據版(ban)本的(de)不同(tong),可以有(you)所不同(tong):
# rancher v2.5.8的升級到2.6.3如下
kubectl --kubeconfig=kube_config_rancher-cluster.yml set image deployment/rancher rancher=rancher/rancher:v2.6.3 -n cattle-system
替(ti)換<VERSION_TAG>為(wei)想要升(sheng)級到的(de)版本(ben),可用的(de)鏡像版本(ben)可查閱(yue)。
說明(ming):set image用(yong)來(lai)更(geng)新(xin)鏡像(xiang),上面的(de)代碼(ma)更(geng)新(xin)Deployment類(lei)型下(xia)面的(de)rancher部署項目,容器是rancher,更(geng)新(xin)一個新(xin)的(de)鏡像(xiang)rancher/rancher:v2.6.3 。
五 業務集群的升級【可以不升級】
/etc/kubernetes/ssl/kubecfg-kube-node.yaml這(zhe)個是rancher為當前節點生(sheng)產的k8s集群文(wen)件(jian)
kubectl set image deployment/cattle-cluster-agent cluster-register=rancher/rancher-agent:v2.6.3 -n cattle-system
kubectl set image DaemonSet/cattle-node-agent agent=rancher/rancher-agent:v2.6.3 -n cattle-system
升級之后,業務集群會自動下載對應的rancher鏡像,等待高版本鏡像啟動即可
