Kubernetes 1.24 版弃用 Dockershim 后如何迁移到 containerd 和 CRI-O

news2024/9/17 7:16:14

在本系列的上一篇文章中,我们讨论了什么是 CRI 和 OCI,Docker、containerd、CRI-O 之间的区别以及它们的架构等。最近,我们得知 Docker 即将从 kubernetes 中弃用!(查看 kubernetes 官方的这篇文章)那么让我们更深入地谈谈为什么会这样?

为什么从 K8s 1.24 开始 dokershim 被弃用了?

在 1.24 版中,Kubernetes 将不再支持 Docker 作为容器运行时。Docker 正在逐步淘汰,取而代之的是使用为 Kubernetes 构建的容器运行时接口 (CRI) 的运行时。如果您是 Kubernetes 最终用户,您不会注意到太大的差异。这并不意味着 Docker 已死,也不意味着您不能或不应该将其用作开发工具。Docker 仍然是创建容器的有用工具,并且由其生成的映像可docker build用于您的 Kubernetes 集群。如果您希望创建集群,则必须进行某些调整以避免集群故障。由于 Docker 将从 K8s 1.24 开始弃用,因此您必须过渡到其他兼容的容器运行时之一,例如 containerd 或 CRI-O。只需确保您选择的运行时支持 Docker 守护程序的当前设置(例如日志记录)。

人们听到这个消息时为什么会惊慌失措?

正在考虑两种环境,这会引起一些混乱。Kubernetes 集群中有一个称为容器运行时的组件,负责获取和运行容器映像。尽管 Docker 是该运行时的流行选择,但它并不打算集成到 Kubernetes 中,这会带来问题。

将来还会使用 Dockerfiles 吗?

此修改适用于在不同环境中使用 Docker 的开发人员。Kubernetes 集群内的 Docker 运行时独立于开发 Docker 安装。Docker 在修改之前的所有方面对开发人员仍然很有价值。Docker 生成 OCI(开放容器计划)镜像,它并不是真正特定于 Docker 的镜像。无论使用何种工具创建,Kubernetes 都会以相同的方式对待任何符合 OCI 标准的镜像。containerd 和 CRI-O 都能够提取和运行此类镜像。

如何从 Docker 切换到 containerd 和 CRI-O?

步骤 1:Cordon 和 Drain 节点

$ kubectl cordon <Node name>
$ kubectl drain <Node Name> --ignore-daemonsets

第 2 步:停止服务

$ systemctl stop kubelet
$ systemctl stop docker

步骤 3:删除 Docker(可选):

apt purge docker-ce docker-ce-cli

或者

yum remove docker-ce docker-ce-cli

一、从 Docker 迁移到 containerd

步骤 4:配置 containerd

禁用 /etc/containerd/config.toml 中的 disabled_plugins 行以启用 CRI 接口。

#disabled_plugins = ["cri"]

注意:如果还没有默认的 containerd 配置文件,您可以创建一个新的:

containerd config default > /etc/containerd/config.toml

然后重新启动containerd:

systemctl restart containerd

步骤 5:更改运行时 在 /var/lib/kubelet/kubeadm-flags.env 中添加这 2 个 containerd 运行时标志:

--container-runtime=remote 
--container-runtimeendpoint=unix:///run/containerd/containerd.sock"

步骤 6:现在可以启动 kubelet

systemctl start kubelet

步骤 7:测试您的 containerd 运行时

kubectl get nodes -o wide

现在你可以解除你的节点的封锁:

kubectl uncordon <Node>

您已经完成了!

二、从 Docker 迁移到 CRI-O

接着上面第三步开始

步骤 4:CRI-O 存储库和安装

$ add-apt-repository ppa:projectatomic/ppa
$ apt update
$ apt install -y cri-o-1.15

步骤 5:配置 CRI-O 和内核 创建文件99-kubernetes-crio.conf

vi /etc/sysctl.d/99-kubernetes-crio.conf

并添加以下几行:

net.bridge.bridge-nf-call-iptables  = 1
net.ipv4.ip_forward                 = 1
net.bridge.bridge-nf-call-ip6tables = 1

将更改应用到内核:

sysctl -a

验证crio.conf并编辑cri-o以使用 Docker 注册表

打开文件crio.conf

vim /etc/crio/crio.conf

检查配置中 conmon 的路径是否准确;如果不准确,请运行以下命令:

which conmon

将输出添加到crio.conf文件

