跨境派

跨境派

跨境派,专注跨境行业新闻资讯、跨境电商知识分享!

当前位置:首页 > 工具系统 > 广告工具 > 安装 k8s集群的问题:默认容器运行时从 Docker 改为 Containerd

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

时间:2024-04-13 13:20:30 来源:网络cs 作者:胡椒 栏目:广告工具 阅读:

标签: 运行  容器  默认  安装 

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

1、背景2、容器运行时从 Docker 改为 Containerd2.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 <<EOFruntime-endpoint: unix:///run/containerd/containerd.sockimage-endpoint: unix:///run/containerd/containerd.sockEOF

/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💖点点关注,收藏不迷路💖

本文链接:https://www.kjpai.cn/news/2024-04-13/158066.html,文章来源:网络cs,作者:胡椒,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

文章评论