kubernetes集群升级时更换基础镜像地址

容器化部署k8s集群需要拉取官方镜像站k8s.gcr.io上的基础镜像,但由于国内网络无法直接拉取官方镜像,所以对于之前通过离线镜像部署集群的同学们来说集群升级很麻烦,需准备离线镜像包导入后再升级,这样容易造成升级复杂化和升级出错。

现在官方支持通过自定义yaml配置文件升级,通过配置文件把基础镜像拉取地址改成国内地址,这样k8s集群以后可以在线升级,无需关心基础镜像无法拉取的问题,本文k8s集群版本从1.18.5 升级到1.20.7。

一、更新kubernetes软件源

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

yum clean all
yum makecache

查看全部可用的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
systemctl daemon-reload
systemctl restart kubelet

三、查看集群配置文件

在 master 节点执行

kubeadm config view

四、创建升级用的配置文件

创建kubeadm-config-upgrade.yaml配置文件,文件内容如下,根据前面 kubeadm config view 的执行结果,修改了如下字段:

imageRepository 的值修改为:registry.aliyuncs.com/google_containers
kubernetesVersion 的值修改为: v1.20.7

apiServer:
extraArgs:
authorization-mode: Node,RBAC
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
type: CoreDNS
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: v1.20.7
networking:
dnsDomain: cluster.local
podSubnet: 10.44.0.0/16
serviceSubnet: 10.22.0.0/16
scheduler: {}

五、执行kubeadm upgrade命令升级master节点

在 master 节点执行

# 查看配置文件差异
kubeadm upgrade diff --config kubeadm-config-upgrade.yaml

# 执行升级前试运行
kubeadm upgrade apply --config kubeadm-config-upgrade.yaml --dry-run

# 执行升级动作
kubeadm upgrade apply --config kubeadm-config-upgrade.yaml

六、升级worker节点

# 只在worker节点执行(所有worker节点)
kubeadm upgrade node

七、重启master和worker节点kubelet组件

systemctl daemon-reload
systemctl restart kubelet

八、检查升级结果

在 master 节点执行

[root@k8s-master ~]# kubeadm config view
apiServer:
extraArgs:
authorization-mode: Node,RBAC
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
type: CoreDNS
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: v1.20.7
networking:
dnsDomain: cluster.local
podSubnet: 192.168.0.0/16
serviceSubnet: 10.96.0.0/12
scheduler: {}

从打印的配置文件来看k8s集群imageRepository值已经修改为国内地址,kubernetesVersion值也变为v1.20.7,说明集群已经升级成功,以后可以直接在线拉取基础镜像进行升级。

本站文章资源均来源自网络,除非特别声明,否则均不代表站方观点,并仅供查阅,不作为任何参考依据!
如有侵权请及时跟我们联系,本站将及时删除!
如遇版权问题,请查看 本站版权声明
THE END
分享
二维码
海报
kubernetes集群升级时更换基础镜像地址
容器化部署k8s集群需要拉取官方镜像站k8s.gcr.io上的基础镜像,但由于国内网络无法直接拉取官方镜像,所以对于之前通过离线镜像部署集群的同学们来说集群升级...
<<上一篇
下一篇>>