K8S容器运行时从Docker切换为Containerd
创始人
2025-05-30 04:02:09

K8S容器运行时从Docker切换为Containerd

  • 检查内核参数与模块
    • overlay和br_netfilter
    • 内核网络参数
  • containerd安装配置
    • 安装containerd
    • 修改镜像仓库地址
  • 切换容器运行时
  • crictl管理工具

K8S从1.24版本起不再支持docker容器引擎,可选的替代品有containerdcri-opodman。下面演示将单个node节点的容器引擎从docker切换为containerd的过程。

检查内核参数与模块

overlay和br_netfilter

检查是否已经加载内核模块overlaybr_netfilter

lsmod | grep overlay
lsmod | grep br_netfilter

如果没有,手动加载内核模块:

cat <

内核网络参数

检查系统内核参数:

sysctl -a | grep bridge
sysctl -a | grep ip_forward

如果没有开启,手动调整:

cat <

containerd安装配置

安装containerd

安装containerd相关依赖包:

yum install -y yum-utils device-mapper-persistent-data lvm2 

配置docker源(如果已配置,跳过此步骤):

ls /etc/yum.repos.d | grep docker-ce
yum-config-manager \ 
--add-repo \ 
https://download.docker.com/linux/centos/docker-ce.repo 

安装containerd:

ls /etc | grep containerd# 如果没有安装
yum install -y containerd.io 

修改containerd为独立运行时的默认配置:

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

修改镜像仓库地址

修改containerd配置文件:

vim /etc/containerd/config.toml#pause镜像地址修改为阿里云镜像仓库地址
[plugins."io.containerd.grpc.v1.cri"] sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.2"#cgroups驱动引擎修改为systemd
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] SystemdCgroup = true#Dcoker Hub镜像仓库地址修改为阿里云镜像仓库地址(非必须)
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"] endpoint = ["https://b9pmyelo.mirror.aliyuncs.com"]

保存退出后,重启服务生效:

systemctl restart containerd# 启用开机自启
systemctl enable containerd

切换容器运行时

修改kubelet配置,将当前节点的默认容器运行时修改为containerd:

vim /etc/sysconfig/kubelet 
KUBELET_EXTRA_ARGS=--container-runtime=remote --container-runtime-endpoint=unix:///run/containerd/containerd.sock --cgroup-driver=systemd # 保存退出,重启生效
systemctl restart kubelet

在k8s-master检查:

[root@k8s-master1 ~]# kubectl get nodes -o wide
NAME          STATUS   ROLES                  AGE     VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION           CONTAINER-RUNTIME
k8s-master1   Ready    control-plane,master   3d11h   v1.23.0   192.168.x.x           CentOS Linux 7 (Core)   3.10.0-1160.el7.x86_64   containerd://1.6.18
k8s-master2   Ready    control-plane,master   3d10h   v1.23.0   192.168.x.x           CentOS Linux 7 (Core)   3.10.0-1160.el7.x86_64   containerd://1.6.18
k8s-master3   Ready    control-plane,master   3d10h   v1.23.0   192.168.x.x           CentOS Linux 7 (Core)   3.10.0-1160.el7.x86_64   containerd://1.6.18
k8s-worker1   Ready                     3d10h   v1.23.0   192.168.x.x           CentOS Linux 7 (Core)   3.10.0-1160.el7.x86_64   containerd://1.6.18
k8s-worker2   Ready                     3d10h   v1.23.0   192.168.x.x           CentOS Linux 7 (Core)   3.10.0-1160.el7.x86_64   containerd://1.6.18

输出中,CONTAINER-RUNTIME一列,k8s-node2的容器运行时已变成containerd,其余节点还是docker。

最后停用docker服务:

systemctl disable docker && systemctl stop docker

crictl管理工具

Containerd可以通过crictl命令来管理容器。

配置crictl管理containerd:

vi /etc/crictl.yaml 
runtime-endpoint: unix:///run/containerd/containerd.sock 
image-endpoint: unix:///run/containerd/containerd.sock 
timeout: 10 
debug: false

查看crictl常用命令:

crictl --help

相关内容

热门资讯

纳斯达克中国金龙指数涨幅扩大,... 每经AI快讯,12月19日,纳斯达克中国金龙指数涨幅扩大,现涨1.0%,最新报7651.42点。
中关村科技租赁(01601)就... 中关村科技租赁(01601)发布公告,于2025年12月19日,公司作为出租人与承租人II青海电子材...
A股深夜重磅!千亿级大并购来了 转自:北京日报客户端交易对价1335.98亿元!12月19日晚间,中国神华披露了购买12家企业的最新...
冰雪节里暖意足 长春贴心服务赢... 银装素裹迎宾客,暖心服务暖人心。12月19日,第29届长春冰雪节开幕式举行,活动举办地长春冰雪新天地...
突发!连续多年财务造假,贵州百... 文/帅可聪12月19日晚,中国证监会贵州监管局(下称“贵州证监局”)发布通报,近日,对贵州百灵(维权...