将节点上的容器运行时从 Docker Engine 改为 containerd

    Note: This section links to third party projects that provide functionality required by Kubernetes. The Kubernetes project authors aren’t responsible for these projects, which are listed alphabetically. To add a project to this list, read the content guide before submitting a change.

    安装 containerd。进一步的信息可参见 containerd 的安装文档。 关于一些特定的环境准备工作,请遵循 。

    腾空节点

    将 替换为你所要腾空的节点的名称

    1. systemctl stop kubelet
    2. systemctl disable docker.service --now

    安装 Containerd

    遵循此指南 了解安装 containerd 的详细步骤。

    1. 从官方的 Docker 仓库安装 containerd.io 包。关于为你所使用的 Linux 发行版来设置 Docker 仓库,以及安装 containerd.io 包的详细说明,可参见 。

    2. 配置 containerd:

      1. containerd config default | sudo tee /etc/containerd/config.toml
    3. 重启 containerd:

      1. sudo systemctl restart containerd
    1. 下载 containerd:

    2. 解压缩并执行配置:

      1. Copy-Item -Path ".\bin\" -Destination "$Env:ProgramFiles\containerd" -Recurse -Force
      2. cd $Env:ProgramFiles\containerd\
      3. .\containerd.exe config default | Out-File config.toml -Encoding ascii
      4. # 请审查配置信息。取决于你的安装环境,你可能需要调整:
      5. # - the sandbox_image (Kubernetes pause 镜像)
      6. # - cni bin_dir 和 conf_dir 的位置
      7. Get-Content config.toml
      8. # (可选步骤,但强烈建议执行)将 containerd 排除在 Windows Defender 扫描之外
      9. Add-MpPreference -ExclusionProcess "$Env:ProgramFiles\containerd\containerd.exe"
    3. 启动 containerd:

      1. .\containerd.exe --register-service
      2. Start-Service containerd

    编辑文件 /var/lib/kubelet/kubeadm-flags.env,将 containerd 运行时添加到标志中: --container-runtime=remote--container-runtime-endpoint=unix:///run/containerd/containerd.sock"

    对于使用 kubeadm 的用户,可以考虑下面的问题:

    工具将每个主机的 CRI 套接字保存在该主机对应的 Node 对象的注解中。 使用 kubeadm 的用户应该知道,kubeadm 工具将每个主机的 CRI 套接字保存在该主机对应的 Node 对象的注解中。 要更改这一注解信息,你可以在一台包含 kubeadm /etc/kubernetes/admin.conf 文件的机器上执行以下命令:

    1. kubectl edit no <node-name>

    这一命令会打开一个文本编辑器,供你在其中编辑 Node 对象。 要选择不同的文本编辑器,你可以设置 KUBE_EDITOR 环境变量。

    • 注意新的 CRI 套接字路径必须带有 unix:// 前缀。

    • 保存文本编辑器中所作的修改,这会更新 Node 对象。

    重启 kubelet

    运行 kubectl get nodes -o wide,containerd 会显示为我们所更改的节点上的运行时。

    Note: This section links to third party projects that provide functionality required by Kubernetes. The Kubernetes project authors aren’t responsible for these projects, which are listed alphabetically. To add a project to this list, read the before submitting a change. More information.

    最后,在一切顺利时删除 Docker。

    1. sudo yum remove docker-ce docker-ce-cli

      Items on this page refer to third party products or projects that provide functionality required by Kubernetes. The Kubernetes project authors aren’t responsible for those third-party products or projects. See the for more details.

      You should read the content guide before proposing a change that adds an extra third-party link.