当前位置: 首页 > news >正文

Kubernetes 弃用Docker后 Kubelet切换到Containerd

containerd 是一个高级容器运行时,又名 容器管理器。简单来说,它是一个守护进程,在单个主机上管理完整的容器生命周期:创建、启动、停止容器、拉取和存储镜像、配置挂载、网络等。

containerd 旨在轻松嵌入到更大的系统中。Docker 在底层使用 containerd 来运行容器Kubernetes 可以通过 CRI 使用 containerd 来管理单个节点上的容器。

Kubernetes 从 v1.20 开始弃用 Docker,并推荐用户切换到基于容器运行时接口(CRI)的容器引擎,如 containerd、cri-o 等。

ctr 是作为 containerd 项目的一部分提供的命令行客户端。如果您在机器上运行了 containerd,则 ctr 二进制文件很可能也在那里。 

如果你使用了云服务商提供的托管 Kubernetes 服务,那你不用担心,像 GKE、AKS 等云服务商都已经在新版集群中把默认的运行时切换到 containerd 。

 那对于那些自管的集群,又如何把容器运行时从 Docker 切换到 Containerd 呢?

切换容器运行时的方法:

首先,标记节点为维护模式,并驱逐其上正在运行的 Pod,避免切换过程中影响应用的正常运行: 

kubectl cordon <node-name>
kubectl drain <node-name> --ignore-daemonsets

然后以 root 用户登录到 Node 上面,停止 docker 和 kubelet:

因为我们安装的 Docker 默认安装使用了 containerd 作为后端的容器运行时,所以不需要单独安装 containerd 了,当然你也可以将 Docker 和 containerd 完全卸载掉,然后重新安装,这里我们选择直接使用之前安装的 containerd。

systemctl stop kubelet

systemctl disable docker.service 

因为 containerd 中默认已经实现了 CRI,但是是以 plugin 的形式配置的,以前 Docker 中自带的 containerd 默认是将 CRI 这个插件禁用掉了的(使用配置 disabled_plugins = ["cri"]),所以这里我们重新生成默认的配置文件来覆盖掉。 

接下来,生成 containerd 配置文件:

mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml 

由于国内环境无法访问 GCR,需要修改默认 pause 镜像为国内可以访问的地址,比如替换为 MCR:

...
[plugins."io.containerd.grpc.v1.cri"]
  sandbox_image = "mcr.microsoft.com/oss/kubernetes/pause:1.3.1"
... 

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

接下来,打开 /etc/default/kubelet,修改 kubelet 启动选项,配置容器运行时为 containerd:

接下来修改 kubelet 配置,将容器运行时配置为 containerd,打开 /etc/sysconfig/kubelet 文件,在该文件中可以添加一些额外的 kubelet 启动参数,配置如下所示: 

KUBELET_FLAGS=... --container-runtime=remote  --container-runtime-endpoint=unix:///run/containerd/containerd.sock 

上面的配置中我们增加了两个参数,--container-runtime 参数是用来指定使用的容器运行时的,可选值为 docker 或者 remote,默认是 docker,由于我们这里使用的是 containerd 这种容器运行时,所以配置为 remote 值(也就是除 docker 之外的容器运行时都应该指定为 remote)。

然后第二个参数 --container-runtime-endpoint 是用来指定远程的运行时服务的 endpiont 地址的,在 Linux 系统中一般都是使用 unix 套接字的形式,比如这里我们就是指定连接 containerd 的套接字地址 unix:///run/containerd/containerd.sock

其实还应该配置一个 --image-service-endpoint 参数用来指定远程 CRI 的镜像服务地址,如果没有指定则默认使用 --container-runtime-endpoint 的值了,因为 CRI 都会实现容器和镜像服务的。

配置完成后重启 containerd 和 kubelet 即可:

systemctl daemon-reload
systemctl restart containerd
systemctl restart kubelet 

最后,退出 Node,使用 kubectl 命令验证节点的容器运行时:

