0
点赞
收藏
分享

微信扫一扫

k8s切换容器运行时

背景

由于k8s从1.24版本开始已经不支持常用的docker的容器运行时,虽说目前使用的是1.22版本,但为了以后切换的时候不至于太被动,自己提前踩一下坑还是有必要的,下面开始操作过程

驱逐节点上的pod

kubectl drain k8s-node1-10.10.10.234 --ignore-daemonsets --delete-emptydir-data

停止节点上的docker服务和kubelet服务

systemctl stop kubelet
systemctl disable docker.service --now

安装并配置containerd

由于containerd在docker-ce安装的时候是一并安装的,这里就不再安装了,只是生成配置

mkdir -p /etc/containerd
containerd config default | tee /etc/containerd/config.toml
systemctl restart containerd

修改Kubelet的容器运行时

vi /var/lib/kubelet/kubeadm-flags.env
修改成
KUBELET_KUBEADM_ARGS="--network-plugin=cni --container-runtime=remote --container-runtime-endpoint=unix:///run/containerd/containerd.sock  --pod-infra-container-image=k8s.gcr.io/pause:3.5"

修改节点的容器运行时

kubectl edit node k8s-node1-10.10.10.234
将
/var/run/dockershim.sock
修改为
unix:///run/containerd/containerd.sockc

重启kubelet

systemctl restart kubelet

验证是否变更

查看节点状态是否正常
image.png
查看运行时是否变更
image.png

踩到的坑如下

1、如果不能科学上网,需要修改containerd配置文件的sandbox_image地址为

sandbox_image = "registry.aliyuncs.com/k8sxio/pause:3.5"

否则查看/var/log/message会一直提示要下载镜像k8s.gcr.io/pause:3.5
2、需要修改containerd的私有仓库地址,否则会跟docker一样提示https问题,如下:
在这一段

        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
          endpoint = ["https://registry-1.docker.io"]

底下添加私有仓库地址

      [plugins."io.containerd.grpc.v1.cri".registry.mirrors."harbor.china-harmony.com"]
        endpoint = ["http://harbor.china-harmony.com"]
    [plugins."io.containerd.grpc.v1.cri".registry.configs]
      [plugins."io.containerd.grpc.v1.cri".registry.configs."harbor.china-harmony.com".tls]
        insecure_skip_verify = true

3、在修改master容器运行时,必须先使用kubectl edit node修改容器里面的运行时,再做其他的操作,否则如果先停止Kubelet后master的api-server已经连接不上了
4、需要使用ctr重新导入原来k8s.gcr.io下载的镜像

  998  docker save -o kube-apiserver.tar k8s.gcr.io/kube-apiserver:v1.22.2
 1000  docker save -o kube-controller-manager.tar k8s.gcr.io/kube-controller-manager:v1.22.2
 1002  docker save -o kube-scheduler.tar k8s.gcr.io/kube-scheduler:v1.22.2
 1004  docker save -o kube-proxy.tar k8s.gcr.io/kube-proxy:v1.22.2
 1013  docker save -o etcd.tar k8s.gcr.io/etcd:3.5.0-0
 1027  docker save -o coredns.tar k8s.gcr.io/coredns/coredns:v1.8.4
  999  ctr -n k8s.io images import kube-apiserver.tar 
 1001  ctr -n k8s.io images import kube-controller-manager.tar 
 1003  ctr -n k8s.io images import kube-scheduler.tar 
 1005  ctr -n k8s.io images import kube-proxy.tar 
 1014  ctr -n k8s.io images import etcd.tar 
 1028  ctr -n k8s.io images import coredns.tar 
举报

相关推荐

0 条评论