背景

问题: 青云 kubesphere 在 k8s 集群容器 runtime 为 containerd 时,创建 Secret 时提示找不到 dockerd !

集群环境介绍:
使用 kubeasz 搭建,容器 runtime 使用 containerd,而不是dockerd

操作步骤

实现思路

  1. 停止调度部分集群节点
  2. 删除 k8s 集群环境
  3. 重新安装容器运行时环境

操作步骤

  1. 停止调度部分集群节点(暂定一台主机)
    给主机添加污点,将该主机节点上的容器驱赶干净;

  2. 从集群中删除主机节点

    #easzctl del-node <主机IP>
    easzctl del-node 10.10.14.102
    # 删除主机时,同时会执行环境清除,记得重启一次彻底清除网络环境
  3. 修改整个 kubeasz 配置

    vim /etc/ansible/hosts
    # 修改成: CONTAINER_RUNTIME="docker"
  4. 重新将上述主机节点加入集群

    #easzctl add-node <主机IP>
    easzctl add-node 10.10.14.102
    # 直接加入节点会报错,截图如上图所示
    # 解决办法:
    # 登录目标主机执行如下命令
    rpm -qa |grep containerd
    yum remove containerd -y
    # 然后再执行 add-node 命令
  5. 重复上述动作,将其他主机节点切换

注意: 如果同时下线多个节点,可以批量操作即可

切换后的效果