K8S 平臺升級-基礎篇

閱讀時間約 10 分鐘

今天來記錄版本升級的做法(z版號),Kubernetes的版本更新的很快,所以版本升級是每個管理者所必須要會的必備技能,建議版本升級之前要先去確認升級路徑,不是每個版本號都能一次升級到你需要的版本。

那條路才是我要去的?

那條路才是我要去的?

升級順序是Master => Worker

那就開始吧!


1. 狀態確認

[master]# kubectl get nodes

raw-image

在進行任何Cluste層級的操作之前,務必在狀態正常的情況下才開始執行,不然可能會直接導致任何不可預期的後果。

在確認完狀態之後,接下來就進入升級的實務操作。


2. 升級Control-Plane(1.25.11 -> 1.25.12)

#----------------------------------------------------------
# S2-1. 確認目前版本號
#----------------------------------------------------------
[master01]# kubeadm version -o json
raw-image
#---------------------------------------------------
# S2-2. 使用指令來確認要升級的版本
#---------------------------------------------------
[master01]# kubeadm upgrade plan
raw-image
#-------------------------------------------------
# S2-3. 安裝kubeadm (all master nodes)
#-------------------------------------------------
[master01]# yum list --showduplicates kubeadm --disableexcludes=kubernetes
[master01]# yum install kubeadm-1.25.12-0
raw-image
#--------------------------------------------------
# S2-4. Drain workload
# 排空master: 將節點標記為不可調度並驅逐負載來讓節點進入維護模式,
# 將Pod優雅中止
#--------------------------------------------------
[master01]# kubectl drain <master-node> --ignore-daemonsets

※註:如果有Pod吃到local-storage時會出現錯誤,如果不需要,可以加上"--delete-local-data"
raw-image
raw-image
#-------------------------------------------------
# S2-5. 執行升級
#-------------------------------------------------
[master01]# kubeadm upgrade apply v1.25.12
[master01]# kubeadm version -o json

※ 到其他master node執行
# kubeadm upgrade node​
raw-image
raw-image
#-----------------------------------------------
# S2-6. 升級kubectl與kubelet (all masters)
#-----------------------------------------------
[master01]# yum list --showduplicates kubelet --disableexcludes=kubernetes
[master01]# yum install -y kubelet-1.25.12-0 kubectl-1.25.12-0 --disableexcludeds=kubernetes
[master01]# systemctl daemon-reload; systemctl restart kubelet

※ 全部完成後
[master01]# kubectl get nodes​
raw-image
#-------------------------------------------------
# S2-7. Uncordon workload (all masters)
#-------------------------------------------------
[master01]# kubectl uncordon master01.test.example.poc
[master01]# kubectl uncordon master02.test.example.poc
[master01]# kubectl uncordon master03.test.example.poc

※ Upgrade過程中,kubeadm會將etcd相關備份在節點的以下位置

[master01]# cd /etc/kubernetes/tmp
[master01]# ls -al
raw-image

3. 升級Worker(1.25.11 -> 1.25.12)

#-----------------------------------------------
# S3-1. 更新kubeadm (workers)
#-----------------------------------------------
[worker01]# yum install kubeadm-1.25.12-0
[worker02]# yum install kubeadm-1.25.12-0
#-----------------------------------------------
# S3-2. Drain workload
#-----------------------------------------------
[master01]# kubectl drain <worker-node> --ignore-daemonsets
[master01]# kubectl get nodes
raw-image
#-------------------------------------------------
# S3-3. upgrade nodes (workers)
#-------------------------------------------------
[worker01]# kubeadm upgrade node
raw-image
#----------------------------------------------
# S3-4. 升級kubectl與kubelet (all workers)
#----------------------------------------------
[worker01]# yum list --showduplicates kubelet --disableexcludes=kubernetes
[worker01]# yum install -y kubelet-1.25.12-0 kubectl-1.25.12-0 --disableexcludes=kubernetes
[worker01]# systemctl daemon-reload ; systemctl restart kubelet

※全部完成後
[master01]# kubectl get nodes​
raw-image
#-----------------------------------------------
# S3-5. uncordon workload (all workers)
#-----------------------------------------------
[master01]# kubectl uncordon worker01.test.example.poc
[master01]# kubectl uncordon worker02.test.example.poc
raw-image
#------------------------------------------------
# S3-6. 確認Cluster狀態
#------------------------------------------------​
[master01]# kubectl get --raw='/readyz?verbose'
raw-image
#------------------------------------------------
# S3-7. 確認Pod狀態
#------------------------------------------------​
[master01]# kubectl get po -n kube-system
raw-image

4.結論

以上就完成了小版本號的升級,通常這類型的升級比較可能發生在有Critical的問題需要修正的時候,因為每次升級都可能會影響應用服務,升級前務必要確認影響程度再執行。

至於y版本的升級基本上類似,只要注意升級路徑與影響即可。

最後,做任何升級動作前,一定要做:

備份! 備份! 備份!


備份的部份未來將在其他文章再進行分享,如果不知道要選擇什麼第三方工具時,至少也要做到官方所提到的ETCD備份。


Reference:

