騰訊云TKE kubernetes1.20升級(jí)1.26踩坑記

2024年11月13日23:25:24 發(fā)表評(píng)論 1,164 ℃

目前有幾個(gè)幾年前創(chuàng)建的騰訊云TKE集群,都是1.20.6的版本。

最近看到官方給的維護(hù)周期公告。馬上到截止日期了,就著手準(zhǔn)備升級(jí)到1.26。

騰訊云TKE kubernetes1.20升級(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版本太低。

騰訊云TKE kubernetes1.20升級(jí)1.26踩坑記

手動(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ò)。

騰訊云TKE kubernetes1.20升級(jí)1.26踩坑記

主要問(wèn)題是csi插件使用形式不對(duì)。

騰訊云TKE kubernetes1.20升級(jí)1.26踩坑記

這個(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

騰訊云TKE kubernetes1.20升級(jí)1.26踩坑記

然后創(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

騰訊云TKE kubernetes1.20升級(jí)1.26踩坑記

更改csi deployments里面的volumes:

騰訊云TKE kubernetes1.20升級(jí)1.26踩坑記

可以看到pod已經(jīng)銷毀重新創(chuàng)建

騰訊云TKE kubernetes1.20升級(jí)1.26踩坑記

本以為這樣就結(jié)束了,可以正常升級(jí)到1.22了,但是執(zhí)行前置檢查的時(shí)候發(fā)現(xiàn)還未通過(guò)。

騰訊云TKE kubernetes1.20升級(jí)1.26踩坑記

發(fā)現(xiàn)replicasets類型還沒(méi)修改。

騰訊云TKE kubernetes1.20升級(jí)1.26踩坑記

直接刪除歷史的就行。

騰訊云TKE kubernetes1.20升級(jí)1.26踩坑記

開(kāi)始從1.20.6升級(jí)到1.22。

騰訊云TKE kubernetes1.20升級(jí)1.26踩坑記

升級(jí)中master節(jié)點(diǎn),耐心等待就行了。

騰訊云TKE kubernetes1.20升級(jí)1.26踩坑記

升級(jí)node節(jié)點(diǎn)。

騰訊云TKE kubernetes1.20升級(jí)1.26踩坑記

全部已經(jīng)升級(jí)完成,測(cè)試訪問(wèn)無(wú)異常以后,準(zhǔn)備升級(jí)到1.24。

騰訊云TKE kubernetes1.20升級(jí)1.26踩坑記

前置檢查也正常通過(guò),只有一些棄用的api提示,這個(gè)也需要注意一下,看下是否需要更新相關(guān)的配置。

騰訊云TKE kubernetes1.20升級(jí)1.26踩坑記

master升級(jí)完以后,準(zhǔn)備升級(jí)node節(jié)點(diǎn),提示1.24已經(jīng)不支持docker。

騰訊云TKE kubernetes1.20升級(jí)1.26踩坑記

只能重裝系統(tǒng)升級(jí)。

騰訊云TKE kubernetes1.20升級(jí)1.26踩坑記

由于這個(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版本。

騰訊云TKE kubernetes1.20升級(jí)1.26踩坑記

然后直接操作重裝升級(jí)。

1.24升級(jí)到1.26版本的時(shí)候,又提示coredns版本太低。

騰訊云TKE kubernetes1.20升級(jí)1.26踩坑記

只能再去手動(dòng)升級(jí)。

騰訊云TKE kubernetes1.20升級(jí)1.26踩坑記

coredns升級(jí)以后,控制臺(tái)再操作升級(jí)master和node。

升級(jí)完成以后最后再去驗(yàn)證集群服務(wù)。

騰訊云TKE kubernetes1.20升級(jí)1.26踩坑記

我的集群在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)

【騰訊云】云服務(wù)器、云數(shù)據(jù)庫(kù)、COS、CDN、短信等云產(chǎn)品特惠熱賣中

發(fā)表評(píng)論

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: