0、簡介
這里只用3臺服務器來做一個簡單的集群,當前版本是1.23.17目標升級到1.24.17
地址 | 主機名 |
192.168.160.40 | kuber-master-1 |
192.168.160.41 | kuber-master-2 |
192.168.160.42 | kuber-node-1 |
我這里設置的master2可調度pod,將master2的污點去掉
kubectl describe nodes node | grep Taint
kubectl taint nodes kuber-master-2 node-role.kubernetes.io/master:NoSchedule-
版本對應關系
containerd對應
ingress對應
https://github.com/kubernetes/ingress-nginx
當前ingress1.4.0,先升級集群到1.25
升級ingress到1.9.6,升級集群到1.30
升級ingress到1.12.1?
calico對應
System requirements | Calico Documentation
升級calico到3.24
1、升級calico
這里舊版本的calico是3.20,先升級到3.24版本。
curl https://raw.githubusercontent.com/projectcalico/calico/v3.24.5/manifests/calico.yaml -o calico.yaml
下載3.24版本,直接進行apply操作,會對舊版本覆蓋。
kubectl apply -f calico.yam
2、升級k8s版本--master執行
(1)升級kubeadm
yum install -y kubeadm-1.24.17-0 --disableexcludes=kubernetes
kubeadm version 查看當前kubeadm的版本
(2)查看執行計劃
kubeadm upgrade plan
(3)修改runtime
kubectl edit nodes kuber-master-1
將
kubeadm.alpha.kubernetes.io/cri-socket: /var/run/dockershim.sock
修改為
kubeadm.alpha.kubernetes.io/cri-socket: unix:///var/run/containerd/containerd.sock
(4)配置containerd修改默認Cgroup驅動
containerd config default > /etc/containerd/config.toml
sed -i 's#SystemdCgroup = false#SystemdCgroup = true#g' /etc/containerd/config.toml
vim /var/lib/kubelet/kubeadm-flags.env
KUBELET_KUBEADM_ARGS="--network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.6"
修改為
KUBELET_KUBEADM_ARGS="--pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.6 --container-runtime=remote --container-runtime-endpoint=unix:///run/containerd/containerd.sock"
systemctl daemon-reload
systemctl restart containerd?#重啟containerd
systemctl restart kubelet #重啟kubelet
(5)定義 crictl 如何連接到容器運行時
cat >/etc/crictl.yaml<<EOF
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
EOF
# 加載
systemctl daemon-reload
systemctl restart containerd
(6)開始升級
kubeadm upgrade apply v1.24.17
(7)升級kubelet和kubectl
kubectl drain k8s-master01 --ignore-daemonsets
yum -y install kubelet-1.24.17 kubectl-1.24.17
systemctl daemon-reload
systemctl restart kubelet
kubectl uncordon k8s-master01
(8)升級其他控制節點
不需要執行kubeadm upgrade plan
kubeadm upgrade node
替換 kubeadm upgrade apply
其他流程一樣。
3、升級k8s版本--node執行
yum -y install kubeadm-1.24.17
驅逐node上的pod
kubectl drain? k8s-node-01 ?--ignore-daemonsets
同master一樣修改運行時和配置
做完1-5步就行
kubeadm upgrade node
升級kubelet和kubectl
kubectl drain k8s-node-01 --ignore-daemonsets
yum -y install kubelet-1.24.17 kubectl-1.24.17
systemctl daemon-reload
systemctl restart kubelet
kubectl uncordon k8s-node-01