|NO.Z.00091|——————————|^^ 升級 ^^|——|KuberNetes&二進位制升級.V02|-----------------------|kubernetes_master|k8s-master01元件|
阿新 • • 發佈:2022-03-29
[CloudNative:KuberNetes&二進位制升級.V02] [Applications.KuberNetes] [|DevOps|kubernetes|二進位制升級|kubernetes.v1.17.0——>v1.19.5] [|master元件|kube-apiserver/kube-controller-manager/kube-scheduler/kube-proxy.v1.17.0——>v1.19.5|]
一、kubernetes升級說明
### --- kubernetes升級說明 ~~~ 在升級的時候建議最後去升級controller-manager ~~~ 在升級的過程中最好把controller-manager停掉, ~~~ 在升級的過程中可能會造成pod的漂移,造成業務pod漂移。 ~~~ 在升級的過程中節點掛掉,pod漂移,業務宕機 ~~~ 若是controller-manager的版本過高,kubelet版本過低;就會造成迴圈的去建立pod或者有些api版本不符合報錯 ~~~ 在升級過程中,一般都是把controller-manager停掉;等升級完所有的節點,包括升級完kubelet再啟動controller-manager,再升級 ~~~ # 第二種方案:把這個節點下線在升級,與controller-manager在哪裡都是沒有影響的
### --- kubernetes升級方案
~~~ 方案一:本地直接升級,停止controller-manager再去升級
~~~ 方案二:停止所升級節點,再升級kubernetes相關元件;controller-manager是不可以停止掉的
~~~ 方案三:設定成不可排程的方式,再去升級
二、下載kubernetes.v1.19.5版本包### --- 此環境升級採用方案: ~~~ 此環境升級kubernetes方案:把節點下線;容器會漂移到其它節點,然後再升級這個節點相關元件 ~~~ 優點一:升級節點pod提前漂移了,系統業務不會受到影響 ~~~ 缺點一:若是不下線不漂移;直接升級kubelet,在升級完之後節點上的容器會重啟;升級完之後雜湊值會變,雜湊值變化之後,容器就會重啟。先下線,或者設定成不可排程的方式,再滾動釋出。pod會滾動重新發布 ~~~ 缺點:升級過程中,pod來回漂移會造成pod多次重啟;若是在本地直接升級會造成服務中斷;若是多副本,是沒有任何問題的。
### --- 下載kubernetes-server.v1.19.5
~~~ # 下載kubernetes-server.1.19.5版本的資源包
[root@k8s-master01 master]# wget -c https://dl.k8s.io/v1.19.5/kubernetes-server-linux-amd64.tar.gz
~~~ # 檢視下載的版本包
[root@k8s-master01 master]# ll
-rw-r--r-- 1 root root 309852159 Dec 10 2020 kubernetes-server-linux-amd64.tar.gz
~~~ # 解壓kubernetes版本包
[root@k8s-master01 master]# tar -zxvf kubernetes-server-linux-amd64.tar.gz
~~~ # 檢視當前版本包下kubernetes版本
~~~ 注:Client可以看到它的版本號為:1.19.5
~~~ 注:Server版本號為1.17.0;還是歷史版本號;升級完成之後會發生更改
[root@k8s-master01 bin]# pwd
/root/upgrade/master/kubernetes/server/bin
[root@k8s-master01 bin]# ./kubectl version
Client Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.5", GitCommit:"e338cf2c6d297aa603b50ad3a301f761b4173aa6", GitTreeState:"clean", BuildDate:"2020-12-09T11:18:51Z", GoVersion:"go1.15.2", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.17.0", GitCommit:"8a62859e515889f07e3e3be6a1080413f17cf2c3", GitTreeState:"clean", BuildDate:"2021-04-15T03:19:55Z", GoVersion:"go1.15.10", Compiler:"gc", Platform:"linux/amd64"}
一、kubernetes升級k8s-master01節點元件:kubernetes升級kube-apiserver
### --- kubernetes升級kube-apiserver
~~~ # 檢視kube-apiserver歷史版本
[root@k8s-master01 ~]# /usr/local/bin/kube-apiserver --version
Kubernetes v1.17.0
~~~ # 備份kube-apiserver版本
[root@k8s-master01 ~]# which kube-apiserver
/usr/local/bin/kube-apiserver
[root@k8s-master01 ~]# mkdir /usr/local/bin/api.bac
[root@k8s-master01 ~]# cp /usr/local/bin/kube-apiserver /usr/local/bin/api.bac/
~~~ # 停止kube-apiserver服務
[root@k8s-master01 ~]# systemctl stop kube-apiserver
~~~ # 升級kube-apiserver服務
[root@k8s-master01 ~]# cp upgrade/master/kubernetes/server/bin/kube-apiserver /usr/local/bin/
cp: overwrite ‘/usr/local/bin/kube-apiserver’? y
~~~ # 檢視kube-apiserver版本
[root@k8s-master01 ~]# /usr/local/bin/kube-apiserver --version
Kubernetes v1.19.5
~~~ # 啟動kube-apiserver服務
[root@k8s-master01 ~]# systemctl daemon-reload
[root@k8s-master01 ~]# systemctl restart kube-apiserver
二、kubernetes升級kube-controller-manager### --- kubernetes升級kube-controller-manager
~~~ # 檢視kube-controller-manager歷史版本
[root@k8s-master01 ~]# /usr/local/bin/kube-controller-manager --version
Kubernetes v1.17.0
~~~ # 備份kube-controller-manager版本
[root@k8s-master01 ~]# which kube-controller-manager
/usr/local/bin/kube-controller-manager
[root@k8s-master01 ~]# mkdir /usr/local/bin/controller.bak
[root@k8s-master01 ~]# cp /usr/local/bin/kube-controller-manager /usr/local/bin/controller.bak/
~~~ # 停止kube-controller-manager服務
[root@k8s-master01 ~]# systemctl stop kube-controller-manager
~~~ # 升級kube-controller-manager服務
[root@k8s-master01 ~]# cp upgrade/master/kubernetes/server/bin/kube-controller-manager /usr/local/bin/
cp: overwrite ‘/usr/local/bin/kube-controller-manager’? y
~~~ # 檢視kube-controller-manager版本
[root@k8s-master01 ~]# /usr/local/bin/kube-controller-manager --version
Kubernetes v1.19.5
~~~ # 啟動kube-controller-manager服務
[root@k8s-master01 ~]# systemctl daemon-reload
[root@k8s-master01 ~]# systemctl restart kube-controller-manager
三、kubernetes升級kube-scheduler
### --- kubernetes升級kube-scheduler
~~~ # 檢視kube-scheduler歷史版本
[root@k8s-master01 ~]# /usr/local/bin/kube-scheduler --version
Kubernetes v1.17.0
~~~ # 備份kube-scheduler版本
[root@k8s-master01 ~]# which kube-scheduler
/usr/local/bin/kube-scheduler
[root@k8s-master01 ~]# mkdir /usr/local/bin/scheduler.bak
[root@k8s-master01 ~]# cp /usr/local/bin/kube-scheduler /usr/local/bin/scheduler.bak/
~~~ # 停止kube-scheduler服務
[root@k8s-master01 ~]# systemctl stop kube-scheduler
~~~ # 升級kube-scheduler服務
[root@k8s-master01 ~]# cp upgrade/master/kubernetes/server/bin/kube-scheduler /usr/local/bin/
cp: overwrite ‘/usr/local/bin/kube-scheduler’? y
~~~ # 檢視kube-scheduler版本
[root@k8s-master01 ~]# /usr/local/bin/kube-scheduler --version
Kubernetes v1.19.5
~~~ # 啟動kube-scheduler服務
[root@k8s-master01 ~]# systemctl daemon-reload
[root@k8s-master01 ~]# systemctl restart kube-scheduler
四、kubernetes升級kube-proxy### --- kubernetes升級kube-proxy
~~~ # 檢視kube-proxy歷史版本
[root@k8s-master01 ~]# /usr/local/bin/kube-proxy --version
Kubernetes v1.17.0
~~~ # 備份kube-proxy版本
[root@k8s-master01 ~]# which kube-proxy
/usr/local/bin/kube-proxy
[root@k8s-master01 ~]# mkdir /usr/local/bin/proxy.bak
[root@k8s-master01 ~]# cp /usr/local/bin/kube-proxy /usr/local/bin/proxy.bak/
~~~ # 停止kube-proxy服務
[root@k8s-master01 ~]# systemctl stop kube-proxy
~~~ # 升級kube-proxy服務
[root@k8s-master01 ~]# cp upgrade/master/kubernetes/server/bin/kube-proxy /usr/local/bin/
cp: overwrite ‘/usr/local/bin/kube-proxy’? y
~~~ # 檢視kube-proxy版本
[root@k8s-master01 ~]# /usr/local/bin/kube-proxy --version
Kubernetes v1.19.5
~~~ # 啟動kube-proxy服務
[root@k8s-master01 ~]# systemctl daemon-reload
[root@k8s-master01 ~]# systemctl restart kube-proxy
五、檢視叢集狀態### --- 檢視叢集狀態
[root@k8s-master01 ~]# kubectl cluster-info
Kubernetes master is running at https://192.168.1.20:8443
CoreDNS is running at https://192.168.1.20:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
===============================END===============================
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart ——W.S.Landor
來自為知筆記(Wiz)