前言
在日常對 Kubernetes 集群運行維護的過程中,您可能需要臨時的關閉或者是重啟 Kubernetes 集群對集群進行維護,本文將介紹如何去安全的關閉 K8s 集群以及如何重新啟動集群。
日常節點運維方式
關閉 K8s 集群是個危險的操作!在關閉集群之前,您必須完全了解這個操作所帶來的后果。首先,我們要對集群內的應用、客戶定義資源 CRD 和 Etcd 進行備份,然后再進行重啟或關閉集群的操作。在通常運維的情況下,建議您驅逐維護節點,而非重啟整個集群。在這里,我們也把驅逐維護節點命令放在下面供您參考。
首先,確定想要移出的節點的名稱??梢杂靡韵旅盍谐黾褐械乃泄濣c:
$kubectlgetnodes
接下來,告訴 Kubernetes 需要移出的節點:
$kubectldrain
一旦它返回(沒有報錯), 你就可以下線此節點(或者等價地在云平臺上,刪除支持該節點的虛擬機)。如果要在維護操作期間將節點留在集群中,則需要運行:
kubectluncordon
然后告訴 Kubernetes,它可以繼續在此節點上調度新的 Pods。
在進行集群關閉前的準備工作
備份是最最重要的準備工作,保障應用可以重新正常服務為目的各種操作都是必須的。做一個你自己的計劃清單,在重要的步驟之前確認好。
主機之間已經設置 SSH 免密登錄
集群內應用的備份
集群內客戶自定義資源的備份
集群內 Etcd 的備份
關閉 Kubernetes 集群
再次提示在關閉集群前,請您務按照我們推薦的方法備份集群的數據與應用,以便在重新啟動集群時如果遇到任何問題,可以通過備份還原集群與應用。使用本教程中的方法可以平穩關閉集群,但數據損壞的可能性仍然存在。
首先,我們要獲取節點列表
k8snodes=$(kubectlgetnodes-oname)
然后,我們就要關閉節點了,您可以可一臺一臺的關閉。或運行以下腳本關閉節點:
fornodein${k8snodes[@]} do echo"====Shutdown$node====" ssh$nodesudoshutdown-h1 done
注意: 前提條件是主機之間已經設置 SSH 免密登錄。
此時,您就可以關閉其他的集群依賴項,對集群進行維護操作啦。
Kubernetes 集群重啟
在重啟后,我們需要仔細檢查所有節點和核心組件的狀態,并確保一切就緒。
$kubectlgetnodes-owide NAMESTATUSROLESAGEVERSIONINTERNAL-IPEXTERNAL-IPOS-IMAGEKERNEL-VERSIONCONTAINER-RUNTIME mars-k8s1Readycontrol-plane,master17dv1.21.0172.16.60.60Ubuntu20.04.1LTS5.11.0-40-genericdocker://20.10.10 mars-k8s2Ready 17dv1.21.0172.16.60.61 Ubuntu20.04.1LTS5.11.0-40-genericdocker://20.10.10 mars-k8s3Ready 17dv1.21.0172.16.60.62 Ubuntu20.04.1LTS5.11.0-40-genericdocker://20.10.10 $kubectlgetsvc-nkube-system NAMETYPECLUSTER-IPEXTERNAL-IPPORT(S)AGE kube-dnsClusterIP10.96.0.10 53/UDP,53/TCP,9153/TCP17d metrics-serverClusterIP10.111.227.248 443/TCP17d $kubectlgetpod-nkube-system NAMEREADYSTATUSRESTARTSAGE coredns-558bd4d5db-h7jqc1/1Running217d coredns-558bd4d5db-wj4bn1/1Running217d etcd-mars-k8s11/1Running217d kube-apiserver-mars-k8s11/1Running317d kube-controller-manager-mars-k8s11/1Running217d kube-flannel-ds-677dg1/1Running217d kube-flannel-ds-bxhx61/1Running317d kube-flannel-ds-r5pqf1/1Running217d kube-proxy-6w52h1/1Running217d kube-proxy-p8zfp1/1Running217d kube-proxy-v8t7j1/1Running217d kube-scheduler-mars-k8s11/1Running217d metrics-server-5f9459b95c-dtzbf1/1Running217d
Kubernetes 集群重啟維護避坑指南
說點兒心里話,運維有時要看運氣,這不是開玩笑,在我的職業生涯中看到了也學到了很多,在過去我有幸支持了多個國家的數據災備業務。包括:韓國,日本,中港臺,及東南亞各個 Region 的客戶公司,在運維做 IT 架構變更的時候,買燒豬祭奠關二爺有時真的需要,我們不了解的事情還有很多,要保持敬畏。所以備份吧,多備份幾次!??!
在我們這個時代人定勝天的神跡比比皆是。但是所謂割接,割下來,接不上的情況也屢見不鮮。通常情況下,重新啟動 Kubernetes 集群后就可以繼續正常使用,但是由于意外情況,該集群可能不可用。例如:
關閉集群過程中 Etcd 數據損壞或是節點故障,這在 Bare Metal K8s Node 上很常見。
網絡錯誤,這就需要檢查所有集群依賴項的狀態,一定用好監控工具,一步一步的查,別怕麻煩,要確保所有集群依賴項均已就緒。
應用的問題,節點是啟動了,K8s 也好好的,應用不能對外提供服務,這時一系列的排錯是最考驗人的,所以備份恢復吧。這樣可以確保 RTO。
審核編輯:湯梓紅
-
集群
+關注
關注
0文章
82瀏覽量
17134 -
kubernetes
+關注
關注
0文章
222瀏覽量
8655
原文標題:Kubernetes 集群的關閉與重啟
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論