# Path to the conmon binary, used for monitoring the OCI runtime.
conmon = "/usr/bin/conmon"

还要确保“注册表”选项被注释掉

registries = [
        "quay.io",
        "docker.io",
]

步骤 6:现在您可以启动 CRI-O

$ systemctl enable crio
$ systemctl start crio

步骤 7:配置并启动 kubelet 编辑vi /etc/default/kubelet,它看​​起来应该像这样:

KUBELET_EXTRA_ARGS=--feature-gates="AllAlpha=false" --container-runtime=remote --cgroup-driver=systemd --container-runtime-endpoint='unix:///var/run/crio/crio.sock' --runtime-request-timeout=5m

然后启动 kubelet:

systemctl start kubelet

步骤 8:现在您可以取消封锁您的节点:

kubectl uncordon <Node>

您已经完成了!

概括

最后,我想补充一点,Docker 从 Kubernetes 中被弃用并不意味着您不能使用 Docker。这只是意味着 Docker 将不再被用作 Kubernetes 中的默认引擎,这完全取决于您在选择特定容器运行时时的需求,因为它们每个都有自己的优点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1937612.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot实现接口请求日志自动生成(日志自动埋点)

文章目录 1.作用&#xff1a;2.原理&#xff1a;3.代码&#xff1a;一.config层二. mq层 &#xff1a;三.service层&#xff1a; 4.效果图5.声明 1.作用&#xff1a; springboot接口请求日志自动生成&#xff0c;实现接口日志自动埋点生成 1.统一日志生成格式;—方便查看 2.汇…

day2 数组

977.有序数组的平方 有负数。暴力快排&#xff1a;先对每个元素平方 o(n)&#xff0c;再快排o&#xff08;nlogn&#xff09;&#xff08;先分区 o(n)&#xff0c;再递归排序 递归深度 logn&#xff09; class Solution:def sortedSquares(self, nums: List[int]) -> List…

控制欲过强的Linux小进程

控制欲强?视奸&#xff1f;普通人那才叫视奸&#xff0c;您是皇帝&#xff0c;天下大事无一逃过您的耳目&#xff0c;您想看什么就看什么&#xff0c;臣怀疑他在朋友圈私养兵士&#xff0c;囤积枪甲&#xff0c;蓄意谋反&#xff0c;图谋皇位啊&#xff01; 哈哈哈哈开个玩笑&…

C++ 类和对象 构造函数(下)

一 初始化列表&#xff1a; 1.1 构造函数体赋值&#xff1a; 在C中&#xff0c;构造函数用于创建对象并赋予其初始值。通常&#xff0c;我们可以在构造函数体内对成员变量进行赋值&#xff1a; class Date { public:Date(int year, int month, int day) {_year year;_mont…

常见的数据分析用例 —— 信用卡交易欺诈检测

文章目录 引言数据集分析1. 读入数据并快速浏览2.计算欺诈交易占数据集中交易总数的百分比3. 类别不平衡对模型的影响3.1 总体思路&#xff08;1&#xff09;数据的划分&#xff08;2&#xff09;训练模型&#xff08;3&#xff09;测试模型&#xff08;4&#xff09;解决不平衡…

知迪科技发布了全新软件产品

近日&#xff0c;知迪科技发布了全新软件产品——Vehicle Bus Tool-Trace Version免费版。该软件产品能高效的离线分析汽车总线数据&#xff0c;并拥有一大亮点功能&#xff1a;Ethernet通信离线文件基于ARXML文件的信号级解析&#xff0c;具体操作如下&#xff1a; 1、新建一…

git修改提交姓名

git config --global user.name “新用户名” git config --global user.email “新邮箱地址” 修改提交的用户名 git config --global user.name “yu***”

java转义文本中的HTML字符为安全的字

java转义文本中的HTML字符为安全的字 &#xff0c;以下字符被转义&#xff1a;替换为 (&apos; doesnt work in HTML4) " 替换为 &quot; & 替换为 &amp; < 替换为 < > 替换为 >1.先添加hutool依赖到pom <dependency><groupId>cn…

Docker安装笔记

1. Mac安装Docker 1.1 Docker安装包下载 1.1.1 阿里云 对于10.10.3以下的用户 推荐使用 对于10.10.3以上的用户 推荐使用 1.1.2 官网下载 系统和芯片选择适合自己的安装包 1.2 镜像加速 【推荐】阿里镜像 登陆后&#xff0c;左侧菜单选中镜像加速器就可以看到你的专属地…

