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,说明集群已经升级成功,以后可以直接在线拉取基础镜像进行升级。
相关文章
- 3D 穿梭效果?使用 UWP 也能搞定
- 《手把手教你》系列技巧篇(四十一)-java+ selenium自动化测试 - 处理iframe -上篇(详解教程)
- Centos8上安装Mysql8.X
- Mac刷新DNS,修改/etc/hosts立即生效
- error while loading shared libraries: libhwloc.so.5: cannot open shared object file: No such file or
- 问题解决:Address already in use
- 从 RPC 到服务化框架设计
- 微光行动|我们在地铁里建了一座「公园」
- 真相了! 程序员界的废话文学
- 开源公告|通用的分布式shuffle服务-Firestorm开源
- 如何管理设备热点?
- EasyNVR配置项api_auth获取接口鉴权,如何获得最高权限?
- DNSPod十问贾宇航:告别“人工智障”?训练数据厂商为AI正名
- 二叉排序树的查找
- 二叉排序树的删除
- 移动零
- 岛屿数量
- 752. 打开转盘锁
- C++自定义类的对象对于其私有变量的访问
- 冒泡排序,选择排序,插入排序,折半插入排序