目錄
一、理論
1.K8S集群升級
2.集群概況
3.升級集群(v1.21.14)
4.驗(yàn)證集群(v1.21.14)
5.升級集群(v1.22.14)
6.驗(yàn)證集群? (v1.22.14)
二、實(shí)驗(yàn)
?1.升級集群(v1.21.14)
2.驗(yàn)證集群(v1.21.14)
?3.升級集群(v1.22.14)
4.驗(yàn)證集群(v1.22.14)
一、理論
1.K8S集群升級
(1)概念
搭建K8S集群的方式有很多種,比如二進(jìn)制,kubeadm,RKE(Rancher)等,K8S集群升級方式也各有千秋,目前準(zhǔn)備使用kubeadm方式搭建的k8s集群升級方法。
需要注意的是,升級集群版本建議逐步升級,比如 v1.20.1–>v1.21.1–>v1.22.1–>v1.23.1–>v1.24.1,不能跨度過大,否則會報(bào)錯(cuò)。
2.集群概況
表1 集群概況
節(jié)點(diǎn)名稱 | IP | 版本 | 目標(biāo)版本 |
---|---|---|---|
master1 | 192.168.204.180 | v1.20.15 | v1.22.14 |
master2 | 192.168.204.181 | v1.20.15 | v1.22.14 |
node1 | 192.168.204.182? | v1.20.15 | v1.22.14 |
3.升級集群(v1.21.14)
升級策略為先升級到v1.21.14,再升級到v1.22.14
v1.20.15–>v1.21.14–>v1.22.14
(1)確定升級版本
可以看到目前的版本是v1.20.15。
kubectl get nodes # 查看集群版本
NAME STATUS ROLES AGE VERSION
master1 Ready control-plane,master 95d v1.20.15
master2 Ready control-plane,master 94d v1.20.15
node1 Ready worker 94d v1.20.15
# 執(zhí)行如下命令確定升級版本
yum list --showduplicates kubeadm --disableexcludes=kubernetes
我的目標(biāo)版本是1.21.14-0。
(2)升級Master
①所有 master 節(jié)點(diǎn)操作
# 升級kubeadm
yum install -y kubeadm-1.21.14-0 --disableexcludes=kubernetes # --disableexcludes=kubernetes:禁掉除了這個(gè)kubernetes之外的別的倉庫
# 升級完成后驗(yàn)證版本
kubeadm version
②?升級 master1 節(jié)點(diǎn)
# 驗(yàn)證升級計(jì)劃。檢查當(dāng)前集群是否可被升級
kubeadm upgrade plan
最高可以升級到 v1.21.14版本,正好與我們的目標(biāo)版本一致;只要可允許升級的最高版本高于你的目標(biāo)版本,就可以升級。
注意:kubeadm upgrade命令也會自動(dòng)對kubeadm在節(jié)點(diǎn)上所管理的證書執(zhí)行續(xù)約操作。如果需要略過證書續(xù)約操作,可以使用
標(biāo)志--certificate-renewal=false。
確定集群升級目標(biāo)版本,并且查看升級計(jì)劃符合條件后,就可以在 master1 節(jié)點(diǎn)上執(zhí)行升級集群的命令了
# 將 master1 升級到目標(biāo)版本
kubeadm upgrade apply v1.21.14
③?升級 master2節(jié)點(diǎn)
master2節(jié)點(diǎn)操作
升級master2節(jié)點(diǎn)與 master1 節(jié)點(diǎn)相同,但是使用下面的命令,而不是kubeadm upgrade apply
命令。
kubeadm upgrade node
④升級kubectl和kubelet
兩臺 master 節(jié)點(diǎn)操作,操作順序:master1——>master2
分別在兩臺master節(jié)點(diǎn)上執(zhí)行如下操作,注意更改<節(jié)點(diǎn)名稱>。
# 1.將當(dāng)前節(jié)點(diǎn)標(biāo)記為不可調(diào)度,并驅(qū)逐節(jié)點(diǎn)上的Pod
kubectl drain <節(jié)點(diǎn)名稱> --ignore-daemonsets --delete-emptydir-data
##說明:
## --ignore-daemonsets 無視DaemonSet管理下的Pod。即--ignore-daemonsets往往需要指定的,這是
#因?yàn)閐eamonset會忽略unschedulable標(biāo)簽(使用kubectl drain時(shí)會自動(dòng)給節(jié)點(diǎn)打上不可調(diào)度標(biāo)簽),
#由于deamonset控制器控制的pod被刪除后可能馬上又在此節(jié)點(diǎn)上啟動(dòng)起來,這樣就會成為死循環(huán)。因此
#這里忽略daemonset。
# 2.升級kubelet和kubectl組件
yum install -y kubelet-1.21.14-0 kubectl-1.24.15-0 --disableexcludes=kubernetes
## 說明: --disableexcludes=kubernetes:禁掉除了這個(gè)kubernetes之外的別的倉庫
# 3.重啟kubelet
systemctl daemon-reload
systemctl restart kubelet
# 4.恢復(fù)當(dāng)前節(jié)點(diǎn)上的Pod調(diào)度,使其上線
kubectl uncordon <節(jié)點(diǎn)名稱>
此時(shí)查看節(jié)點(diǎn)版本,發(fā)現(xiàn)兩臺master節(jié)點(diǎn)已經(jīng)升級完畢。
[root@master1 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master1 Ready control-plane,master 95d v1.21.14
master2 Ready control-plane,master 94d v1.21.14
node1 Ready worker 94d v1.20.15
接下來升級worker節(jié)點(diǎn)。
(3)?升級 Worker
工作節(jié)點(diǎn)上的升級過程應(yīng)該一次執(zhí)行一個(gè)節(jié)點(diǎn),或者一次執(zhí)行幾個(gè)節(jié)點(diǎn),以不影響運(yùn)行工作負(fù)載所需的最小容量。
由于我的集群中只有一個(gè)worker節(jié)點(diǎn),所以這里只在一臺機(jī)器上操作;如果你的集群中有多個(gè)worker節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)都需要操作。
# 升級kubeadm
yum install -y kubeadm-1.21.14-0 --disableexcludes=kubernetes
# 查看版本
kubeadm version
# 升級 node 節(jié)點(diǎn)
kubeadm upgrade node
# 設(shè)置節(jié)點(diǎn)不可調(diào)度并排空節(jié)點(diǎn)。只有1個(gè)worker節(jié)點(diǎn)時(shí)忽略此步,因?yàn)榭赡軙?bào)錯(cuò)
kubectl drain node1 --ignore-daemonsets
# 升級kubelet和kubectl組件
yum install -y kubelet-1.21.14-0 kubectl-1.21.14-0 --disableexcludes=kubernetes
# 重啟kubelet
systemctl daemon-reload
systemctl restart kubelet
# 恢復(fù)當(dāng)前節(jié)點(diǎn)上的Pod調(diào)度。只有1個(gè)worker節(jié)點(diǎn)時(shí)忽略此步
kubectl uncordon node1 # node1 為worker節(jié)點(diǎn)名稱
4.驗(yàn)證集群(v1.21.14)
(1)驗(yàn)證集群狀態(tài)是否正常
kubectl get nodes
# 結(jié)果如下:
[root@master1 ~]# kubectl get nodes
版本均已升級到 v1.21.14。
(2) 查看節(jié)點(diǎn)詳細(xì)信息文章來源:http://www.zghlxwxcb.cn/news/detail-725879.html
kubectl get nodes -o wide
5.升級集群(v1.22.14)
升級策略為v1.21.14–>v1.22.14
(1)確定升級版本
可以看到目前的版本是v1.21.14。
kubectl get nodes # 查看集群版本
NAME STATUS ROLES AGE VERSION
master1 Ready control-plane,master 94d v1.21.14
master2 Ready control-plane,master 94d v1.21.14
node1 Ready worker 94d v1.21.14
# 執(zhí)行如下命令確定升級版本
yum list --showduplicates kubeadm --disableexcludes=kubernetes
我的目標(biāo)版本是1.22.14-0。
(2)升級Master
①所有 master 節(jié)點(diǎn)操作
# 升級kubeadm
yum install -y kubeadm-1.22.14-0 --disableexcludes=kubernetes # --disableexcludes=kubernetes:禁掉除了這個(gè)kubernetes之外的別的倉庫
# 升級完成后驗(yàn)證版本
kubeadm version
②?升級 master1 節(jié)點(diǎn)
# 驗(yàn)證升級計(jì)劃。檢查當(dāng)前集群是否可被升級
kubeadm upgrade plan
最高可以升級到 v1.20.15 版本,正好與我們的目標(biāo)版本一致;只要可允許升級的最高版本高于你的目標(biāo)版本,就可以升級。
注意:kubeadm upgrade命令也會自動(dòng)對kubeadm在節(jié)點(diǎn)上所管理的證書執(zhí)行續(xù)約操作。如果需要略過證書續(xù)約操作,可以使用
標(biāo)志--certificate-renewal=false。
確定集群升級目標(biāo)版本,并且查看升級計(jì)劃符合條件后,就可以在 master1 節(jié)點(diǎn)上執(zhí)行升級集群的命令了
# 將 master1 升級到目標(biāo)版本
kubeadm upgrade apply v1.22.14
③?升級 master2節(jié)點(diǎn)
master2節(jié)點(diǎn)操作
升級master2節(jié)點(diǎn)與 master1 節(jié)點(diǎn)相同,但是使用下面的命令,而不是kubeadm upgrade apply
命令。
kubeadm upgrade node
④升級kubectl和kubelet
兩臺 master 節(jié)點(diǎn)操作,操作順序:master1——>master2
分別在兩臺master節(jié)點(diǎn)上執(zhí)行如下操作,注意更改<節(jié)點(diǎn)名稱>。
# 1.將當(dāng)前節(jié)點(diǎn)標(biāo)記為不可調(diào)度,并驅(qū)逐節(jié)點(diǎn)上的Pod
kubectl drain <節(jié)點(diǎn)名稱> --ignore-daemonsets --delete-emptydir-data
##說明:
## --ignore-daemonsets 無視DaemonSet管理下的Pod。即--ignore-daemonsets往往需要指定的,這是
#因?yàn)閐eamonset會忽略unschedulable標(biāo)簽(使用kubectl drain時(shí)會自動(dòng)給節(jié)點(diǎn)打上不可調(diào)度標(biāo)簽),
#由于deamonset控制器控制的pod被刪除后可能馬上又在此節(jié)點(diǎn)上啟動(dòng)起來,這樣就會成為死循環(huán)。因此
#這里忽略daemonset。
# 2.升級kubelet和kubectl組件
yum install -y kubelet-1.22.14-0 kubectl-1.22.14-0 --disableexcludes=kubernetes
## 說明: --disableexcludes=kubernetes:禁掉除了這個(gè)kubernetes之外的別的倉庫
# 3.重啟kubelet
systemctl daemon-reload
systemctl restart kubelet
# 4.恢復(fù)當(dāng)前節(jié)點(diǎn)上的Pod調(diào)度,使其上線
kubectl uncordon <節(jié)點(diǎn)名稱>
此時(shí)查看節(jié)點(diǎn)版本,發(fā)現(xiàn)兩臺master節(jié)點(diǎn)已經(jīng)升級完畢。
[root@master1 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master1 Ready control-plane,master 95d v1.22.14
master2 Ready control-plane,master 94d v1.22.14
node1 Ready worker 94d v1.21.14
接下來升級worker節(jié)點(diǎn)。
(3)?升級 Worker
工作節(jié)點(diǎn)上的升級過程應(yīng)該一次執(zhí)行一個(gè)節(jié)點(diǎn),或者一次執(zhí)行幾個(gè)節(jié)點(diǎn),以不影響運(yùn)行工作負(fù)載所需的最小容量。
由于我的集群中只有一個(gè)worker節(jié)點(diǎn),所以這里只在一臺機(jī)器上操作;如果你的集群中有多個(gè)worker節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)都需要操作。
# 升級kubeadm
yum install -y kubeadm-1.22.14-0 --disableexcludes=kubernetes# 查看版本
kubeadm version
# 升級 node 節(jié)點(diǎn)
kubeadm upgrade node
# 設(shè)置節(jié)點(diǎn)不可調(diào)度并排空節(jié)點(diǎn)。只有1個(gè)worker節(jié)點(diǎn)時(shí)忽略此步,因?yàn)榭赡軙?bào)錯(cuò)
kubectl drain node1 --ignore-daemonsets
# 升級kubelet和kubectl組件
yum install -y kubelet-1.22.14-0 kubectl-1.22.14-0 --disableexcludes=kubernetes
# 重啟kubelet
systemctl daemon-reload
systemctl restart kubelet
# 恢復(fù)當(dāng)前節(jié)點(diǎn)上的Pod調(diào)度。只有1個(gè)worker節(jié)點(diǎn)時(shí)忽略此步
kubectl uncordon node1 # node1 為worker節(jié)點(diǎn)名稱
6.驗(yàn)證集群? (v1.22.14)
(1)驗(yàn)證集群狀態(tài)是否正常
kubectl get nodes
# 結(jié)果如下:
[root@master1 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master1 Ready control-plane,master 95d v1.22.14
master2 Ready control-plane,master 94d v1.22.14
node1 Ready worker 94d v1.22.14
版本均已升級到 v1.22.14。
(2) 查看節(jié)點(diǎn)詳細(xì)信息
kubectl get nodes -o wide
二、實(shí)驗(yàn)
?1.升級集群(v1.21.14)
(1)確定升級版本
可以看到目前的版本是v1.20.15。
執(zhí)行如下命令確定升級版本
我的目標(biāo)版本是1.21.14-0。
(2)升級Master
①所有 master 節(jié)點(diǎn)操作
?升級kubeadm
?升級完成后驗(yàn)證版本
②?升級 master1 節(jié)點(diǎn)
驗(yàn)證升級計(jì)劃。檢查當(dāng)前集群是否可被升級
最高可以升級到 v1.21.14 版本,正好與我們的目標(biāo)版本一致;只要可允許升級的最高版本高于你的目標(biāo)版本,就可以升級。
注意:kubeadm upgrade命令也會自動(dòng)對kubeadm在節(jié)點(diǎn)上所管理的證書執(zhí)行續(xù)約操作。如果需要略過證書續(xù)約操作,可以使用
標(biāo)志--certificate-renewal=false。
確定集群升級目標(biāo)版本,并且查看升級計(jì)劃符合條件后,就可以在 master1 節(jié)點(diǎn)上執(zhí)行升級集群的命令了
成功
③?升級 master2節(jié)點(diǎn)
master2節(jié)點(diǎn)操作
升級master2節(jié)點(diǎn)與 master1 節(jié)點(diǎn)相同,但是使用下面的命令kubeadm upgrade node
,而不是kubeadm upgrade apply
命令。
升級kubeadm
升級完成后驗(yàn)證版本
升級master2節(jié)點(diǎn)
成功:
④升級kubectl和kubelet
兩臺 master 節(jié)點(diǎn)操作,操作順序:master1——>master2
分別在兩臺master節(jié)點(diǎn)上執(zhí)行如下操作,注意更改<節(jié)點(diǎn)名稱>。
1)master1節(jié)點(diǎn)
將當(dāng)前節(jié)點(diǎn)標(biāo)記為不可調(diào)度,并驅(qū)逐節(jié)點(diǎn)上的Pod
升級kubelet和kubectl組件
重啟kubelet
恢復(fù)當(dāng)前節(jié)點(diǎn)上的Pod調(diào)度,使其上線
查看節(jié)點(diǎn)版本,發(fā)現(xiàn)一臺master節(jié)點(diǎn)已經(jīng)升級完畢。
2)master2節(jié)點(diǎn)
將當(dāng)前節(jié)點(diǎn)標(biāo)記為不可調(diào)度,并驅(qū)逐節(jié)點(diǎn)上的Pod
升級kubelet和kubectl組件
重啟kubelet
恢復(fù)當(dāng)前節(jié)點(diǎn)上的Pod調(diào)度,使其上線
此時(shí)查看節(jié)點(diǎn)版本,發(fā)現(xiàn)兩臺master節(jié)點(diǎn)已經(jīng)升級完畢。
接下來升級worker節(jié)點(diǎn)。
(3)?升級 Worker
工作節(jié)點(diǎn)上的升級過程應(yīng)該一次執(zhí)行一個(gè)節(jié)點(diǎn),或者一次執(zhí)行幾個(gè)節(jié)點(diǎn),以不影響運(yùn)行工作負(fù)載所需的最小容量。
由于我的集群中只有一個(gè)worker節(jié)點(diǎn),所以這里只在一臺機(jī)器上操作;如果你的集群中有多個(gè)worker節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)都需要操作。
升級kubeadm???????
查看版本
升級 node 節(jié)點(diǎn)
設(shè)置節(jié)點(diǎn)不可調(diào)度并排空節(jié)點(diǎn)。只有1個(gè)worker節(jié)點(diǎn)時(shí)忽略此步,因?yàn)榭赡軙?bào)錯(cuò)
升級kubelet和kubectl組件
重啟kubelet
恢復(fù)當(dāng)前節(jié)點(diǎn)上的Pod調(diào)度。只有1個(gè)worker節(jié)點(diǎn)時(shí)忽略此步
2.驗(yàn)證集群(v1.21.14)
(1)驗(yàn)證集群狀態(tài)是否正常???????
版本均已升級到 v1.21.14。
(2) 查看節(jié)點(diǎn)詳細(xì)信息
?3.升級集群(v1.22.14)
升級策略為v1.21.14–>v1.22.14
(1)確定升級版本
可以看到目前的版本是v1.21.14。???????
執(zhí)行如下命令確定升級版本
我的目標(biāo)版本是1.22.14-0。
(2)升級Master
①所有 master 節(jié)點(diǎn)操作
?升級kubeadm???????
?升級完成后驗(yàn)證版本
②?升級 master1 節(jié)點(diǎn)
驗(yàn)證升級計(jì)劃。檢查當(dāng)前集群是否可被升級
最高可以升級到 v1.22.14 版本,正好與我們的目標(biāo)版本一致;只要可允許升級的最高版本高于你的目標(biāo)版本,就可以升級。
注意:kubeadm upgrade命令也會自動(dòng)對kubeadm在節(jié)點(diǎn)上所管理的證書執(zhí)行續(xù)約操作。如果需要略過證書續(xù)約操作,可以使用
標(biāo)志--certificate-renewal=false。
確定集群升級目標(biāo)版本,并且查看升級計(jì)劃符合條件后,就可以在 master1 節(jié)點(diǎn)上執(zhí)行升級集群的命令了
成功
③?升級 master2節(jié)點(diǎn)
master2節(jié)點(diǎn)操作
升級master2節(jié)點(diǎn)與 master1 節(jié)點(diǎn)相同,但是使用下面的命令kubeadm upgrade node
,而不是kubeadm upgrade apply
命令。
升級kubeadm
升級完成后驗(yàn)證版本
升級master2節(jié)點(diǎn)
成功:
④升級kubectl和kubelet
兩臺 master 節(jié)點(diǎn)操作,操作順序:master1——>master2
分別在兩臺master節(jié)點(diǎn)上執(zhí)行如下操作,注意更改<節(jié)點(diǎn)名稱>。
1)master1節(jié)點(diǎn)
將當(dāng)前節(jié)點(diǎn)標(biāo)記為不可調(diào)度,并驅(qū)逐節(jié)點(diǎn)上的Pod
升級kubelet和kubectl組件
重啟kubelet
恢復(fù)當(dāng)前節(jié)點(diǎn)上的Pod調(diào)度,使其上線
查看節(jié)點(diǎn)版本,發(fā)現(xiàn)一臺master節(jié)點(diǎn)已經(jīng)升級完畢。
2)master2節(jié)點(diǎn)
將當(dāng)前節(jié)點(diǎn)標(biāo)記為不可調(diào)度,并驅(qū)逐節(jié)點(diǎn)上的Pod
升級kubelet和kubectl組件???????
重啟kubelet
恢復(fù)當(dāng)前節(jié)點(diǎn)上的Pod調(diào)度,使其上線
此時(shí)查看節(jié)點(diǎn)版本,發(fā)現(xiàn)兩臺master節(jié)點(diǎn)已經(jīng)升級完畢。???????
接下來升級worker節(jié)點(diǎn)。
(3)?升級 Worker
工作節(jié)點(diǎn)上的升級過程應(yīng)該一次執(zhí)行一個(gè)節(jié)點(diǎn),或者一次執(zhí)行幾個(gè)節(jié)點(diǎn),以不影響運(yùn)行工作負(fù)載所需的最小容量。
由于我的集群中只有一個(gè)worker節(jié)點(diǎn),所以這里只在一臺機(jī)器上操作;如果你的集群中有多個(gè)worker節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)都需要操作。
升級kubeadm?????????????????????
查看版本
升級 node 節(jié)點(diǎn)
設(shè)置節(jié)點(diǎn)不可調(diào)度并排空節(jié)點(diǎn)。只有1個(gè)worker節(jié)點(diǎn)時(shí)忽略此步,因?yàn)榭赡軙?bào)錯(cuò)
升級kubelet和kubectl組件
重啟kubelet
恢復(fù)當(dāng)前節(jié)點(diǎn)上的Pod調(diào)度。只有1個(gè)worker節(jié)點(diǎn)時(shí)忽略此步
4.驗(yàn)證集群(v1.22.14)
(1)驗(yàn)證集群狀態(tài)是否正常?????????????????????
版本均已升級到 v1.22.14。
(2) 查看節(jié)點(diǎn)詳細(xì)信息
文章來源地址http://www.zghlxwxcb.cn/news/detail-725879.html
到了這里,關(guān)于云原生Kubernetes:K8S集群版本升級(v1.20.15 - v1.22.14)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!