最近一直在做k8s升级的事情,从1.20.0版本升级至1.23.5版本。
由于项目的特殊原因,不能采用网站通用的方法,使用yum等方式升级kubeadm等版本,只能手动安装相关组件。
在上篇文章中,主要记录了部署k8s的一些问题,但是在部署之前要准备所需要的环境,比如将kubeadm、kubectl等组件从1.20.0升级为1.23.5,将环境预置后,就可以执行相关ansible脚本,进行部署k8s了。
该篇主要记录所需要的环境准备过程。
整体的大致思路是登陆华为云控制台,创建一个云服务器,镜像是包含之前k8s 1.20.0版本信息的镜像,然后登陆该云服务器,替换kubeadm,kebectl,kubelet组件和k8s所需要的镜像,然后基于该服务器生成新的镜像。 具体版本可以通过以下查询:
kubeadm config images list --kubernetes-version=v1.23.5
################################################
以下是该版本所需的镜像包,可以提前下载
################################################
k8s.gcr.io/kube-apiserver:v1.23.5
k8s.gcr.io/kube-controller-manager:v1.23.5
k8s.gcr.io/kube-scheduler:v1.23.5
k8s.gcr.io/kube-proxy:v1.23.5
k8s.gcr.io/pause:3.6
k8s.gcr.io/etcd:3.5.1-0
k8s.gcr.io/coredns/coredns:v1.8.6
################################################
具体内容,可以点击下面这个链接:support.huaweicloud.com/usermanual-…
组件替换
访问k8s网站,跳转至相关版本的下载页面,我选择的1.23.5的amd64版本 github.com/kubernetes/…
点击下载解压后,依次将kubelet,kubectl,kubeadm上传到上述创建的云服务器中, 先后执行命令,针对kubectl,kubeadm同理。
chmod +x ./kubelet
mv ./kubelet /usr/local/bin
为确保正确,可以执行 kubectl version 等命令,查询组件版本信息,检查是否替换 我在替换kebectl组件时,比较坑,执行上述命令后,查询版本还是之前的旧版本,最后重启云服务器后,再次查询,版本更新了。
另外一个重要的时候就是替换k8s所需要的镜像,同样在解压的文件夹中。
执行 docker load -i xx.tar 命令安装
执行后,镜像名会包含系统架构名称(arm,amd64,类似这种),为了统一操作,去除架构名称,执行 docker tag 命令,并执行docker rmi 命令删除旧的镜像,简洁环境。
上述的文件夹中没有包含下面几个组件:
k8s.gcr.io/pause:3.6
k8s.gcr.io/etcd:3.5.1-0
k8s.gcr.io/coredns/coredns:v1.8.6
可以到对应的官网按照指导进行安装。