阿尔泰科技利用485模块搭建自动灌溉系统实现远程控制

自动灌溉系统又叫土壤墒情监控系统&#xff0c;土壤墒情监控系统主要实现固定站无人值守情况下的土壤墒情数据的自动采集和无线传输&#xff0c;数据在监控中心自动接收入库&#xff1b;可以实现24小时连续在线监控并将监控数据通过有线、无线等传输方式实时传输到监控中心生成…

怎样在 PostgreSQL 中实现数据的异地备份?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 怎样在 PostgreSQL 中实现数据的异地备份&#xff1f;一、异地备份的重要性二、PostgreSQL 中的备份方…

Docker的安装【虚拟机】

Docker的安装【虚拟机】 准备环节【可跳过】 # 进入yum.repos.d目录&#xff0c;保留base.repo 和 CentOs-Base.repo&#xff0c;其余删除 cd /etc/yum.repos.d/ ----------------------------------------------------- # 现将base.repo 和 CentOs-Base.repo 存放至bak包中 …

SQL执行流程、SQL执行计划、SQL优化

select查询语句 select查询语句中join连接是如何工作的&#xff1f; 1、INNER JOIN 返回两个表中的匹配行。 2、LEFT JOIN 返回左表中的所有记录以及右表中的匹配记录。 3、RIGHT JOIN 返回右表中的所有记录以及左表中的匹配记录。 4、FULL OUTER JOIN 返回左侧或右侧表中有匹…

深度洞察市场需求,Vatee万腾平台定制化解决方案引领潮流

在当今这个日新月异的商业环境中&#xff0c;深刻理解并精准把握市场需求&#xff0c;已成为企业生存与发展的核心要义。Vatee万腾平台&#xff0c;作为行业内的佼佼者&#xff0c;凭借其卓越的定制化解决方案能力&#xff0c;正引领着市场潮流&#xff0c;为企业客户量身打造数…

【BUG】已解决:AttributeError: ‘DataFrame‘ object has no attribute ‘append‘

已解决&#xff1a;AttributeError: ‘DataFrame‘ object has no attribute ‘append‘ 目录 已解决&#xff1a;AttributeError: ‘DataFrame‘ object has no attribute ‘append‘ 【常见模块错误】 错误原因&#xff1a; 解决办法&#xff1a; 欢迎来到英杰社区https:/…

Linux—KVM虚拟化中(虚拟机克隆,快照,还原,删除)等应用实例

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f427;Linux基础知识(初学)&#xff1a;点击&#xff01; &#x1f427;Linux高级管理防护和群集专栏&#xff1a;点击&#xff01; &#x1f510;Linux中firewalld防火墙&#xff1a;点击&#xff01; ⏰️创作…

【数据结构初阶】顺序表三道经典算法题(详解+图例)

Hello&#xff01;很高兴又见到你了~~~ 看看今天要学点什么来充实大脑吧—— 目录 1、移除元素 【思路图解】 【总结】 2、删除有序数组中的重复项 【思路图解】 【总结】 3、合并两个有序数组 【思路图解】 【总结】 至此结束&#xff0c;Show Time&#xff01; 1、…

加拿大上市药品查询-加拿大药品数据库

在加拿大&#xff0c;药品的安全性、有效性和质量是受到严格监管的。根据《食品药品法案》的规定&#xff0c;所有药品制造商必须提供充分的科学证据&#xff0c;证明其产品的安全性和有效性。为此&#xff0c;加拿大卫生部建立了一个全面的药品数据库 &#xff08;DPD) &#…

Websocket自动消息回复服务端工具

点击下载《Websocket自动消息回复服务端工具》 1. 前言 在进行Websocket开发时&#xff0c;前端小伙伴通常是和后端开发人员同步进行项目开发&#xff0c;经常会遇到后端开发人员接口还没开发完&#xff0c;也没有可以调试的环境&#xff0c;只能按照接口文档进行“脑回路开发…

深入探究理解大型语言模型参数和内存需求

概述 大型语言模型 取得了显著进步。GPT-4、谷歌的 Gemini 和 Claude 3 等模型在功能和应用方面树立了新标准。这些模型不仅增强了文本生成和翻译&#xff0c;还在多模态处理方面开辟了新天地&#xff0c;将文本、图像、音频和视频输入结合起来&#xff0c;提供更全面的 AI 解…