# kubectl get node <node-name> -o wide
NAME          STATUS   ROLES   AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION     CONTAINER-RUNTIME
<node-name>   Ready    agent   13d   v1.18.2   10.241.0.21   <none>        Ubuntu 18.04.5 LTS   5.4.0-1039  containerd://1.4.3 

可以发现,容器运行时已经切换到了 containerd,其版本为 1.4.3。最后,把节点重新加回集群中:

kubectl uncordon <node-name>

 对其他的节点重复以上步骤,就可以把集群的 docker 替换成 containerd。

相关文章:

Kubernetes 弃用Docker后 Kubelet切换到Containerd

containerd 是一个高级容器运行时&#xff0c;又名 容器管理器。简单来说&#xff0c;它是一个守护进程&#xff0c;在单个主机上管理完整的容器生命周期&#xff1a;创建、启动、停止容器、拉取和存储镜像、配置挂载、网络等。 containerd 旨在轻松嵌入到更大的系统中。Docke…...

函数模板含有多个模板参数

如果一个模板接受多个参数&#xff0c;用逗号分隔参数。 使用时必要情况下需要主动传入模板参数。 #include <iostream> #include <vector>/* Compute the greatest common divisor of two integers, using Euclids algorithm. */ template<class T, class U&g…...

Sprd Android 13 增加系统属性判断当前有无 OTG U盘插入,App 读取系统属性

添加系统属性,通过监听插拔广播判断当前有无OTG U盘插入 --- a/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -246,6 +246,7 @@ …...

第11章 数据库技术(第一部分)

一、数据库技术术语 &#xff08;一&#xff09;术语 1、数据 数据描述事物的符号描述一个对象所用的标识&#xff0c;可以文字、图形、图像、语言等等 2、信息 现实世界对事物状态变化的反馈。可感知、可存储、可加工、可再生。数据是信息的表现形式和载体&#xff0c;信…...

数据结构––队列

1.队列的定义 2.队列的分类 2.1循环队 2.2链式队 3.队列的实现 3.1循环队 3.1.1声明 typedef int QDataType; #define MAXSIZE 50 //定义元素的最大个数 /*循环队列的顺序存储结构*/ typedef struct {QDataType *data;int front; //头指针int rear; //尾指针 }Queue;…...

010_redhat安装zookeeper

