官网地址:https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/migrating-from-dockershim/migrate-dockershim-dockerd/

  • 你期望不再使用 dockershim,但仍然使用 Docker Engine 来在 Kubernetes 中运行容器。
  • 你希望升级到 Kubernetes v1.24 且你的现有集群依赖于 dockershim, 因此你必须放弃 dockershim,而 cri-dockerd 是你的一种选项。

在 Kubernetes v1.24 及更早版本中,你可以在 Kubernetes 中使用 Docker Engine, 依赖于一个称作 dockershim 的内置 Kubernetes 组件。

dockershim 组件在 Kubernetes v1.24 发行版本中已被移除;不过,一种来自第三方的替代品, cri-dockerd 是可供使用的。

cri-dockerd 适配器允许你通过 容器运行时接口(Container Runtime Interface,CRI) 来使用 Docker Engine。

意味着在k8s 1.24版本以上也能继续使用Docker Engine,只不过需要把原先的dockershim替换成cri-dockerd。

如果你想要迁移到 cri-dockerd 以便继续使用 Docker Engine 作为你的容器运行时, 你需要在所有被影响的节点上执行以下操作:

  • 安装 cri-dockerd;
  • 隔离(Cordon)并腾空(Drain)该节点;
  • 配置 kubelet 使用 cri-dockerd;
  • 重新启动 kubelet;
  • 验证节点处于健康状态。

准备开始

1.安装了 cri-dockerd 并且该服务已经在各节点上启动; 地址:https://github.com/mirantis/cri-dockerd#build-and-install

2. 一个网络插件。地址:https://kubernetes.io/zh/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/

隔离并腾空节点

# 隔离节点,阻止新的 Pod 被调度到节点上,将 <NODE_NAME> 替换为节点名称。
kubectl cordon <NODE_NAME> 腾空节点以安全地逐出所有运行中的 Pod:
kubectl drain <NODE_NAME> --ignore-daemonsets

配置 kubelet 使用 cri-dockerd

下面的步骤适用于用 kubeadm 工具安装的集群。如果你使用不同的工具, 你需要使用针对该工具的配置指令来修改 kubelet。

1.在每个被影响的节点上,打开 /var/lib/kubelet/kubeadm-flags.env 文件;

2.将 --container-runtime-endpoint 标志,将其设置为 unix:///var/run/cri-dockerd.sock

kubeadm 工具将节点上的套接字存储为控制面上 Node 对象的注解。 要为每个被影响的节点更改此套接字:

1.编辑 Node 对象的 YAML 表示:

KUBECONFIG=/path/to/admin.conf kubectl edit no <NODE_NAME>

根据下面的说明执行替换:

  • /path/to/admin.conf:指向 kubectl 配置文件 admin.conf 的路径;
  • <NODE_NAME>:你要修改的节点的名称。

2.将 kubeadm.alpha.kubernetes.io/cri-socket 标志从 /var/run/dockershim.sock 更改为 unix:///var/run/cri-dockerd.sock

3.保存所作更改。保存时,Node 对象被更新

重启 kubelet

systemctl restart kubelet

验证节点处于健康状态

要检查节点是否在使用 cri-dockerd 端点, 按照找出你所使用的运行时页面所给的指令操作。 kubelet 的 --container-runtime-endpoint 标志取值应该是 unix:///var/run/cri-dockerd.sock

解除节点隔离

kubectl uncordon <NODE_NAME>

