iT邦幫忙

2022 iThome 鐵人賽

DAY 15
1
DevOps

30天準備CKA考試系列 第 15

Day 15:Cluster Upgrade

  • 分享至 

  • xImage
  •  

Kubernetes的更新週期是三個月,也就是每三個月會推出新版本。記得當初我第一次開始用Kubernetes的時候,版本是v1.16.2,而到今日已經是v1.25.2了。

每個版本都有它的支援週期,像是此時AWS的EKS已不再支援v1.20以前的版本了。所以集群的更新在大部分的情況都是非常重要的,除非刻意保留在某個版本,接下來我們來看看集群要如何更新~

手動排除Node上的Pods

當集群上的Node變成NotReady,系統預設會在5分鐘後才會開始將這個Node上的Pod,在剩下Ready狀態的Node上重建。那為了直接跳過這個過程,我們可以使用drain。

# 將這個Node上的所有Pod驅逐,並且把這個Node變成Unschedulable
kubectl drain node1

# 讓這個Node變成Unschedulable
kubectl cordon node1

# 解除cordon,讓Node變成Schedulable
kubectl uncordon node1
  • drain無法驅逐使用Controller以外方式部署的Pod,所謂Controller就是指Deployment、ReplicaSet之類部署Pod的方式。而這點是指無法驅逐YAML的type為Pod、DaemonSet等Object。
  • cordon和drain的差別是後者會把這個Node上的Pod,驅逐到其他的Node上。
  • uncordon雖然會讓Node變Schedulable,但是已經被驅離的Pod也不會直接回來,必須等到要建立新的Pod時才會有可能回到這個Node。

Kubernetes Release

Kubernetes的版本v1.25.2可以分為三個部分:1、25、2,我們分別稱為Major、Minor、Patch。

  • Major:主要版本。
  • Minor:次要,代表特點和功能上的更新。
  • Patch:補丁,代表修復Bug。

而Kubernetes的各個元件,如:kube-apiserver、Controller-manager等,彼此的版本都有相依性,也就是版本不能相差太多。

但目前無論是on Premise或是Cloud,除非是自己下載各個元件並組成集群,不然這些都是透過如kubeadm等工具來自動化完成。而CKA考試是考使用kubeadm來更新,所以我們不會討論它們彼此的相依性。

Upgrade Strategy

更新集群主要有三種策略,三者的共通點是必須先更新Master Node:

  • Strategy-1:一次同時更新全部的Worker Node。
  • Strategy-2:一次更新一個Worker Node,更新成功後再更新下一個Worker Node,直到全部Worker Node更新完成。
  • Strategy-3:一次加入一個新版本的Worker Node,加入後再剔除一個舊版本的Worker Node,直到全部Worker Node更新完成。

3和2的主要差別是加入新的Node來取代舊的Node,3是EKS目前的更新方式。

Upgrade kubeadm Cluster

更新Kubernetes集群不支援跨Minor版本,也就是不能從1.23直接升到1.25,必須先從1.23升1.24,再升到1.25。

接下來我們來討論更新集群的步驟:

  • 第一步:檢查可以更新到哪個版本,輸入下面的指令kubeadm會告訴你目前可以升級到什麼版本。

    kubeadm upgrade plan
    
  • 第二步:先將kubeadm更新到我們目標的版本,每種OS的更新方式都不同,可以參考升级 kubeadm 集群

  • 第三步:更新Cluster,後面的版本是在第一步得知和第二步所指定的版本。

    kubeadm upgrade apply v1.25.x
    
  • 第四步:如果現在我們使用kubectl get node去檢查目前Node的版本,會發現還是舊的版本,所以我們要幫這個Node的kubelet更新,而更新方法類似於第二步,也是需要根據OS版本來應對。

  • 第五步:重啟kubelet,使其更新生效。

    systemctl daemon-reload
    systemctl restart kubelet
    
  • 第六步:檢查是否更新成功,若是成功,再依據更新的策略來更新其他Node。

這些更新的過程可以搭配一開始提到的drain和cordon來避免服務中斷,明天我們會來討論ETCD的備份與還原~

參考資料

升级 kubeadm 集群

Certified Kubernetes Administrator (CKA) with Practice Tests


上一篇
Day 14:ConfigMap & Secret
下一篇
Day 16:ETCD與集群的備份與還原
系列文
30天準備CKA考試30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言