0、簡介
這里只用3臺服務器來做一個簡單的集群,當前版本是1.24.17目標升級到1.28.17
地址 | 主機名 |
192.168.160.40 | kuber-master-1 |
192.168.160.41 | kuber-master-2 |
192.168.160.42 | kuber-node-1 |
因為1.24已經更換過了容器運行時,所以之后的升級相對就會簡單,只要遞歸升級
從1.24-->1.25-->1.26-->1.27-->1.28。這期間只需要注意插件的版本就行。
1、升級calico
calico對應
System requirements | Calico Documentation
升級calico到3.26
目前最新的calico版本支持1.25~1.30的k8s版本
直接升級到3.26
curl https://raw.githubusercontent.com/projectcalico/calico/v3.26.5/manifests/calico.yaml -o calico.yamlkubectl apply -f calico.yaml
2、升級集群master
升級第一個master
yum list --showduplicates kubelet kubeadm kubectl --disableexcludes=kubernetes | grep 1.25
yum install kubeadm-1.25.14-0 kubectl-1.25.14-0 kubelet-1.25.14-0 --disableexcludes=kubernetes -y
kubeadm upgrade plan
kubectl drain master --ignore-daemonsets
kubeadm upgrade apply 1.25.14
systemctl daemon-reload
systemctl restart kubelet
kubectl uncordon master
升級其他的master
yum install kubeadm-1.25.14-0 kubectl-1.25.14-0 kubelet-1.25.14-0 --disableexcludes=kubernetes -y
kubectl drain master --ignore-daemonsets
kubeadm upgrade node
systemctl daemon-reload
systemctl restart kubelet
kubectl uncordon master
3、升級集群node
和升級其他master的步驟一樣
yum install kubeadm-1.25.14-0 kubectl-1.25.14-0 kubelet-1.25.14-0 --disableexcludes=kubernetes -y
kubectl drain node --ignore-daemonsets
kubeadm upgrade node
systemctl daemon-reload
systemctl restart kubelet
kubectl uncordon node
4、升級ingress
將ingress的包fetch下來,修改里邊的參數
我這里就修改 hostport、service類型NodePort、pod的類型為Daemonset
先升級到4.9.1的版本
helm fetch ingress-nginx/ingress-nginx --version 4.9.1
tar -zxvf ingress-nginx-4.9.1.tgz
helm upgrade ingress-nginx -f values.yaml . --namespace ingress-nginx
問題
Error: UPGRADE FAILED: template: ingress-nginx/templates/controller-role.yaml:48:9: executing "ingre.......
如果碰到了上邊的問題,可能由于helm版本過低了,升級一下helm版本
https://github.com/helm/helm/releases/tag/v3.17.2
后邊在升級到1.26,1.27,1.28不用在升級插件了。直接參照升級集群去做就可以了。