kubernetes集群升级时更换基础镜像地址
容器化部署k8s集群需要拉取官方镜像站k8s.gcr.io上的基础镜像,但由于国内网络无法直接拉取官方镜像,所以对于之前通过离线镜像部署集群的同学们来说集群升级很麻烦,需准备离线镜像包导入后再升级,这样容易造成升级复杂化和升级出错。
现在官方支持通过自定义yaml配置文件升级,通过配置文件把基础镜像拉取地址改成国内地址,这样k8s集群以后可以在线升级,无需关心基础镜像无法拉取的问题,本文k8s集群版本从1.18.5 升级到1.20.7。
一、更新kubernetes软件源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo yum clean all |
---|
查看全部可用的kubeadm组件版本
yum list --showduplicates kubeadm --disableexcludes=kubernetes |
---|
二、升级kubeadm/kubelet/kubectl组件
在所有节点(包括 master、worker 节点)执行安装升级命令
yum install -y kubelet-1.20.7 kubeadm-1.20.7 kubectl-1.20.7 |
---|
三、查看集群配置文件
在 master 节点执行
kubeadm config view |
---|
四、创建升级用的配置文件
创建kubeadm-config-upgrade.yaml配置文件,文件内容如下,根据前面 kubeadm config view 的执行结果,修改了如下字段:
imageRepository 的值修改为:registry.aliyuncs.com/google_containers
kubernetesVersion 的值修改为: v1.20.7
apiServer: |
---|
五、执行kubeadm upgrade命令升级master节点
在 master 节点执行
# 查看配置文件差异 # 执行升级前试运行 # 执行升级动作 |
---|
六、升级worker节点
# 只在worker节点执行(所有worker节点) |
---|
七、重启master和worker节点kubelet组件
systemctl daemon-reload |
---|
八、检查升级结果
在 master 节点执行
[root@k8s-master ~]# kubeadm config view |
---|
从打印的配置文件来看k8s集群imageRepository值已经修改为国内地址,kubernetesVersion值也变为v1.20.7,说明集群已经升级成功,以后可以直接在线拉取基础镜像进行升级。