kubernete 升级

使用kubeadm版本升级

kubernetes 从1.23.x 升级到 1.24.x

k8s 在1.24.x之后的版本放弃了和 docker 的兼容,使用 containerd 作为底层的容器,直接参照官方文档的资料进行更新就会报错。因为你没有安装 containerd,所以要安装 containerd 并配置才能正确的升级 k8s
我用的是CentOS7.9的版本,因此以下操作都是在CentOS下操作。

Master 节点操作

1.升级 kubeadm

yum install -y kubeadm-1.24.2-0 --disableexcludes=kubernetes
kubeadm version
kubeadm upgrade plan
sudo kubeadm upgrade apply v1.24.2

2.安装 containerd

yum install containerd.io -y
containerd config default > /etc/containerd/config.toml
vim /var/lib/kubelet/kubeadm-flags.env

修改 kubeadm-flags.env 变量:

KUBELET_KUBEADM_ARGS="--pod-infra-container-image=k8s.gcr.io/pause:3.6 --container-runtime=remote --container-runtime-endpoint=unix:///run/containerd/containerd.sock"

3.升级 kubelet

yum install -y kubelet-1.24.2-0 kubectl-1.24.2-0 --disableexcludes=kubernetes
systemctl daemon-reload && systemctl restart containerd  && systemctl restart kubelet

查看状态:

kubectl get nodes  
systemctl status kubelet

Worker 节点操作

1.升级 kubeadm

yum install -y kubeadm-1.24.2-0 --disableexcludes=kubernetes
kubeadm version
kubeadm upgrade plan
sudo kubeadm upgrade node

2.安装 containerd

yum install containerd.io -y
containerd config default > /etc/containerd/config.toml
vim /var/lib/kubelet/kubeadm-flags.env

修改 kubeadm-flags.env 变量:

KUBELET_KUBEADM_ARGS="--pod-infra-container-image=k8s.gcr.io/pause:3.6 --container-runtime=remote --container-runtime-endpoint=unix:///run/containerd/containerd.sock"

3.升级 kubelet

yum install -y kubelet-1.24.2-0 kubectl-1.24.2-0 --disableexcludes=kubernetes
systemctl daemon-reload && systemctl restart containerd  && systemctl restart kubelet

查看状态:

systemctl status kubelet

4.优化的维护节点

# 设置为不可调度
kubectl cordon <nodename>
# 优雅排出容器
kubectl drain <nodename> --ignore-daemonsets --delete-emptydir-data
# 确认维护完成之后,恢复正常
kubectl uncordon <nodename>

使用kubesphere升级

GitHubopen in new window 发布页面下载 KubeKey 或直接使用以下命令。

curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.13 sh -

执行以上命令会下载最新版 KubeKey,您可以修改命令中的版本号下载指定版本。

为 kk 添加可执行权限:

chmod +x kk

升级 KubeSphere 和 Kubernetes

当升级 Kubernetes 时,KubeKey 将从一个小版本升级到下一个小版本,直到目标版本。例如,您会发现升级过程先从 1.16 先升级到 1.17 然后再升级到 1.18,而不是直接从 1.16 升级到 1.18。

多节点集群

运行以下命令,将您的集群升级至 KubeSphere 3.4 和 Kubernetes v1.22.12:

./kk upgrade --with-kubernetes v1.22.12 --with-kubesphere v3.4.0 -f sample.yaml

要将 Kubernetes 升级至特定版本,请在 --with-kubernetes 标志后明确指定版本号。以下是可用版本:v1.20.x、v1.21.x、v1.22.x、v1.23.x、* v1.24.x、* v1.25.x 和 * v1.26.x。带星号的版本可能出现边缘节点部分功能不可用的情况。因此,如需使用边缘节点,推荐安装 v1.23.x。

kubesphere 更新k8s证书

查看证书到期时间

./kk certs check-expiration -f sample.yaml

指定sample.yaml的目的主要是kk通过ssh到配置文件中的主机上执行更新操作

更新证书

./kk certs renew -f sample.yaml
Last Updated:
Contributors: jobcher