安装 k8s集群的问题:默认容器运行时从 Docker 改为 Containerd

本文主要是介绍安装 k8s集群的问题:默认容器运行时从 Docker 改为 Containerd,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

安装 k8s集群的问题:默认容器运行时从 Docker 改为 Containerd

  • 1、背景
  • 2、容器运行时从 Docker 改为 Containerd
    • 2.1、安装 Containerd:
    • 2.2、生成 Containerd 的配置文件
    • 2.3 、创建 /etc/crictl.yaml 文件
    • 2.4 、配置 Containerd 服务开机自启


💖The Begin💖点点关注,收藏不迷路💖

1、背景

Kuberetes 1.20版本开始,Kuberetes官方已经将默认的容器运行时从Docker改为Containerd。

因此,从Kubernetes 1.20开始,Kuberetes官方将支持使用Docker和Containerd作为容器运时,也意味着Kubemetes从Docker的依赖中解耦了出来。

Kubernetes1.24及之后的版本中作为容器运行时已经被官方弃用,Containerd成为唯一推荐的容器运行时。

2、容器运行时从 Docker 改为 Containerd

装 Kubernetes 集群 时,默认容器运行时从 Docker 改为 Containerd 的流程如下:

2.1、安装 Containerd:

yum install -y containerd

2.2、生成 Containerd 的配置文件

1、创建一个目录用于存放 Containerd 的配置文件。

sudo mkdir -p /etc/containerd

2、将 Containerd 的默认配置写入到一个名为 config.toml 的文件中。你可以根据需要编辑这个文件,然后将其用作自定义的 Containerd 配置文件。

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

在这里插入图片描述

3、修改 /etc/containerd/config.toml 文件

需要将 SystemdCgroup=false 修改为 SystemdCgroup=true,以表示 Containerd 驱动程序将使用 Systemd 进行 Cgroup 管理。

在 Kubernetes 中,容器运行时需要与宿主机的 Cgroup 和 Namespace 进行交互,以管理容器的资源。对于 Cgroup 的驱动程序,Docker 和 Containerd 默认使用的都是 Cgroupfs,而 systemd-cgroup 则是 Systemd 对 Cgroup 的一个实现。

相比于 Cgroupfs,systemd-cgroup 在资源隔离方面提供了更好的性能和更多的特性。例如,systemd-cgroup 可以使用更多的内存压缩算法,以便更有效地使用内存。

此外,systemd-cgroup 还提供了更好的 Cgroup 监控和控制机制,可以更精确地调整容器的资源使用量。使用 systemd-cgroup 作为容器运行时的 Cgroup 驱动程序可以提高 Kubernetes 集群中容器的资源管理效率,从而提升整个集群的性能。

vi /etc/containerd/config.toml将 SystemdCgroup=false 修改为 SystemdCgroup=true

在这里插入图片描述

另外,将 sandbox_image 设置为阿里云镜像仓库中的 pause:3.7,是因为国内的网络可以访问阿里云镜像仓库。

在 Kubernetes 中,每个 Pod 中都有一个 pause 容器,这个容器不会运行任何应用,只是简单地休眠。它的作用是保证 Pod 中所有的容器共享同一个网络命名空间和 IPC 命名空间。

pause 容器会在 Pod 的初始化过程中首先启动,然后为 Pod 中的其他容器创建对应的网络和 IPC 命名空间,并且在其他容器启动之前保持运行状态,以保证其他容器可以加入共享的命名空间中。

简单来说,pause 容器就是一个占位符,它为 Pod 中的其他容器提供了一个共享的环境,使它们可以共享同一个网络和 IPC 命名空间。这也是 Kubernetes 实现容器间通信和网络隔离的重要机制之一。

vi /etc/containerd/config.toml将 sandbox_image="k8s.gcr.io/pause:3.6" 修改为 sandbox_image="registry.aliyuncs.com/google_containers/pause:3.7"

在这里插入图片描述

