目前有幾個(gè)幾年前創(chuàng)建的騰訊云TKE集群,都是1.20.6的版本。
最近看到官方給的維護(hù)周期公告。馬上到截止日期了,就著手準(zhǔn)備升級(jí)到1.26。
剛接手不久的時(shí)候就打算升級(jí)到最新,但是發(fā)現(xiàn)集群里面的服務(wù)太混亂,不敢輕舉妄動(dòng),前前后后經(jīng)過(guò)快兩年時(shí)間的優(yōu)化,目前已經(jīng)具備升級(jí)的條件了。
但是萬(wàn)萬(wàn)沒(méi)想到騰訊云這個(gè)TKE升級(jí)并沒(méi)有那么順利。
從1.20升級(jí)到1.22就踩坑了,提示coredns版本太低。
手動(dòng)去改了版本以后發(fā)現(xiàn)無(wú)法啟動(dòng)。
最后找到官方的文檔(coredns升級(jí)到升級(jí)到1.8.4),才完成第一步coredns的版本升級(jí)。
確認(rèn)coredns沒(méi)問(wèn)題以后,開(kāi)始控制臺(tái)操作升級(jí),在前置檢查的時(shí)候,又開(kāi)始踩坑,又未通過(guò)。
主要問(wèn)題是csi插件使用形式不對(duì)。
這個(gè)問(wèn)題解決方案就是手動(dòng)創(chuàng)建一個(gè)靜態(tài)pvc,然后去替換csi插件deployments里面的volumes內(nèi)容。
創(chuàng)建pv的時(shí)候需要去找到原來(lái)csi插件deployments配置里面的fsid和host。
kubectl describe pods -n kube-system com.tencent.cloud.csi.tcfs.xxx-xxx
然后找到Volumes下面的VolumeAttributes
然后創(chuàng)建pvc,替換fsid和host為上面獲取到的值。
apiVersion: v1 kind: PersistentVolume metadata: name: pv-tcfs-sharecfs-for-inline spec: accessModes: - ReadWriteMany capacity: storage: 10Gi csi: driver: com.tencent.cloud.csi.cfs volumeAttributes: fsid: 35xxxxx host: 172.16.xx.xx path: / volumeHandle: pv-tcfs-sharecfs-for-inline persistentVolumeReclaimPolicy: Retain volumeMode: Filesystem --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-tcfs-sharecfs-for-inline namespace: kube-system spec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi storageClassName: "" volumeMode: Filesystem volumeName: pv-tcfs-sharecfs-for-inline
執(zhí)行創(chuàng)建pvc
更改csi deployments里面的volumes:
可以看到pod已經(jīng)銷毀重新創(chuàng)建
本以為這樣就結(jié)束了,可以正常升級(jí)到1.22了,但是執(zhí)行前置檢查的時(shí)候發(fā)現(xiàn)還未通過(guò)。
發(fā)現(xiàn)replicasets類型還沒(méi)修改。
直接刪除歷史的就行。
開(kāi)始從1.20.6升級(jí)到1.22。
升級(jí)中master節(jié)點(diǎn),耐心等待就行了。
升級(jí)node節(jié)點(diǎn)。
全部已經(jīng)升級(jí)完成,測(cè)試訪問(wèn)無(wú)異常以后,準(zhǔn)備升級(jí)到1.24。
前置檢查也正常通過(guò),只有一些棄用的api提示,這個(gè)也需要注意一下,看下是否需要更新相關(guān)的配置。
master升級(jí)完以后,準(zhǔn)備升級(jí)node節(jié)點(diǎn),提示1.24已經(jīng)不支持docker。
只能重裝系統(tǒng)升級(jí)。
由于這個(gè)是開(kāi)發(fā)環(huán)境,只有一個(gè)節(jié)點(diǎn),沒(méi)辦法只有臨時(shí)加一個(gè)節(jié)點(diǎn)進(jìn)來(lái),加入進(jìn)來(lái)的節(jié)點(diǎn)默認(rèn)就已經(jīng)是1.24版本。
然后直接操作重裝升級(jí)。
1.24升級(jí)到1.26版本的時(shí)候,又提示coredns版本太低。
只能再去手動(dòng)升級(jí)。
coredns升級(jí)以后,控制臺(tái)再操作升級(jí)master和node。
升級(jí)完成以后最后再去驗(yàn)證集群服務(wù)。
我的集群在1.20升級(jí)到1.26以后,出現(xiàn)了ingress相關(guān)路由失效,主要原因就是相關(guān)api已經(jīng)棄用,更改為最新版本的就行。
主要的報(bào)錯(cuò)如下:
E1113 13:01:18.620834 1 reflector.go:153] pkg/mod/k8s.io/client-go@v0.17.3/tools/cache/reflector.go:105: Failed to list *v1beta1.Ingress: the server could not find the requested resource (get ingresses.extensions) E1113 13:01:19.622840 1 reflector.go:153] pkg/mod/k8s.io/client-go@v0.17.3/tools/cache/reflector.go:105: Failed to list *v1beta1.Ingress: the server could not find the requested resource (get ingresses.extensions)