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

这篇具有很好参考价值的文章主要介绍了K8S容器运行时从Docker切换为Containerd。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

检查内核参数与模块

overlay和br_netfilter

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

lsmod | grep overlay
lsmod | grep br_netfilter

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

cat <<EOF | tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF

# 加载内核模块
modprobe overlay
modprobe br_netfilter

内核网络参数

检查系统内核参数:

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

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

cat <<EOF | tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF

sysctl --system

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   <none>        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   <none>        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   <none>        CentOS Linux 7 (Core)   3.10.0-1160.el7.x86_64   containerd://1.6.18
k8s-worker1   Ready    <none>                 3d10h   v1.23.0   192.168.x.x   <none>        CentOS Linux 7 (Core)   3.10.0-1160.el7.x86_64   containerd://1.6.18
k8s-worker2   Ready    <none>                 3d10h   v1.23.0   192.168.x.x   <none>        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常用命令:文章来源地址https://www.toymoban.com/news/detail-489923.html

crictl --help

到了这里,关于K8S容器运行时从Docker切换为Containerd的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C站首发】全网最新Kubernetes(K8s)1.28版本探秘及部署 基于Containerd容器运行时(100年证书kubeadm)

    序号 操作系统及版本 备注 1 CentOS7u9 需求 CPU 内存 硬盘 角色 主机名 值 8C 8G 1024GB master k8s-master01 值 8C 16G 1024GB worker(node) k8s-worker01 值 8C 16G 1024GB worker(node) k8s-worker02 1.3.1 主机名配置 由于本次使用3台主机完成kubernetes集群部署,其中1台为master节点,名称为k8s-master01;其中2台为wor

    2024年02月08日
    浏览(54)
  • k8s单节点部署,容器运行时使用containerd

    环境 系统 : entOS Linux release 7.9.2009 (Core IP:192.168.44.177 硬件要求:控制平面最少需要 2c2g 安装前环境准备 如果是集群部署还需要配置时间同步 关闭防火墙 关闭selinux 关闭swap分区 如果没有开启swap分区可以跳过这步 删除掉 /etc/fstab 有关swap分区的信息 设置主机名 开始安装容器

    2024年04月12日
    浏览(46)
  • k8s 1.27集群部署 容器运行时为containerd

    1.1.1 主机操作系统说明 序号 操作系统及版本 备注 1 CentOS7u9 1.1.2 主机硬件配置说明 需求 CPU 内存 硬盘 角色 主机名 值 8C 8G 1024GB master k8s-master01 值 8C 16G 1024GB worker(node) k8s-worker01 值 8C 16G 1024GB worker(node) k8s-worker02 1.1.3 主机配置 1.1.3.1 主机名配置 由于本次使用3台主机完成kubern

    2024年02月03日
    浏览(63)
  • 基于containerd容器运行时,kubeadmin部署k8s 1.28集群

    centos7u9 序号 主机名 ip地址 CPU 内存 硬盘 1 k8s-master1 192.168.1.200 2C 2G 100G 2 k8s-worker1 192.168.1.201 2C 2G 100G 3 k8s-worker2 192.168.1.202 2C 2G 100G 1.3.1主机名配置 vi /etc/sysconfig/network-scripts/ifcfg-ens33 1.3.3主机名与IP地址解析(hosts) vi /etc/hosts 1.3.4防火墙配置 关闭防火墙firewalld 1.3.5SELINUX配置 修改

    2024年02月01日
    浏览(56)
  • k8s 使用 containerd 运行时配置 http 私服

    Kubernetes 从 v1.20 开始弃用 Docker,并推荐用户切换到基于容器运行时接口(CRI)的容器引擎,如 containerd、cri-o 等。 目前使用的环境中使用了 Kubernetes v1.22.3,containerd 1.4.3,containerd 在配置私服配置上与直接使用 docker 有一定区别。 今天简单聊一下如何配置私服,默认使用 doc

    2024年02月12日
    浏览(46)
  • K8S最新版本集群部署(v1.28) + 容器引擎Docker部署(下)

    🔼上一集:K8S最新版本集群部署(v1.28) + 容器引擎Docker部署(上) *️⃣主目录:温故知新专栏 🔽下一集:Kubernetes可视化管理工具Kuboard部署使用及k8s常用命令梳理记录 kubectl 是使用 Kubernetes API 与 Kubernetes 集群的控制面进行通信的命令行工具。详见官网安装步骤 📕下载kube

    2024年02月09日
    浏览(42)
  • K8S最新版本集群部署(v1.28) + 容器引擎Docker部署(上)

    🔼上一集:win11+vmware17+centos7.9环境搭建 *️⃣主目录:温故知新专栏 🔽下一集:K8S最新版本集群部署(v1.28) + 容器引擎Docker部署(下) 之前部署过dolphinscheduler3.1.8,看页面增加了K8S模块,所以想着部署一下K8S,学习一下,而且海豚调度也提供了K8S部署方式,经过一番了解,发现

    2024年02月11日
    浏览(47)
  • k8s-containerd容器运行时默认50G存储位置更换

    containerd作为k8s主要的cri,它默认存储位置是使用的/根目录挂载的资源。当容器运行的越来越多,默认的50G不够使用了。有2种方法可以进行解决。 方式1、增加/根分区的磁盘空间。 方式2、修改containerd配置文件,修改默认配置为/home 这里我使用方式2,可以看到/home目录为104

    2024年02月09日
    浏览(61)
  • k8s 使用 containerd 运行时配置 http 私服(harbor等)

    Kubernetes 从 v1.20 开始弃用 Docker,并推荐用户切换到基于容器运行时接口(CRI)的容器引擎,如 containerd、cri-o 等。 目前使用的环境中使用了 Kubernetes v1.22.3,containerd 1.4.3,containerd 在配置私服配置上与直接使用 docker 有一定区别。 今天简单聊一下如何配置私服,默认使用 doc

    2024年02月12日
    浏览(48)
  • K8S Containerd导入Docker image镜像

    Kubernetes在v1.20 版本宣布弃用 Dockershim (在v1.24正式移除),改用CRI接口去操作更为基础的containerd或CRI-O。 K8S在创建容器时,或多或少有些镜像无法正常拉取(网络等原因)。 还在使用 Docker Engine 时我们能方便的pull第三方同步的镜像,然后tag成需要的标签版本,让K8S从本地获

    2024年02月11日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包