W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
kubeadm upgrade
? 不會(huì)影響你的工作負(fù)載,只會(huì)涉及 Kubernetes 內(nèi)部的組件,但備份終究是好的。systemctl status kubelet
? 或 ?journalctl -xeu kubelet
? 查看服務(wù)日志。kubeadm upgrade
? 的 `--config 參數(shù)和 kubeadm 配置 API 類(lèi)型 來(lái)重新配置集群,這樣會(huì)產(chǎn)生意想不到的結(jié)果。使用操作系統(tǒng)的包管理器找到最新的補(bǔ)丁版本 Kubernetes 1.24:
apt update
apt-cache madison kubeadm
# 在列表中查找最新的 1.24 版本
# 它看起來(lái)應(yīng)該是 1.24.x-00,其中 x 是最新的補(bǔ)丁版本
yum list --showduplicates kubeadm --disableexcludes=kubernetes
# 在列表中查找最新的 1.24 版本
# 它看起來(lái)應(yīng)該是 1.24.x-0,其中 x 是最新的補(bǔ)丁版本
控制面節(jié)點(diǎn)上的升級(jí)過(guò)程應(yīng)該每次處理一個(gè)節(jié)點(diǎn)。 首先選擇一個(gè)要先行升級(jí)的控制面節(jié)點(diǎn)。該節(jié)點(diǎn)上必須擁有 ?/etc/kubernetes/admin.conf
? 文件。
# 用最新的補(bǔ)丁版本號(hào)替換 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
-
# 用最新的補(bǔ)丁版本號(hào)替換 1.24.x-0 中的 x
yum install -y kubeadm-1.24.x-0 --disableexcludes=kubernetes
kubeadm version
kubeadm upgrade plan
此命令檢查你的集群是否可被升級(jí),并取回你要升級(jí)的目標(biāo)版本。 命令也會(huì)顯示一個(gè)包含組件配置版本狀態(tài)的表格。
Note:
?kubeadm upgrade
? 也會(huì)自動(dòng)對(duì) kubeadm 在節(jié)點(diǎn)上所管理的證書(shū)執(zhí)行續(xù)約操作。 如果需要略過(guò)證書(shū)續(xù)約操作,可以使用標(biāo)志 ?--certificate-renewal=false
?。
Note:
如果 ?kubeadm upgrade plan
? 給出任何需要手動(dòng)升級(jí)的組件配置,用戶(hù)必須 通過(guò) ?--config
? 命令行標(biāo)志向 ?kubeadm upgrade apply
? 命令提供替代的配置文件。 如果不這樣做,?kubeadm upgrade apply
? 會(huì)出錯(cuò)并退出,不再執(zhí)行升級(jí)操作。
選擇要升級(jí)到的目標(biāo)版本,運(yùn)行合適的命令。例如:
# 將 x 替換為你為此次升級(jí)所選擇的補(bǔ)丁版本號(hào)
sudo kubeadm upgrade apply v1.24.x
一旦該命令結(jié)束,你應(yīng)該會(huì)看到:
[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)絡(luò)接口(CNI)驅(qū)動(dòng)應(yīng)該提供了程序自身的升級(jí)說(shuō)明。
如果 CNI 驅(qū)動(dòng)作為 DaemonSet 運(yùn)行,則在其他控制平面節(jié)點(diǎn)上不需要此步驟。
與第一個(gè)控制面節(jié)點(diǎn)相同,但是使用:
sudo kubeadm upgrade node
而不是:
sudo kubeadm upgrade apply
此外,不需要執(zhí)行 ?kubeadm upgrade plan
? 和更新 CNI 驅(qū)動(dòng)插件的操作。
# 將 <node-to-drain> 替換為你要騰空的控制面節(jié)點(diǎn)名稱(chēng)
kubectl drain <node-to-drain> --ignore-daemonsets
```shell
# 用最新的補(bǔ)丁版本替換 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
# 用最新的補(bǔ)丁版本號(hào)替換 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
# 將 <node-to-drain> 替換為你的節(jié)點(diǎn)名稱(chēng)
kubectl uncordon <node-to-drain>
工作節(jié)點(diǎn)上的升級(jí)過(guò)程應(yīng)該一次執(zhí)行一個(gè)節(jié)點(diǎn),或者一次執(zhí)行幾個(gè)節(jié)點(diǎn), 以不影響運(yùn)行工作負(fù)載所需的最小容量。
# 將 1.24.x-00 中的 x 替換為最新的補(bǔ)丁版本號(hào)
apt-mark unhold kubeadm && \
apt-get update && apt-get install -y kubeadm=1.24.x-00 && \
apt-mark hold kubeadm
# 用最新的補(bǔ)丁版本替換 1.24.x-00 中的 x
yum install -y kubeadm-1.24.x-0 --disableexcludes=kubernetes
sudo kubeadm upgrade node
# 將 <node-to-drain> 替換為你正在騰空的節(jié)點(diǎn)的名稱(chēng)
kubectl drain <node-to-drain> --ignore-daemonsets
# 將 1.24.x-00 中的 x 替換為最新的補(bǔ)丁版本
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 替換為最新的補(bǔ)丁版本
yum install -y kubelet-1.24.x-0 kubectl-1.24.x-0 --disableexcludes=kubernetes
sudo systemctl daemon-reload
sudo systemctl restart kubelet
# 將 <node-to-drain> 替換為當(dāng)前節(jié)點(diǎn)的名稱(chēng)
kubectl uncordon <node-to-drain>
在所有節(jié)點(diǎn)上升級(jí) kubelet 后,通過(guò)從 kubectl 可以訪(fǎng)問(wèn)集群的任何位置運(yùn)行以下命令, 驗(yàn)證所有節(jié)點(diǎn)是否再次可用:
kubectl get nodes
?STATUS
?應(yīng)顯示所有節(jié)點(diǎn)為 ?Ready
?狀態(tài),并且版本號(hào)已經(jīng)被更新。
如果 ?kubeadm upgrade
? 失敗并且沒(méi)有回滾,例如由于執(zhí)行期間節(jié)點(diǎn)意外關(guān)閉, 你可以再次運(yùn)行 ?kubeadm upgrade
?。 此命令是冪等的,并最終確保實(shí)際狀態(tài)是你聲明的期望狀態(tài)。 要從故障狀態(tài)恢復(fù),你還可以運(yùn)行 ?kubeadm upgrade --force
? 而無(wú)需更改集群正在運(yùn)行的版本。
在升級(jí)期間,kubeadm 向 ?/etc/kubernetes/tmp
? 目錄下的如下備份文件夾寫(xiě)入數(shù)據(jù):
kubeadm-backup-etcd-<date>-<time>
?kubeadm-backup-manifests-<date>-<time>
??kubeadm-backup-etcd
? 包含當(dāng)前控制面節(jié)點(diǎn)本地 etcd 成員數(shù)據(jù)的備份。 如果 etcd 升級(jí)失敗并且自動(dòng)回滾也無(wú)法修復(fù),則可以將此文件夾中的內(nèi)容復(fù)制到 ?/var/lib/etcd
? 進(jìn)行手工修復(fù)。如果使用的是外部的 etcd,則此備份文件夾為空。
?kubeadm-backup-manifests
? 包含當(dāng)前控制面節(jié)點(diǎn)的靜態(tài) Pod 清單文件的備份版本。 如果升級(jí)失敗并且無(wú)法自動(dòng)回滾,則此文件夾中的內(nèi)容可以復(fù)制到 ?/etc/kubernetes/manifests
? 目錄實(shí)現(xiàn)手工恢復(fù)。 如果由于某些原因,在升級(jí)前后某個(gè)組件的清單未發(fā)生變化,則 kubeadm 也不會(huì)為之 生成備份版本。
?kubeadm upgrade apply
? 做了以下工作:
CoreDNS
?和 ?kube-proxy
? 清單,并強(qiáng)制創(chuàng)建所有必需的 RBAC 規(guī)則。?kubeadm upgrade node
? 在其他控制平節(jié)點(diǎn)上執(zhí)行以下操作:
ClusterConfiguration
?。
?kubeadm upgrade node
? 在工作節(jié)點(diǎn)上完成以下工作:
ClusterConfiguration
?。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: