rke進行rancher的升級
kubectl安裝
在主機或者遠程訪問的筆記本上安裝kubectl命令行工具
rancher-cluster.yml(RKE配置文件)
通過RKE創(chuàng)建kubernetes集群,需要預(yù)先設(shè)置rancher-cluster.yml配置文件,通過這個配置文件安裝kubernetes集群,同時可以指定kubernetes的版本。
RKE安裝kubernetes集群后,會在RKE二進制文件相同目錄下生成kube_config_rancher-cluster.yml文件,復制該配置文件到~/.kube/目錄,這個文件在升級集群時會用的到。
查看rke支持的k8s版本
[root@rancher home]# rke config --list-version -all
v1.16.2-rancher1-1
v1.14.8-rancher1-1
v1.15.5-rancher1-2
如果版本太老,是無法安裝新版rancher的,還需要先升級RKE,下載rkev1.3.8版本,對基礎(chǔ)集群的k8s進行升級
./rke_linux-amd64-1.3.8 ?up --config=./rke2019/rancher-cluster.yml
升級之后,可以在基礎(chǔ)集群上看一下版本
kubectl get nodes
NAME ? ? ? ? ? ?STATUS ? ROLES ? ? ? ? ? ? ? ? ? ? ?AGE ? VERSION
192.168.0.204 ? Ready ? ?controlplane,etcd,worker ? 11h ? v1.18.20
升級步驟
在安裝了kubectl命令行工具的電腦上打開終端
切換路徑到RKE二進制文件所在目錄,確認rancher-cluster.yml在同一路徑下
一 升級前的準備工作
1.1 x509證書問題的產(chǎn)生原因
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 證書,參考:https://golang.org/doc/go1.15#commonname 。 如果你的自簽名證書中不包含 SANs,就會出現(xiàn)上面的報錯。要解決這個問題,有兩種方案:
更新 Rancher Server ,添加環(huán)境變量GODEBUG=x509ignoreCN=0
升級業(yè)務(wù)集群Rancher-agnet 通過extraEnv設(shè)置環(huán)境變量GODEBUG=x509ignoreCN=0
方案 1:替換 Rancher HA 證書#
使用一鍵生成 ssl 自簽名證書腳本 重新生成證書,然后參考無需重新搭建集群,輕松替換證書替換 Rancher HA 的證書。方案 2:添加環(huán)境變量 GODEBUG=x509ignoreCN=0#
1.2 x509證書問題的解決
1.2.1 生成集群集群
kubectl set env deployment/rancher ?-n cattle-system GODEBUG="x509ignoreCN=0"
1.2.2 業(yè)務(wù)集群升級
export GODEBUG=x509ignoreCN=0kubectl 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"
二 創(chuàng)建ETCD快照備份
替換<SNAPSHOT.db>為您喜歡的快照名稱(例如upgrade.db),默認位置:/opt/rke/etcd-snapshots/,注意需要修改這個目錄下的文件權(quán)限,否則vonechain用戶無權(quán)訪問它,可以返回root賬號,進行以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獲取每個etcd節(jié)點上的運行快照,保存快照文件當前到etcd節(jié)點的/opt/rke/etcd-snapshots目錄下.
三 升級RKE對應(yīng)的k8s
如果原來是rancherv2.3.3,對應(yīng)的rke版本比較低,只能先升級到k8s v1.18.20-rancher1-3;再高的版本,其它業(yè)務(wù)集群的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
四 Rancher基礎(chǔ)集群升級
輸入以下命令進行升級,注意升級的代碼根據(jù)版本的不同,可以有所不同:
# 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
替換<VERSION_TAG>為想要升級到的版本,可用的鏡像版本可查閱DockerHub。
說明:set image用來更新鏡像,上面的代碼更新Deployment類型下面的rancher部署項目,容器是rancher,更新一個新的鏡像rancher/rancher:v2.6.3 。
五 業(yè)務(wù)集群的升級【可以不升級】
/etc/kubernetes/ssl/kubecfg-kube-node.yaml這個是rancher為當前節(jié)點生產(chǎn)的k8s集群文件
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
升級之后,業(yè)務(wù)集群會自動下載對應(yīng)的rancher鏡像,等待高版本鏡像啟動即可
六 業(yè)務(wù)集群的k8s版本升級
之前是1.17,現(xiàn)在想升級到1.20,1.17在儀表盤里沒有顯示cpu和內(nèi)存的使用情況,升級到1.20之后,在儀表表里,就可以看到實時的CPU和內(nèi)存使用情況了,這個還是挺必要的。
升級方法

升級后可查看cpu和內(nèi)存