将 Docker Engine 节点从 dockershim 迁移到 cri-dockerd的更多相关文章

  1. 使用kubeoperator安装的k8s 版本1.20.14 将节点上的容器运行时从 Docker Engine 改为 containerd

    官方文档:https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/migrating-from-dockershim/change-runt ...

  2. Centos7安装Docker Engine

    一.先决条件 首选需要一个64位操作系统和3.10或者更版本的内核. 查看当前内核版本: $ uname -r -.el7.x86_64 二.yum安装Docker Engine 安装Docker E ...

  3. Docker小记 — Docker Engine

    前言 用了Docker方才觉得生产环境终于有了他该有的样子,就像集装箱普及之后大型货轮的价值才逐渐体现出来,Docker详细说明可查阅"官方文档".本篇为Docker Engine ...

  4. Docker 小记 — Docker Engine

    前言 用了 Docker 方才觉得生产环境终于有了他该有的样子,就像集装箱普及之后大型货轮的价值才逐渐体现出来,Docker 详细说明可查阅"官方文档".本篇为 Docker En ...

  5. Docker Engine SDKs and API 的开发2

    Examples using the Docker Engine SDKs and Docker API After you install Docker, you can install the G ...

  6. Docker Engine SDKs and API 的开发1

    Develop with Docker Engine SDKs and API Docker provides an API for interacting with the Docker daemo ...

  7. Docker Machine 和 Docker Engine 的区别

    Docker Engine 当人们提到 Docker,一般而言,大家说的是 Docker Engine,如下图:  它是一个 client-server application. Docker Eng ...

  8. Get Docker Engine - Community for Ubuntu

    Get Docker Engine - Community for Ubuntu Uninstall old versions$ sudo apt-get remove docker docker-e ...

  9. 将集群WEB节点静态数据迁移到共享存储器(LNMP环境)

    系统版本:Centos 6.5 机器及IP规划如下: 192.168.0.117  MySQL 192.168.0.118  nginx+php 192.168.0.123  nfs ①在NFS机器上 ...

随机推荐

  1. JsonPath:针对json的强大的规则解析与参数查找工具

    项目特点 GitHub项目地址:https://github.com/json-path/JsonPath 主要功能: 将Json字符串转为Java Map对象(这个不算什么,FastJson之类的工 ...

  2. 用cmd命令进行磁盘清理(主要是系统盘)

    作用:清理磁盘(主要是系统盘)中不需要的垃圾文件操作方法: 第一步:Windows键+R键 调出cmd命令窗口(窗口图如下:) 第二步:输入框中输入cmd命令,按下Enter键,进入如下图界面: 第三 ...

  3. VIM学习笔记-1

    VIM vim主要分为3个模式: Normal 模式 Insert模式 command模式 Insert 模式就是普通的编辑模式,没有太多可以介绍的,vim的主要功能都在 Normal 模式和 Com ...

  4. Kubernetes组件介绍

    一.api-server   基本概念 该端口默认值为6443,可通过启动参数"--secure-port"的值来修改默认值. 默认IP地址为非本地(Non-Localhost)网 ...

  5. 求广义表深度(严5.30)--------西工大noj

    #include <stdio.h> #include <stdlib.h> #include <string.h> typedef enum{ATOM, LIST ...

  6. Rails_via牛客网

    题目 链接:https://ac.nowcoder.com/acm/contest/28537/D 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言 ...

  7. static关键字和代码块

    static关键字 static修饰的变量称为静态变量/共享变量/类变量 用于修饰类的成员,如成员变量.成员方法以及代码块等,内static修饰的成员具备一些特殊性 1.静态变量 在java类中使用s ...

  8. 2537-springsecurity系列--关于session的管理2-session缓存和共享

    版本信息 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring ...

  9. JavaWeb--HTTP与Maven

    前言 Java Web 其实就是一个技术的总和,把Web看成一个容器而已主要使用JavaEE技术来实现.在加上各种中间件. 整个javaWeb阶段的内容通过实际的案例贯穿学习, 所涉及到的技术知识点会 ...

  10. Win10环境前后端分离项目基于Vue.js+Django+Python3实现微信(wechat)扫码支付流程(2021年最新攻略)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_182 之前的一篇文章:mpvue1.0+python3.7+Django2.0.4实现微信小程序的支付功能,主要介绍了微信小程序内 ...