containerd与kubernetes集成
概念介绍
- cri (Container runtime interface)
criis 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)
- https://www.opencontainers.org/about/oci-scope-table
- oci是由多家公司成立的项目,并由linux基金会进行管理,致力于container runtime 的标准的制定和runc的开发等工作。
- runc
runcis a CLI tool for spawning and running containers according to the OCI specification.- runc,是对于OCI标准的一个参考实现,是一个可以用于创建和运行容器的CLI(command-line interface)工具。

概述
由于docker嵌入了太多自身内容,为了减轻容器负担。此次选用containerd作为kubernetes的容器实现方案。本文将带大家讲述如何搭建一个集成了containerd的k8s集群。
环境准备
下载containerd二进制包。我这里已经编译并打包了好了,内含containerd、runc、crictl、ctr等。
下载链接:https://github.com/cuisongliu/containerd-dist/releases/download/v1.2.4/containerd-v1.2.4.tar.gz
- runc版本: 1.0.1-dev
- containerd版本: v1.2.4
安装
安装containerd
解压二进制包并生成默认文件
tar -C /usr/local/bin -xzf containerd-v1.2.4.tar.gz chmod 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 runtime Documentation=https://containerd.io After=network.target [Service] ExecStartPre=/sbin/modprobe overlay ExecStart=/usr/local/bin/containerd Restart=always RestartSec=5 Delegate=yes KillMode=process OOMScoreAdjust=-999 LimitNOFILE=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=infinity LimitCORE=infinity [Install] WantedBy=multi-user.target启动containerd
systemctl enable containerd systemctl restart containerd systemctl 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.sock image-endpoint: unix:///run/containerd/containerd.sock timeout: 10 debug: false这里注意runtime-endpoint 和image-endpoint 必须与/etc/containerd/config.toml中配置保持一致。
验证一下cri插件是否可用
crictl pull nginx:alpine crictl rmi nginx:alpine crictl images其中
crictl images会列出所有的cri容器镜像。到此我们的cri + containerd已经完成整合了。下一步我们需要修改kubeadm配置进行安装。
导入kubenetes离线镜像包
这里我们就需要导入k8s的离线镜像包了。这里需要注意一下,kubernetes是调用的cri接口,所以导入时也需要从cri插件导入镜像。
cri导入镜像命令(cri导入镜像):
ctr cri load images.tarcontainerd导入镜像命令(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/v1beta1 kind: InitConfiguration nodeRegistration: criSocket: /run/containerd/containerd.sock name: containerd到此containerd和kubernetes的集成就完成了。下面可以直接安装即可。
扫码关注sealyun

探讨可加QQ群:98488045
containerd与kubernetes集成的更多相关文章
- containerd与kubernetes集成部署
概念介绍 cri (Container runtime interface) cri is a containerd plugin implementation of Kubernetes conta ...
- 实操|如何将 Containerd 用作 Kubernetes runtime
日前专为开发者提供技术分享的又拍云 OpenTalk 公开课邀请了网易有道资深运维开发工程师张晋涛,直播分享<Containerd 上手实践 >,详细介绍 Containerd 的发展历程 ...
- CRI 与 ShimV2:一种 Kubernetes 集成容器运行时的新思路
摘要: 关于 Kubernetes 接口化设计.CRI.容器运行时.shimv2.RuntimeClass 等关键技术特性的设计与实现. Kubernetes 项目目前的重点发展方向,是为开发 ...
- Dubbo与Kubernetes集成
Dubbo应用迁移到docker的问题 Dubbo是阿里开源的一套服务治理与rpc框架,服务的提供者通过zookeeper把自己的服务发布上去,然后服务调用方通过zk获取服务的ip和端口,dubbo客 ...
- 干货 | 京东云托管Kubernetes集成镜像仓库并部署原生DashBoard
在上一篇"Cloud Native 实操系列"文章中,我们为大家介绍了如何通过京东云原生容器实现Eureka的部署(
- Kubernetes将弃用Docker!与 containerd容器引擎
时间戳:2022-06-07 20:32:19 星期二 撰写文档参考:(阿良-腾讯课堂)Kubernetes将弃用Docker 参考博客k8s入坑之路(3)containerd容器 container ...
- Kubernetes容器运行时弃用Docker转型Containerd
文章转载自:https://i4t.com/5435.html Kubernetes社区在2020年7月份发布的版本中已经开始了dockershim的移除计划,在1.20版本中将内置的dockersh ...
- containerd 与安全沙箱的 Kubernetes 初体验
作者 | 易立 阿里云资深技术专家 containerd 是一个开源的行业标准容器运行时,关注于简单.稳定和可移植,同时支持 Linux 和 Windows. 2016 年 12 月 14 日,Do ...
- docker、oci、runc以及kubernetes梳理
容器无疑是近年来云计算中最火热的关键词.随着docker的大热,docker.oci.runc.containerd等等名词也逐渐传播开来.这么多的名词,也容易让人混淆.本文对相关名词和其之间的联系进 ...
随机推荐
- CSU 1808:地铁(Dijkstra)
http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1808 题意:…… 思路:和之前的天梯赛的一题一样,但是简单点. 没办法直接用点去算.把边看成点 ...
- 基于modelform和ajax的注册
forms文件 创建ModelForm组件 from django import forms from crm import models from django.core.exceptions im ...
- 单个单选框radio 点击选中点击取消选中
$("input:radio").click(function(){ var domName = $(this).attr('name');//获取当前单选框控件name 属性值 ...
- Egret入门学习日记 --- 第四篇
第四篇(学习篇) 好了,今天继续把昨天的问题解决了. 今天见鬼了. 现在界面又出来了.唯一我动过的地方,应该就是这里: 是的,我点了一下刷新.之后,不管我怎么创建新的EXML文件,放在src目录,还是 ...
- Oracle数据库常用的脚本命令(一)
--连接数据库的命令connect,用于切换连接用户,简写形式conn--语法格式:conn 用户名/密码conn yanln/yanln --显示当前登录的用户show user --执行操作系统的 ...
- 基于SpringCloud的Microservices架构实战案例
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- wincc C脚本如何调用第三方动态链接库dll
就Wincc本身脚本功能而言并不强大,但是wincc 脚本提供了第三方接口,如通用的Kernel32.dll,User32.dll,Gdi32.dll,大家如果对这些API接口感兴趣,可网上查找关于w ...
- 个人永久性免费-Excel催化剂功能第33波-报表形式数据结构转标准数据源
一般来说,如果有标准的数据源结构,对后续的分析工作将会带来极大的方便.但现实中,许多的原始数据并不预期那样,一个主题的数据已经干净地存放在一个工作表中.今天Excel催化剂再次送上批量化操作,将不规则 ...
- 艺赛旗RPA-处理无表头表格
今天写一个demo,要求是对表格数据用价格为key进行排序 样本数据有两种格式: 一.第一行是一个大单元格 处理步骤: 在不变参数的情况下读取表格数据: 结果如下: 可以看见表头: Unnamed: ...
- 使用RabbitMQ做数据接收和处理时,自动关闭
场景:N个客户端向MQ里发送数据:服务器上有另一个控制台程序(假设叫ServerClient)来处理这里数据(往数据库保存).方向为Client * n→MQSERVER→ServerClient 问 ...