2.3 、创建 /etc/crictl.yaml 文件

cat >/etc/crictl.yaml <<EOF
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
EOF

/etc/crictl.yaml 文件是 crictl 工具的配置文件,用于指定与 Containerd 交互的相关设置。通过指定 runtime-endpoint 和 image-endpoint,可以告诉 crictl 使用 UNIX 域套接字的方式来连接 Containerd 的 API。

Containerd 提供了一个 Socket 文件 /run/containerd/containerd.sock,crictl 可以通过连接这个 Socket 文件与 Containerd 进行通信,从而实现对容器和镜像等操作的管理。

通过这种方式,crictl 可以方便地与 Containerd 进行交互,并执行各种容器操作,如创建、删除、查询容器等。

2.4 、配置 Containerd 服务开机自启

1、检查 Containerd 服务是否已启用自启动。
systemctl is-enabled containerd2、启用 Containerd 服务的自启动
systemctl enable containerd3、手动启动 Containerd 服务
systemctl start containerd4、查看 Containerd 服务的当前状态
systemctl status containerd

在这里插入图片描述


💖The End💖点点关注,收藏不迷路💖

这篇关于安装 k8s集群的问题:默认容器运行时从 Docker 改为 Containerd的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/892158

相关文章

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

mybatis和mybatis-plus设置值为null不起作用问题及解决

《mybatis和mybatis-plus设置值为null不起作用问题及解决》Mybatis-Plus的FieldStrategy主要用于控制新增、更新和查询时对空值的处理策略,通过配置不同的策略类型... 目录MyBATis-plusFieldStrategy作用FieldStrategy类型每种策略的作

linux下多个硬盘划分到同一挂载点问题

《linux下多个硬盘划分到同一挂载点问题》在Linux系统中,将多个硬盘划分到同一挂载点需要通过逻辑卷管理(LVM)来实现,首先,需要将物理存储设备(如硬盘分区)创建为物理卷,然后,将这些物理卷组成... 目录linux下多个硬盘划分到同一挂载点需要明确的几个概念硬盘插上默认的是非lvm总结Linux下多

Python Jupyter Notebook导包报错问题及解决

《PythonJupyterNotebook导包报错问题及解决》在conda环境中安装包后,JupyterNotebook导入时出现ImportError,可能是由于包版本不对应或版本太高,解决方... 目录问题解决方法重新安装Jupyter NoteBook 更改Kernel总结问题在conda上安装了

pip install jupyterlab失败的原因问题及探索

《pipinstalljupyterlab失败的原因问题及探索》在学习Yolo模型时,尝试安装JupyterLab但遇到错误,错误提示缺少Rust和Cargo编译环境,因为pywinpty包需要它... 目录背景问题解决方案总结背景最近在学习Yolo模型,然后其中要下载jupyter(有点LSVmu像一个

解决jupyterLab打开后出现Config option `template_path`not recognized by `ExporterCollapsibleHeadings`问题

《解决jupyterLab打开后出现Configoption`template_path`notrecognizedby`ExporterCollapsibleHeadings`问题》在Ju... 目录jupyterLab打开后出现“templandroidate_path”相关问题这是 tensorflo

如何解决Pycharm编辑内容时有光标的问题

《如何解决Pycharm编辑内容时有光标的问题》文章介绍了如何在PyCharm中配置VimEmulator插件,包括检查插件是否已安装、下载插件以及安装IdeaVim插件的步骤... 目录Pycharm编辑内容时有光标1.如果Vim Emulator前面有对勾2.www.chinasem.cn如果tools工

Python安装时常见报错以及解决方案

《Python安装时常见报错以及解决方案》:本文主要介绍在安装Python、配置环境变量、使用pip以及运行Python脚本时常见的错误及其解决方案,文中介绍的非常详细,需要的朋友可以参考下... 目录一、安装 python 时常见报错及解决方案(一)安装包下载失败(二)权限不足二、配置环境变量时常见报错及

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动