目录 1.环境准备2.下载上传zookeeper安装包1)[官网下载zookeeper-3.6.4安装包](https://archive.apache.org/dist/zookeeper/zookeeper-3.6.4/apache-zookeeper-3.6.4-bin.tar.gz)2)创建soft文件夹 3.解压4.配置启动1、配置zoo.cfg2、启动zookeeper 小结 1.环境准备 准备一台l…...

【网络】gateway 可以提供的一些功能之一 “ 提供web静态资源服务 ”

gateway 可以提供的一些功能之一 “ 提供web静态资源服务 ” 一、提供web静态资源服务1.1、web静态资源服务是什么1.2、web静态资源服务有什么作用1.3、web静态资源服务怎么实现 二、提供Restful服务器路由转发三、支持Eureka服务发现四、服务检查五、灰度发布 一、提供web静态…...

MySQL第一次作业

解压完安装包 以管理员进入命令行 初始化并记住初始随机密码 创建服务名称 启动mysql 使用随机密码登录 修改密码 退出并重登服务器 MySQL创建数据库和表 创建数据库 创建表 1.进入数据库 创建表 向表中插入数据...

详解LLMOps,将DevOps用于大语言模型开发

大家好&#xff0c;在机器学习领域&#xff0c;随着技术的不断发展&#xff0c;将大型语言模型&#xff08;LLMs&#xff09;集成到商业产品中已成为一种趋势&#xff0c;同时也带来了许多挑战。为了有效应对这些挑战&#xff0c;数据科学家们转向了一种新型的DevOps实践LLM-OP…...

牛客NC275 和为S的两个数字【简单 map C++/Java/Go/PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/390da4f7a00f44bea7c2f3d19491311b 思路 map参考答案C #include <vector> class Solution {public:vector<int> FindNumbersWithSum(vector<int> array, int sum) {vector<int> ans;m…...

ax200/ax201/ax210/ax211/ax411等intel网卡无法开启5G热点问题解决方案汇总

目录 故障原因解决方案windowslinuxkernel < 5.5kernel > 5.5方案1 修改linux内核模块代码&#xff08;iwlwifi内核模块&#xff09;&#xff0c;重新编译内核模块并重新导入方案2 修改hostapd代码 最后更新于2024.04.28 故障原因 根本原因是因为英特尔在内核中开启了LA…...

JVM的垃圾回收机制(GC机制)

在Java代码运行的过程中&#xff0c;JVM发现 某些资源不需要再使用的时候&#xff0c;就会自动把资源所占的内存给回收掉&#xff0c;就不需要程序员自行操作了。“自动回收资源”就是JVM的“垃圾回收机制”&#xff0c;“垃圾回收机制”也称"GC机制"。 对于Java代码…...

分布式光伏管理系统和一般的光伏管理系统相比有什么区别?

随着全球对可再生能源的关注度日益提高&#xff0c;光伏技术作为其中的佼佼者&#xff0c;已经得到了广泛的应用。在光伏技术中&#xff0c;管理系统扮演着至关重要的角色&#xff0c;它关乎着光伏电站的运行效率、能源产出以及运维成本等多个方面。其中&#xff0c;分布式光伏…...

Linux migrate_type进一步探索

文章接着上回Linux migrate_type初步探索 1、物理页面添加到buddy系统 我们都知道物理内存一开始是由memblock进行分配管理&#xff0c;后面会切换到buddy系统管理。那么接下来我们看一下&#xff0c;memblock管理的物理页面是怎么添加到buddy系统中的。 start_kernel() -&g…...

强化学习:时序差分法【Temporal Difference Methods】

强化学习笔记 主要基于b站西湖大学赵世钰老师的【强化学习的数学原理】课程&#xff0c;个人觉得赵老师的课件深入浅出&#xff0c;很适合入门. 第一章 强化学习基本概念 第二章 贝尔曼方程 第三章 贝尔曼最优方程 第四章 值迭代和策略迭代 第五章 强化学习实例分析:GridWorld…...

数据结构-二叉树-二叉搜索树

一、概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者具有以下性质的二叉树&#xff1a; 若它的左子树不为空&#xff0c;则左树上所有节点的值都小于根节点的值。 若它的右子树不为空&#xff0c;则右子树上所有节点的值都大于根节点的值。 它…...

Linux 磁盘管理命令df du dd

文章目录 3.Linux 磁盘管理命令3.1 df&#xff1a;显示报告文件系统磁盘使用信息案例练习 3.2 du&#xff1a;显示目录或者文件所占的磁盘空间案例练习 3.3 dd&#xff1a;磁盘操作案例练习 3.Linux 磁盘管理命令 3.1 df&#xff1a;显示报告文件系统磁盘使用信息 作用&#x…...

Leetcode 3138. Minimum Length of Anagram Concatenation

Leetcode 3138. Minimum Length of Anagram Concatenation 1. 解题思路2. 代码实现 题目链接&#xff1a;3138. Minimum Length of Anagram Concatenation 1. 解题思路 这一题的话我们首先统计出来所有的字母出现的频率。 然后&#xff0c;我们只需要从头开始重新计数一下&…...

IT廉连看——UniApp——样式绑定

IT廉连看——UniApp——样式绑定 一、样式绑定 两种添加样式的方法&#xff1a; 1、第一种写法 写一个class属性&#xff0c;然后将css样式写在style中。 2、第二种写法 直接把style写在class后面 添加一些效果&#xff1a;字体大小 查看效果 证明这样添加样式是没有问题的…...

垃圾的flinkcdc

在 MySQL 中&#xff0c;创建表时使用反引号 将表名或字段名括起来的作用是&#xff1a; 保留字和关键字: 使用反引号可以避免使用MySQL的保留字和关键字作为表名或字段名时产生的冲突。比如&#xff0c;你可以创建一个名为 select 或 order 的表&#xff1a; sqlCopy Code C…...

Unity 2023 + VS 2022 保姆级安装配置指南(含国内官网访问与许可证激活避坑)

Unity 2023 VS 2022 一站式开发环境配置实战手册 第一次打开Unity Hub时&#xff0c;那个旋转的立方体logo让我想起五年前自己踩过的坑——当时因为许可证激活失败&#xff0c;整整三天没能写出一行代码。这份手册将用我亲自验证过的方法&#xff0c;带您绕过所有常见陷阱&…...

别再踩坑了!Win10下从零编译Mamba-SSM 2.2.2的保姆级避坑指南(含修改好的源码包)

Win10平台Mamba-SSM 2.2.2终极编译指南&#xff1a;避开90%开发者踩过的坑 在深度学习领域&#xff0c;Mamba-SSM因其高效的状态空间模型架构而备受关注。然而&#xff0c;当开发者们兴冲冲地想在Windows 10平台上搭建这一环境时&#xff0c;往往会遭遇各种"玄学报错"…...

使用Yolo 11进行定制化图像识别全流程

全流程预览 Label Studio标注 → 导出YOLO格式 → 编写data.yaml → 拆分数据集 → 模型训练 → 预测部署步骤工具/技术产出物数据标注Label Studio标注好的图片数据导出YOLO with imagesimages/ labels/配置文件data.yaml数据集配置数据拆分Python脚本train/val/test模型训练…...

告别误报!用FR2V H00磁通门传感器搞定充电桩直流漏电检测(附IEC 62955标准解读)

破解充电桩直流漏电检测难题&#xff1a;FR2V H00磁通门传感器的工程实践 800V高压快充技术正在重塑电动汽车充电体验&#xff0c;但随之而来的直流漏电检测难题却让不少工程师夜不能寐。想象一下&#xff0c;一个价值百万的充电桩因为误报停机&#xff0c;或者更糟——漏报导致…...

CVPR2025新星DehazeXL:开源8K去雾数据集与可解释归因图,高分辨率图像处理新范式

1. 高分辨率图像去雾的痛点与DehazeXL的突破 第一次处理8K航拍图像时&#xff0c;我盯着显存不足的报错信息愣了半天——当时用的某知名去雾模型&#xff0c;光是加载81928192的图片就吃掉了48GB显存。这其实是高分辨率图像处理领域的普遍困境&#xff1a;传统方法要么被迫降采…...

嵌入式系统中void指针与函数指针的高级应用

void指针与函数指针在嵌入式系统中的高级应用1. void指针的工程应用1.1 void指针的本质特性void指针(void*)在C语言中表示一个"不知道类型"的指针变量&#xff0c;其核心特性在于&#xff1a;int nums[] {3, 5, 6, 7, 9}; void* ptr1 nums; int* ptr2 (int*)nums;…...

SAM-Veteran拆解:多任务强化学习(GRPO)如何教会MLLM“见好就收”?

SAM-Veteran技术解析&#xff1a;多任务强化学习如何赋予MLLM智能决策能力 当你在Photoshop中用魔棒工具选择某个区域时&#xff0c;是否经历过反复点击"增加选区"却始终无法精准捕捉边缘的挫败感&#xff1f;这种"永远在修正"的困境正是计算机视觉领域长期…...

【开题答辩全过程】以 校园超市购物系统为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…...

YOLOv9官方镜像快速入门:三步完成图片检测,支持自定义数据集训练

YOLOv9官方镜像快速入门&#xff1a;三步完成图片检测&#xff0c;支持自定义数据集训练 1. 环境准备与快速部署 YOLOv9官方训练与推理镜像已经预装了完整的深度学习开发环境&#xff0c;包含所有必要的依赖项。这意味着你不需要手动安装Python、CUDA或PyTorch&#xff0c;也…...

Jaspersoft Studio 动态字体颜色设置实战指南

1. 为什么需要动态字体颜色&#xff1f; 在报表开发中&#xff0c;数据可视化是提升信息传达效率的关键手段。想象一下&#xff0c;当你的老板查看月度销售报表时&#xff0c;如果所有数字都是千篇一律的黑色&#xff0c;他需要花费多少时间才能找到异常数据&#xff1f;而如果…...