15會員
40內容數
記錄IT社畜的自我學習筆記,如同專題名稱,主要是怕自已忘記自已做過什麼、學到什麼。索性就分享我自已在學習Kubernetes這條路上的各種測試、學習心得。
留言0
查看全部
發表第一個留言支持創作者!
超健忘閒人的沙龍 的其他內容
知道如何備份與還原ETCD才能確保當環境出現重大問題時,可以將你的環境回復回來,對於系統管理者來說,等於是救人一命。(認真來說其實也是救了你的主管一命)。
本篇說明在Kubernetes平台上的Job資源類型的類型、實務、應用場景
今天來跟大家分享如何建置容器世界的一個非常重要的元件:Image Registry。
今天簡單演示如何在Kubernetes cluster利用local-path provider建構出storage class來提供應用程式進行資料的存放。
本篇將補完上一篇所提到關於StatefulSet的實作部份。
本篇將說明關於StatefulSet的基本概念
知道如何備份與還原ETCD才能確保當環境出現重大問題時,可以將你的環境回復回來,對於系統管理者來說,等於是救人一命。(認真來說其實也是救了你的主管一命)。
本篇說明在Kubernetes平台上的Job資源類型的類型、實務、應用場景
今天來跟大家分享如何建置容器世界的一個非常重要的元件:Image Registry。
今天簡單演示如何在Kubernetes cluster利用local-path provider建構出storage class來提供應用程式進行資料的存放。
本篇將補完上一篇所提到關於StatefulSet的實作部份。
本篇將說明關於StatefulSet的基本概念
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
👨‍💻簡介 今天早上在下kubectl get pods時,突然跳出了以下錯誤 Unable to connect to the server: x509: certificate has expired or is not yet valid
Thumbnail
Intro👨‍💻 在gcp環境下使用ansible playbook 建立k8s cluster,目前base image為centos 7,安裝方式類似elk stack,一樣先等master安裝完後產生token,接著安裝slave。 使用的CRI為containerd,CNI為calico
Thumbnail
👨‍💻簡介 有時候修改掛載的config檔,無法即時更新,需要重啟pod才會生效,為了解決這個問題,k8s-reloader因此而誕生,透過觀察掛載的configmap或是secret的變化自動對掛載的物件做滾動更新。 以下為在minikube環境下,透過掛載nginx-config檔並搭配re
Thumbnail
之前都介紹docker監控container,這次來點不一樣的,直接裝在k8s裡面去監控pod的一些指標。 基本的指標像是cpu, mem, pod數量, node數量等等,都能透過kube-state-metrics完成,而如果想要監控一些流量的指標,像是tcp連線數,tw數等,則是需要另外在服務
Thumbnail
這篇分享希望能讓你了解 什麼Container、與Kubernetes和Docker是什麼關係,以及Kubernetes中又包含了哪些 組件?
Thumbnail
覺得上一篇網站和廣播節目聽不夠嗎?這篇要再介紹三個好用好聽的K-indie廣播節目讓你的音樂24小時不間斷,除了線上收聽,有的還可以下載或是以Podcast的方式聆聽,即使不會韓文也沒有關係,還有針對台灣聽眾設計的節目!
Thumbnail
<p>日日春成立以來,最常收到的私訊就是「幫忙推薦首爾的Live House」,雖然弘大周邊的Live House近幾年關閉、搬家的消息時有所聞,但是會定期舉辦小型公演的場地大約還是在10間左右。</p>
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
👨‍💻簡介 今天早上在下kubectl get pods時,突然跳出了以下錯誤 Unable to connect to the server: x509: certificate has expired or is not yet valid
Thumbnail
Intro👨‍💻 在gcp環境下使用ansible playbook 建立k8s cluster,目前base image為centos 7,安裝方式類似elk stack,一樣先等master安裝完後產生token,接著安裝slave。 使用的CRI為containerd,CNI為calico
Thumbnail
👨‍💻簡介 有時候修改掛載的config檔,無法即時更新,需要重啟pod才會生效,為了解決這個問題,k8s-reloader因此而誕生,透過觀察掛載的configmap或是secret的變化自動對掛載的物件做滾動更新。 以下為在minikube環境下,透過掛載nginx-config檔並搭配re
Thumbnail
之前都介紹docker監控container,這次來點不一樣的,直接裝在k8s裡面去監控pod的一些指標。 基本的指標像是cpu, mem, pod數量, node數量等等,都能透過kube-state-metrics完成,而如果想要監控一些流量的指標,像是tcp連線數,tw數等,則是需要另外在服務
Thumbnail
這篇分享希望能讓你了解 什麼Container、與Kubernetes和Docker是什麼關係,以及Kubernetes中又包含了哪些 組件?
Thumbnail
覺得上一篇網站和廣播節目聽不夠嗎?這篇要再介紹三個好用好聽的K-indie廣播節目讓你的音樂24小時不間斷,除了線上收聽,有的還可以下載或是以Podcast的方式聆聽,即使不會韓文也沒有關係,還有針對台灣聽眾設計的節目!
Thumbnail
<p>日日春成立以來,最常收到的私訊就是「幫忙推薦首爾的Live House」,雖然弘大周邊的Live House近幾年關閉、搬家的消息時有所聞,但是會定期舉辦小型公演的場地大約還是在10間左右。</p>