1. 程式人生 > 其它 >|NO.Z.00091|——————————|^^ 升級 ^^|——|KuberNetes&二進位制升級.V02|-----------------------|kubernetes_master|k8s-master01元件|

|NO.Z.00091|——————————|^^ 升級 ^^|——|KuberNetes&二進位制升級.V02|-----------------------|kubernetes_master|k8s-master01元件|



[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方案:把節點下線;容器會漂移到其它節點,然後再升級這個節點相關元件
~~~     優點一:升級節點pod提前漂移了,系統業務不會受到影響
~~~     缺點一:若是不下線不漂移;直接升級kubelet,在升級完之後節點上的容器會重啟;升級完之後雜湊值會變,雜湊值變化之後,容器就會重啟。先下線,或者設定成不可排程的方式,再滾動釋出。pod會滾動重新發布
~~~     缺點:升級過程中,pod來回漂移會造成pod多次重啟;若是在本地直接升級會造成服務中斷;若是多副本,是沒有任何問題的。
二、下載kubernetes.v1.19.5版本包
### --- 下載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)