技术交流QQ群:①185473046   ②190706903   ③203744115   网站地图
登录

下次自动登录
现在的位置: 首页Kubernetes>正文
Linux下安装k8s容器运行时Containerd
2024年10月17日 Kubernetes 暂无评论 ⁄ 被围观 387次+

kubernetes从1.24开始,移除了Dockershim,需要在安装docker的基础上再安装cri-dockerd才能顺利运行Pod

kubernetes的容器运行时工具有以下几个

1、containerd

2、CRI-O

3、Docker Engine(使用 cri-dockerd)

容器运行时命令对比

从 Kubernetes 1.24 开始,官方强烈推荐使用 containerd 作为 Kubernetes 的容器运行时

原因包括:

更轻量级、性能更高

与 Kubernetes 原生集成良好,减少了中间层(如 Dockershim)

不过,如果你仍然想使用 Docker Engine,也可以通过安装 cri-dockerd 来继续使用 Docker 作为容器运行时

这里我们安装containerd

containerd简介:

1、Docker Engine里就包含了containerd,和原先包含在Docker Engine里containerd相比,独立的containerd将具有更多的功能,可以涵盖整个容器运行时管理的所有需求

2、containerd并不是直接面向最终用户的,而是主要用于集成到更上层的系统里,比如Swarm, Kubernetes, Mesos等容器编排系统

3、containerd以Daemon的形式运行在系统上,通过暴露底层的gRPC API,上层系统可以通过这些API管理机器上的容器

4、每个containerd只负责一台机器,Pull镜像,对容器的操作(启动、停止等),网络,存储都是由containerd完成

5、具体运行容器由runC负责,实际上只要是符合OCI规范的容器都可以支持

6、对于容器编排服务来说,运行时只需要使用containerd+runC,更加轻量,容易管理

官方网站:https://containerd.io

操作系统:AnolisOS-8.8-x86_64

一、使用yum源安装containerd

#配置阿里云yum源

wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#查看yum源中containerd软件

yum list | grep containerd

#使用yum命令安装

#实际上安装了2个包containerd.io和container-selinux

yum -y install containerd.io

#使用rpm -qa命令查看是否安装

rpm -qa | grep containerd

containerd.io-1.6.32-3.1.el8.x86_64

#拷贝配置文件并编辑

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

vi /etc/containerd/config.toml

disabled_plugins = [] #修改

sandbox_image = "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6" #修改

SystemdCgroup = true #修改

:wq! #保存退出

#设置containerd服务启动及开机自启动

systemctl daemon-reload

systemctl enable containerd

systemctl start containerd

systemctl restart containerd

#查看containerd服务启动状态

systemctl status containerd

#拉取pause镜像

ctr -n k8s.io images pull --platform=amd64 registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6

#验证可用性

使用ctr命令查看containerd客户端及服务端相关信息

ctr version

#拉取镜像

#containerd 默认使用 k8s.io 命名空间来存储 Kubernetes 相关的镜像

ctr -n k8s.io images pull --platform=amd64 docker.rainbond.cc/nginx:latest

#查看默认命名空间的镜像

ctr -n k8s.io images ls

#检测镜像

ctr images check

#修改镜像标签

ctr -n k8s.io i tag docker.rainbond.cc/nginx:latest nginx:latest

二、使用二进制方式安装containerd

Containerd有两种安装包:

第一种是containerd-xxx,不包含runc,需要单独安装,runc 是 containerd 的默认容器运行时

第二种是cri-containerd-cni-xxxx,包含runc和k8s里的所需要的相关文件,k8s集群里需要用到此包

建议安装cri-containerd-cni-xxxx

wget https://github.com/containerd/containerd/releases/download/v1.7.23/cri-containerd-1.7.23-linux-amd64.tar.gz

解压到根目录

tar -C / -zxf cri-containerd-1.7.23-linux-amd64.tar.gz

#生成配置文件并修改

mkdir -p /etc/containerd #创建配置文件目录

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

vi /etc/containerd/config.toml

disabled_plugins = [] #修改

sandbox_image = "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.8" #修改

SystemdCgroup = true #修改

:wq! #保存退出

systemctl daemon-reload

systemctl enable containerd

systemctl start containerd

systemctl restart containerd

systemctl status containerd

#拉取pause镜像

ctr -n k8s.io images pull --platform=amd64 registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.8

#查看版本信息

ctr version

安装runC

由于二进制包中的runC默认需要系统中安装seccomp支持,不同版本runC对seccomp版本要求不一样

建议单独下载runC 二进制包进行安装,里面包含了seccomp模块支持

wget https://github.com/opencontainers/runc/releases/download/v1.1.15/runc.amd64

mv runc.amd64 /usr/sbin/runc

chmod +x /usr/sbin/runc

runc -v #查看版本

三、安装containerd的命令行工具nerdctl

nerdctl是一个与docker cli风格兼容的containerd的cli工具

nerdctl 官方发布包含两个安装版本:

最小(nerdctl-1.7.7-linux-amd64.tar.gz):仅限 nerdctl

完整(nerdctl-full-1.7.7-linux-amd64.tar.gz):包括 containerd、runc 和 CNI 等依赖项

我们已经安装了 containerd ,所以选择nerdctl-1.7.7-linux-amd64.tar.gz

wget https://github.com/containerd/nerdctl/releases/download/v1.7.7/nerdctl-1.7.7-linux-amd64.tar.gz

tar -C /usr/local/bin -zxf nerdctl-1.7.7-linux-amd64.tar.gz

nerdctl version #查看版本

#配置nerdctl 命令自动补全

yum install bash-completion -y

nerdctl completion bash > /etc/bash_completion.d/nerdctl

source /etc/bash_completion.d/nerdctl

#添加nerdctl别名为 docker

vi /usr/local/bin/docker

#!/bin/bash

/usr/local/bin/nerdctl $@

:wq! #保存退出

chmod +x /usr/local/bin/docker

#测试

nerdctl image

docker image

至此,Linux下安装k8s容器运行时Containerd完成。

     

  系统运维技术交流QQ群:①185473046 系统运维技术交流□Ⅰ ②190706903 系统运维技术交流™Ⅱ ③203744115 系统运维技术交流™Ⅲ

给我留言

您必须 [ 登录 ] 才能发表留言!



Copyright© 2011-2024 系统运维 All rights reserved
版权声明:本站所有文章均为作者原创内容,如需转载,请注明出处及原文链接
陕ICP备11001040号-3