千家信息网

怎么搭建一个集成了containerd的k8s集群

发表于:2024-12-04 作者:千家信息网编辑
千家信息网最后更新 2024年12月04日,这篇文章主要讲解了"怎么搭建一个集成了containerd的k8s集群",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么搭建一个集成了containe
千家信息网最后更新 2024年12月04日怎么搭建一个集成了containerd的k8s集群

这篇文章主要讲解了"怎么搭建一个集成了containerd的k8s集群",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么搭建一个集成了containerd的k8s集群"吧!

概念介绍

  • cri (Container runtime interface)

    • cri is a containerd plugin implementation of Kubernetes container runtime interface (CRI).

    • cri是 kubernetes的容器运行时接口的容器插件实现。

  • containerd

    • containerd is an industry-standard container runtime with an emphasis on simplicity, robustness and portability.

    • containerd完全支持运行容器的的CRI运行时规范。

    • cri在containerd1.1以上的版本的原生插件。它内置于containerd并默认启用。


  • cri-o

    • OCI-based implementation of Kubernetes Container Runtime Interface.

    • kubernetes为了兼容cri和oci孵化了项目cri-o。为了架设在cri和oci之间的一座桥梁。由此cri-o既兼容cri插件实现又兼容oci的容器运行时标准。

  • oci (Open Container Initiative)


    • oci是由多家公司成立的项目,并由linux基金会进行管理,致力于container runtime 的标准的制定和runc的开发等工作。

  • runc


    • runc is a CLI tool for spawning and running containers according to the OCI specification.

    • runc,是对于OCI标准的一个参考实现,是一个可以用于创建和运行容器的CLI(command-line interface)工具。

概述

由于docker嵌入了太多自身内容,为了减轻容器负担。此次选用containerd作为kubernetes的容器实现方案。

环境准备

下载containerd二进制包。我这里已经编译并打包了好了,内含containerd、runc、crictl、ctr等。

  • runc版本: 1.0.1-dev

  • containerd版本: v1.2.4

安装

安装containerd

  • 解压二进制包并生成默认文件

    tar -C /usr/local/bin -xzf containerd-v1.2.4.tar.gzchmod a+x /usr/local/bin/*containerd config default > /etc/containerd/config.toml


    生成的默认配置文件注意 [grpc]address 字段默认为 /run/containerd/containerd.sock

    配置文件其他参数含义参照github地址: https://github.com/containerd/containerd/blob/master/docs/man/containerd-config.toml.5.md

  • /etc/systemd/system 目录下编写文件 containerd.service内容如下

    [Unit]Description=containerd container runtimeDocumentation=https://containerd.ioAfter=network.target[Service]ExecStartPre=/sbin/modprobe overlayExecStart=/usr/local/bin/containerdRestart=alwaysRestartSec=5Delegate=yesKillMode=processOOMScoreAdjust=-999LimitNOFILE=1048576# Having non-zero Limit*s causes performance problems due to accounting overhead# in the kernel. We recommend using cgroups to do container-local accounting.LimitNPROC=infinityLimitCORE=infinity[Install]WantedBy=multi-user.target


  • 启动containerd

    systemctl enable containerdsystemctl restart containerdsystemctl status containerd


    看containerd启动状态如果是running就没有问题。下面我们测试拉取一下hub的镜像。

  • 测试containerd

    ctr images pull docker.io/library/nginx:alpine


    看到输出done,说明containerd运行一切正常。

使用crictl连接containerd

下一步我们使用crictl连接containerd。

  • 修改crictl的配置文件,在 /etc/crictl.yaml 写入以下内容:

    runtime-endpoint: unix:///run/containerd/containerd.sockimage-endpoint: unix:///run/containerd/containerd.socktimeout: 10debug: false


    这里注意runtime-endpoint 和image-endpoint 必须与/etc/containerd/config.toml中配置保持一致。

  • 验证一下cri插件是否可用

    crictl  pull nginx:alpinecrictl  rmi  nginx:alpinecrictl  images


    其中 crictl images 会列出所有的cri容器镜像。

    到此我们的cri + containerd已经完成整合了。下一步我们需要修改kubeadm配置进行安装。

导入kubenetes离线镜像包

这里我们就需要导入k8s的离线镜像包了。这里需要注意一下,kubernetes是调用的cri接口,所以导入时也需要从cri插件导入镜像。

  • cri导入镜像命令(cri导入镜像):

     ctr cri load  images.tar


  • containerd导入镜像命令(containerd导入镜像):

     ctr images import images.tar


修改kubelet配置和kubeadm安装时配置

  • 在 kubelet配置文件 10-kubeadm.conf 的[Service] 结点加入以下配置:

    Environment="KUBELET_EXTRA_ARGS=--container-runtime=remote --runtime-request-timeout=15m --container-runtime-endpoint=unix:///run/containerd/containerd.sock"


  • 在kubeadm配置文件 kubeadm.yaml 中加入

    apiVersion: kubeadm.k8s.io/v1beta1kind: InitConfigurationnodeRegistration:  criSocket: /run/containerd/containerd.sock  name: containerd


    到此containerd和kubernetes的集成就完成了。下面可以直接安装即可。

感谢各位的阅读,以上就是"怎么搭建一个集成了containerd的k8s集群"的内容了,经过本文的学习后,相信大家对怎么搭建一个集成了containerd的k8s集群这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

配置 镜像 容器 文件 运行 内容 插件 集群 标准 版本 学习 二进制 命令 接口 问题 项目 测试 生成 验证 一致 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 福建省党委网络安全工作责任制 深圳软件开发难学吗 sql 删除2个表数据库 app软件提取数据库 forest转移服务器有必要吗 惠州教育软件开发费用是多少 高端的北京虚拟主机服务器 什么是真正的网络安全 河北省网络技术专家 数据库找不到打印机驱动 蔡甸网络安全学校 陕西通信信息技术 大数据库 电信无线网络认证的网络安全 打印服务器无法连接usb共享器 数据库与数据处理课后习题答案 河北放心软件开发服务检测中心 小度搜索网络安全为人名的图片 数据库可重复读举例 阿里数据库厉害还是甲骨文 卡桑德拉 数据库 数据库中创建视图方式 苹果8p服务器升级中啥意思 青岛三只猫网络技术 软件开发推销怎么做 服务器主机可以装多个系统吗 上海共享干衣机软件开发 数据库应用管理课后习题 网络安全个人述职怎么写 数据库 byte 软件开发类的工作室
0