安装容器运行时(Containerd)
从Kubernetes 1.20版本开始官方不推荐使用Docker,1.24版本将完全弃用docker。如果安装1.22以上版本的k8s,官方推荐使用containerd,docker支持k8s版本最高为1.23.16。
版本选择
---每个k8s版本都有对应的Containerd版本范围,具体参考官方文档https://github.com/kubernetes/kubernetes/releases
以1.24.X为例,查看https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md
由更新日志可知,支持的最低版本Containerd为1.4.12
安装container
---RHEL
---1 | 安装依赖 |
Debian
---1 | step 1: 安装必要的一些系统工具 |
修改container配置
---生成默认配置文件
---1 | [root@k8s-master ~]# containerd config default > /etc/containerd/config.toml |
替换镜像源
---由于国内环境原因我们需要将 sandbox_image 镜像源设置为阿里云google_containers镜像源。把sandbox_image = “k8s.gcr.io/pause:3.6”修改为:sandbox_image=“registry.aliyuncs.com/google_containers/pause:3.6”
1 | [root@k8s-master ~]# sed -i 's/sandbox_image\ =.*/sandbox_image\ =\ "registry.aliyuncs.com\/google_containers\/pause:3.6"/g' /etc/containerd/config.toml|grep sandbox_image |
配置cgroup驱动器
---在 Linux 上,控制组(CGroup)用于限制分配给进程的资源。
kubelet 和底层容器运行时都需要对接控制组 为 Pod 和容器管理资源 ,如 CPU、内存这类资源设置请求和限制。 若要对接控制组(CGroup),kubelet 和容器运行时需要使用一个 cgroup 驱动。 关键的一点是 kubelet 和容器运行时需使用相同的 cgroup 驱动并且采用相同的配置。
1 | [root@k8s-master ~]# sed -i 's/SystemdCgroup\ =\ false/SystemdCgroup\ =\ true/g' /etc/containerd/config.toml |
配置国内镜像加速
---与我们之前配置docker镜像源的做法类似,在国内使用containerd依然需要更换成国内的镜像源。但是这里有一些问题需要说明一下:
- 配置的镜像仓库在使用crictl工具调用或者kubernetes调用时才会生效,如果使用ctr命令拉取镜像是不生效的。
- Docker 只支持为 Docker Hub 配置 mirror,而 Containerd 支持为任意镜像仓库配置 mirror
1 | 修改container配置,指定registry配置从文件读取 |
从配置文件里面我们看到的
- server表示需要配置的mirror的镜像仓库,例如:https://docker.io表示配置的是docker.io的mirror,这是最基本的镜像。
- host:表示提供的mirror的镜像加速服务,可以使用中国科技大学的,也可以使用阿里云的镜像。
参考文档:https://help.aliyun.com/zh/acr/user-guide/accelerate-the-pulls-of-docker-official-images
启动 containerd 服务
---1 | [root@k8s-master ~]# systemctl daemon-reload |
指定kubelet的容器运行时
---- 如果使用containerd作为容器运行时,需要指定kubelet的容器运行时,如果使用docker作为容器运行时,则无需操作下面的步骤。
crictl安装参考containerd进阶使用。
1 | [root@k8s-master ~]# crictl config runtime-endpoint /run/containerd/containerd.sock |