前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >kubernetes集群升级时更换基础镜像地址

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

原创
作者头像
天天向上_82634
修改2021-11-19 14:02:51
2.8K0
修改2021-11-19 14:02:51
举报

容器化部署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,说明集群已经升级成功,以后可以直接在线拉取基础镜像进行升级。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、更新kubernetes软件源
  • 二、升级kubeadm/kubelet/kubectl组件
  • 三、查看集群配置文件
  • 四、创建升级用的配置文件
  • 五、执行kubeadm upgrade命令升级master节点
  • 六、升级worker节点
  • 七、重启master和worker节点kubelet组件
  • 八、检查升级结果
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档