k8s集群升級


前言:
  生產環境的k8s為了追求穩定,不能直接安裝最新版本,隨着新版本功能的穩定,很多新功能是老版本不具備的,這時進行一次穩妥的升級便是一個不錯的選擇。

以升級k8s集群v1.13.3到v1.14.0為例

升級次序:先升級master,后升級node
升級之前的准備:確保已經備份了etcd數據庫與master節點的狀態

升級master

安裝kubernetes的yum源

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
 
name=Kubernetes repo
 
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
 
gpgcheck=0
 
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
 
enabled=1

EOF

yum makecache
yum list --showduplicates kubeadm --disableexcludes=kubernetes
# find the latest 1.14 version in the list
# it should look like 1.14.x-0, where x is the latest patch

安裝v1.14.0的kubeadm與kubelet安裝包

yum install -y kubeadm-1.14.0-0 kubelet-1.14.0-0 kubectl-1.14.0-0 

驗證下載的包是否為期望的版本

sudo kubeadm version

期望輸出
kubeadm version: &version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.0", GitCommit:"641856db18352033a0d96dbc99153fa3b27298e5", GitTreeState:"clean", BuildDate:"2019-03-25T15:51:21Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"linux/amd64"}

驗證集群是否可升級

sudo kubeadm upgrade plan

期望輸出
[preflight] Running pre-flight checks.
[upgrade] Making sure the cluster is healthy:
[upgrade/config] Making sure the configuration is correct:
[upgrade/config] Reading configuration from the cluster...
[upgrade/config] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
[upgrade] Fetching available versions to upgrade to
[upgrade/versions] Cluster version: v1.13.3
[upgrade/versions] kubeadm version: v1.14.0

Awesome, you're up-to-date! Enjoy!

執行升級

sudo kubeadm upgrade apply v1.14.0
交互界面輸入y,確認升級
期望輸出
[upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.14.0". Enjoy!

升級kubectl

yum install -y  kubectl-1.14.0-0

重啟kubelet

sudo systemctl daemon-reload && sudo systemctl restart kubelet

查看升級結果

NAME        STATUS   ROLES    AGE   VERSION
k8s-agent   Ready    <none>   66m   v1.13.3
k8s-cp      Ready    master   69m   v1.14.0

升級node

安裝kubernetes的yum源

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
 
name=Kubernetes repo
 
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
 
gpgcheck=0
 
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
 
enabled=1

EOF

yum makecache

安裝v1.14.0的kubeadm與kubelet安裝包

yum install -y kubeadm-1.14.0-0 kubelet-1.14.0-0

修改kubelet配置

sudo kubeadm upgrade node config --kubelet-version v1.14.0

升級kubectl

yum install -y  kubectl-1.14.0-0 

重啟kubelet

sudo systemctl daemon-reload && sudo systemctl restart kubelet

查看升級結果

NAME        STATUS   ROLES    AGE   VERSION
k8s-agent   Ready    <none>   70m   v1.14.0
k8s-cp      Ready    master   73m   v1.14.0

參考
補充第一點:如果k8s使用的是動態調度,那么在升級node節點之前,應該將其標記為不可用,從集群中剔出:
通過將節點標記為不可調度並刪除工作負載,為維護節點做好准備。運行:

kubectl drain $NODE --ignore-daemonsets

你應該看到類似這樣的輸出:

node/ip-172-31-85-18 cordoned
WARNING: ignoring DaemonSet-managed Pods: kube-system/kube-proxy-dj7d7, kube-system/weave-net-z65qx

node/ip-172-31-85-18 drained

補充第二點:本博客最多可升級至1.15版本,1.15-->1.16版本需要加參數如下

kubeadm upgrade apply v1.16.10 --ignore-preflight-errors=CoreDNSUnsupportedPlugins

補充第三點:離線更新時,不但要下載kubeadm,kubectl,kubelet的安裝包,還要在線環境下升級成功所下載的docker鏡像,並將其離線上傳,才能離線升級成功

在離線安裝kubeadm,kubectl,kubelet時,可以用yumdownloader下載,yum install *來安裝


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM