新聞中心
在開始之前
- 務必仔細認真閱讀發(fā)行說明。
- 集群應使用靜態(tài)的控制平面和 etcd Pod 或者外部 etcd。
- 務必備份所有重要組件,例如存儲在數(shù)據(jù)庫中應用層面的狀態(tài)。 ?
kubeadm upgrade? 不會影響你的工作負載,只會涉及 Kubernetes 內(nèi)部的組件,但備份終究是好的。 - 必須禁用交換分區(qū)。
附加信息
- 下述說明了在升級過程中何時騰空每個節(jié)點。如果你正在對任何 kubelet 進行小版本升級, 你需要先騰空待升級的節(jié)點(或多個節(jié)點)。對于控制面節(jié)點,其上可能運行著 CoreDNS Pods 或者其它非常重要的負載。
- 升級后,因為容器規(guī)約的哈希值已更改,所有容器都會被重新啟動。
- 要驗證 kubelet 服務在升級后是否成功重啟,可以執(zhí)行 ?
systemctl status kubelet? 或 ?journalctl -xeu kubelet? 查看服務日志。 - 不建議使用 ?
kubeadm upgrade? 的 `--config 參數(shù)和 kubeadm 配置 API 類型 來重新配置集群,這樣會產(chǎn)生意想不到的結(jié)果。
確定要升級到哪個版本
使用操作系統(tǒng)的包管理器找到最新的補丁版本 Kubernetes 1.24:

成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都做網(wǎng)站、成都網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的邊壩網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!
- Ubuntu、Debian 或 HypriotOS
apt update
apt-cache madison kubeadm
# 在列表中查找最新的 1.24 版本
# 它看起來應該是 1.24.x-00,其中 x 是最新的補丁版本yum list --showduplicates kubeadm --disableexcludes=kubernetes
# 在列表中查找最新的 1.24 版本
# 它看起來應該是 1.24.x-0,其中 x 是最新的補丁版本
升級控制平面節(jié)點
控制面節(jié)點上的升級過程應該每次處理一個節(jié)點。 首先選擇一個要先行升級的控制面節(jié)點。該節(jié)點上必須擁有 ?/etc/kubernetes/admin.conf? 文件。
執(zhí)行 "kubeadm upgrade"
升級第一個控制面節(jié)點
- 升級 kubeadm:
- Ubuntu、Debian 或 HypriotOS
- CentOS、RHEL 或 Fedora
- 驗證下載操作正常,并且 kubeadm 版本正確:
- 驗證升級計劃:
- 手動升級你的 CNI 驅(qū)動插件。
# 用最新的補丁版本號替換 1.24.x-00 中的 x
apt-mark unhold kubeadm && \
apt-get update && apt-get install -y kubeadm=1.24.x-00 && \
apt-mark hold kubeadm
-# 用最新的補丁版本號替換 1.24.x-0 中的 x
yum install -y kubeadm-1.24.x-0 --disableexcludes=kubernetes
kubeadm version
kubeadm upgrade plan
此命令檢查你的集群是否可被升級,并取回你要升級的目標版本。 命令也會顯示一個包含組件配置版本狀態(tài)的表格。
Note:
?
kubeadm upgrade? 也會自動對 kubeadm 在節(jié)點上所管理的證書執(zhí)行續(xù)約操作。 如果需要略過證書續(xù)約操作,可以使用標志 ?
--certificate-renewal=false?。
Note:
如果 ?
kubeadm upgrade plan? 給出任何需要手動升級的組件配置,用戶必須 通過 ?
--config? 命令行標志向 ?
kubeadm upgrade apply? 命令提供替代的配置文件。 如果不這樣做,?
kubeadm upgrade apply? 會出錯并退出,不再執(zhí)行升級操作。
選擇要升級到的目標版本,運行合適的命令。例如:
# 將 x 替換為你為此次升級所選擇的補丁版本號
sudo kubeadm upgrade apply v1.24.x一旦該命令結(jié)束,你應該會看到:
[upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.24.x". Enjoy!
[upgrade/kubelet] Now that your control plane is upgraded, please proceed with upgrading your kubelets if you haven't already done so.你的容器網(wǎng)絡接口(CNI)驅(qū)動應該提供了程序自身的升級說明。
如果 CNI 驅(qū)動作為 DaemonSet 運行,則在其他控制平面節(jié)點上不需要此步驟。
對于其它控制面節(jié)點
與第一個控制面節(jié)點相同,但是使用:
sudo kubeadm upgrade node
而不是:
sudo kubeadm upgrade apply
此外,不需要執(zhí)行 ?kubeadm upgrade plan? 和更新 CNI 驅(qū)動插件的操作。
騰空節(jié)點
- 通過將節(jié)點標記為不可調(diào)度并騰空節(jié)點為節(jié)點作升級準備:
# 將 替換為你要騰空的控制面節(jié)點名稱
kubectl drain --ignore-daemonsets
升級 kubelet 和 kubectl
- 升級 kubelet 和 kubectl:
- Ubuntu、Debian 或 HypriotOS
- CentOS、RHEL 或 Fedora
- 重啟 kubelet
```shell
# 用最新的補丁版本替換 1.24.x-00 中的 x
apt-mark unhold kubelet kubectl && \
apt-get update && apt-get install -y kubelet=1.24.x-00 kubectl=1.24.x-00 && \
apt-mark hold kubelet kubectl
``````shell
# 用最新的補丁版本號替換 1.24.x-00 中的 x
yum install -y kubelet-1.24.x-0 kubectl-1.24.x-0 --disableexcludes=kubernetes
```
sudo systemctl daemon-reload
sudo systemctl restart kubelet解除節(jié)點的保護
- 通過將節(jié)點標記為可調(diào)度,讓其重新上線:
# 將 替換為你的節(jié)點名稱
kubectl uncordon
升級工作節(jié)點
工作節(jié)點上的升級過程應該一次執(zhí)行一個節(jié)點,或者一次執(zhí)行幾個節(jié)點, 以不影響運行工作負載所需的最小容量。
升級 kubeadm
- Ubuntu、Debian 或 HypriotOS
# 將 1.24.x-00 中的 x 替換為最新的補丁版本號
apt-mark unhold kubeadm && \
apt-get update && apt-get install -y kubeadm=1.24.x-00 && \
apt-mark hold kubeadm# 用最新的補丁版本替換 1.24.x-00 中的 x
yum install -y kubeadm-1.24.x-0 --disableexcludes=kubernetes
執(zhí)行 "kubeadm upgrade"
- 對于工作節(jié)點,下面的命令會升級本地的 kubelet 配置:
sudo kubeadm upgrade node
騰空節(jié)點
- 將節(jié)點標記為不可調(diào)度并驅(qū)逐所有負載,準備節(jié)點的維護:
# 將 替換為你正在騰空的節(jié)點的名稱
kubectl drain --ignore-daemonsets
升級 kubelet 和 kubectl
- 升級 kubelet 和 kubectl:
- Ubuntu、Debian 或 HypriotOS
- CentOS, RHEL or Fedora
- 重啟 kubelet
# 將 1.24.x-00 中的 x 替換為最新的補丁版本
apt-mark unhold kubelet kubectl && \
apt-get update && apt-get install -y kubelet=1.24.x-00 kubectl=1.24.x-00 && \
apt-mark hold kubelet kubectl# 將 1.24.x-0 x 替換為最新的補丁版本
yum install -y kubelet-1.24.x-0 kubectl-1.24.x-0 --disableexcludes=kubernetes
sudo systemctl daemon-reload
sudo systemctl restart kubelet取消對節(jié)點的保護
- 通過將節(jié)點標記為可調(diào)度,讓節(jié)點重新上線:
# 將 替換為當前節(jié)點的名稱
kubectl uncordon
驗證集群的狀態(tài)
在所有節(jié)點上升級 kubelet 后,通過從 kubectl 可以訪問集群的任何位置運行以下命令, 驗證所有節(jié)點是否再次可用:
kubectl get nodes
?STATUS ?應顯示所有節(jié)點為 ?Ready ?狀態(tài),并且版本號已經(jīng)被更新。
從故障狀態(tài)恢復
如果 ?kubeadm upgrade? 失敗并且沒有回滾,例如由于執(zhí)行期間節(jié)點意外關(guān)閉, 你可以再次運行 ?kubeadm upgrade?。 此命令是冪等的,并最終確保實際狀態(tài)是你聲明的期望狀態(tài)。 要從故障狀態(tài)恢復,你還可以運行 ?kubeadm upgrade --force? 而無需更改集群正在運行的版本。
在升級期間,kubeadm 向 ?/etc/kubernetes/tmp? 目錄下的如下備份文件夾寫入數(shù)據(jù):
- ?
kubeadm-backup-etcd-?- - ?
kubeadm-backup-manifests-?-
?kubeadm-backup-etcd? 包含當前控制面節(jié)點本地 etcd 成員數(shù)據(jù)的備份。 如果 etcd 升級失敗并且自動回滾也無法修復,則可以將此文件夾中的內(nèi)容復制到 ?/var/lib/etcd? 進行手工修復。如果使用的是外部的 etcd,則此備份文件夾為空。
?kubeadm-backup-manifests? 包含當前控制面節(jié)點的靜態(tài) Pod 清單文件的備份版本。 如果升級失敗并且無法自動回滾,則此文件夾中的內(nèi)容可以復制到 ?/etc/kubernetes/manifests? 目錄實現(xiàn)手工恢復。 如果由于某些原因,在升級前后某個組件的清單未發(fā)生變化,則 kubeadm 也不會為之 生成備份版本。
工作原理
?kubeadm upgrade apply? 做了以下工作:
- 檢查你的集群是否處于可升級狀態(tài):
- API 服務器是可訪問的
- 所有節(jié)點處于 Ready 狀態(tài)
- 控制面是健康的
- 強制執(zhí)行版本偏差策略。
- 確??刂泼娴溺R像是可用的或可拉取到服務器上。
- 如果組件配置要求版本升級,則生成替代配置與/或使用用戶提供的覆蓋版本配置。
- 升級控制面組件或回滾(如果其中任何一個組件無法啟動)。
- 應用新的 ?
CoreDNS?和 ?kube-proxy? 清單,并強制創(chuàng)建所有必需的 RBAC 規(guī)則。 - 如果舊文件在 180 天后過期,將創(chuàng)建 API 服務器的新證書和密鑰文件并備份舊文件。
?kubeadm upgrade node? 在其他控制平節(jié)點上執(zhí)行以下操作:
- 從集群中獲取 kubeadm ?
ClusterConfiguration?。 - (可選操作)備份 kube-apiserver 證書。
- 升級控制平面組件的靜態(tài) Pod 清單。
- 為本節(jié)點升級 kubelet 配置
?kubeadm upgrade node? 在工作節(jié)點上完成以下工作:
- 從集群取回 kubeadm ?
ClusterConfiguration?。 - 為本節(jié)點升級 kubelet 配置。
文章題目:創(chuàng)新互聯(lián)kubernetes教程:Kubernetes升級kubeadm集群
本文URL:http://m.fisionsoft.com.cn/article/dhsesge.html


咨詢
建站咨詢
