K8S 平臺升級-基礎篇

更新於 2024/11/08閱讀時間約 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:

avatar-img
15會員
40內容數
記錄IT社畜的自我學習筆記,如同專題名稱,主要是怕自已忘記自已做過什麼、學到什麼。索性就分享我自已在學習Kubernetes這條路上的各種測試、學習心得。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
超健忘閒人的沙龍 的其他內容
知道如何備份與還原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
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
可能包含敏感內容
自從發生第一次親密關係後,大學生沒事都在打砲,完全沉淪在性愛中,在學校有空檔就跑去社團教室內的儲藏室,為了爭取時間,包包內都隨身攜帶潤滑液抹了小穴,沒有前戲就強力貫穿豬豬的小穴,豬豬也很喜歡簡單直接又粗暴,兩人當初也沒想要確認關係,就覺得身體很契合,碰面都只想活塞運動,後面同進同出太過頻繁,班上同學
Thumbnail
上一篇說明了如何在Kubernetes上建立基本的MySQL standalone,並加入phpmyadmin(PMA)來進行圖形化的管理,本篇就再進階一步,實作MySQL replication架構(master-salve),並進行驗證是否成功。
Thumbnail
本文將探討Kubernetes內部DNS解析的相關流程,並介紹如何利用DNS來找到服務。透過瞭解DNS的工作原理,可以讓應用服務的問題處理更有效率,並提供基本測試與結論。
Thumbnail
今天來分享在建置完K8S後的基本工作之一 : 監控。 只要是任何會”運作”的物件(Object),不管平台、服務、軟體、硬體,為了要提供最高的可用性,就會需要透過大大小小的監控元件來幫助我們了解所有的狀態,以便在問題發生時能做到最快速的反應。
Thumbnail
今天跟大家分享在地端資料中心內建立Kubernetes叢集之後,如何針對網路進行更進一步的優化。除了CNI(容器網路接口)的設定,實務上我還會再另行建立Loadbalancer的機制。
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
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
可能包含敏感內容
自從發生第一次親密關係後,大學生沒事都在打砲,完全沉淪在性愛中,在學校有空檔就跑去社團教室內的儲藏室,為了爭取時間,包包內都隨身攜帶潤滑液抹了小穴,沒有前戲就強力貫穿豬豬的小穴,豬豬也很喜歡簡單直接又粗暴,兩人當初也沒想要確認關係,就覺得身體很契合,碰面都只想活塞運動,後面同進同出太過頻繁,班上同學
Thumbnail
上一篇說明了如何在Kubernetes上建立基本的MySQL standalone,並加入phpmyadmin(PMA)來進行圖形化的管理,本篇就再進階一步,實作MySQL replication架構(master-salve),並進行驗證是否成功。
Thumbnail
本文將探討Kubernetes內部DNS解析的相關流程,並介紹如何利用DNS來找到服務。透過瞭解DNS的工作原理,可以讓應用服務的問題處理更有效率,並提供基本測試與結論。
Thumbnail
今天來分享在建置完K8S後的基本工作之一 : 監控。 只要是任何會”運作”的物件(Object),不管平台、服務、軟體、硬體,為了要提供最高的可用性,就會需要透過大大小小的監控元件來幫助我們了解所有的狀態,以便在問題發生時能做到最快速的反應。
Thumbnail
今天跟大家分享在地端資料中心內建立Kubernetes叢集之後,如何針對網路進行更進一步的優化。除了CNI(容器網路接口)的設定,實務上我還會再另行建立Loadbalancer的機制。
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中又包含了哪些 組件?