containerd与kubernetes集成部署
概念介绍
cri is a containerd plugin implementation of Kubernetes container runtime interface (CRI).
cri是 kubernetes的容器运行时接口的容器插件实现。
containerd is an industry-standard container runtime with an emphasis on simplicity, robustness and portability.
containerd完全支持运行容器的的CRI运行时规范。
cri在containerd1.1以上的版本的原生插件。它内置于containerd并默认启用。

OCI-based implementation of Kubernetes Container Runtime Interface.
kubernetes为了兼容cri和oci孵化了项目cri-o。为了架设在cri和oci之间的一座桥梁。由此cri-o既兼容cri插件实现又兼容oci的容器运行时标准。
oci是由多家公司成立的项目,并由linux基金会进行管理,致力于container runtime 的标准的制定和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的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
解压二进制包并生成默认文件
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
systemctl enable containerd
systemctl restart containerd
systemctl status containerd
看containerd启动状态如果是running就没有问题。下面我们测试拉取一下hub的镜像。
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配置进行安装。
这里我们就需要导入k8s的离线镜像包了。这里需要注意一下,kubernetes是调用的cri接口,所以导入时也需要从cri插件导入镜像。
cri导入镜像命令(cri导入镜像):
ctr cri load images.tar
containerd导入镜像命令(containerd导入镜像):
ctr images import images.tar
在 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的集成就完成了。下面可以直接安装即可。
原文来自:https://sealyun.com/post/containerd/
本文地址:https://www.linuxprobe.com/containerd-kubernetes.html编辑:吴向平,审核员:逄增宝
Linux命令大全:https://www.linuxcool.com/
containerd与kubernetes集成部署的更多相关文章
- containerd与kubernetes集成
kubernetes集群三步安装 概念介绍 cri (Container runtime interface) cri is a containerd plugin implementation of ...
- [dotnet core]落地微服务特色的DevOps管道,持续集成/部署到kubernetes。
目录 前言 目标 工具 - 最小的学习成本 方案 - 愿景 1. 持续集成 - CI 2. 持续部署 - CD 部署环境 1. 部署gitlab-runner 2. 注册gitlab-runner 搭 ...
- 在Kubernetes下部署Prometheus
使用ConfigMaps管理应用配置 当使用Deployment管理和部署应用程序时,用户可以方便了对应用进行扩容或者缩容,从而产生多个Pod实例.为了 能够统一管理这些Pod的配置信息,在Kuber ...
- Helm, 在Kubernetes中部署应用的利器
一.背景 Kubernetes(k8s)是一个基于容器技术的分布式架构领先方案.它在Docker技术的基础上,为容器化的应用提供部署运行.资源调度.服务发现和动态伸缩等一系列完整功能,提高了大规模容器 ...
- 概念验证:在Kubernetes中部署ABAP
对于将SAP ABAP应用服务器组件容器化和在Kubernetes中部署它们,我们在SPA LinuxLab中做了概念验证(PoC),本文将介绍一些我们的发现和经验.本文会也会指出这项工作的一些潜在的 ...
- Kubernetes 二进制部署(一)单节点部署(Master 与 Node 同一机器)
0. 前言 最近受“新冠肺炎”疫情影响,在家等着,入职暂时延后,在家里办公和学习 尝试通过源码编译二进制的方式在单一节点(Master 与 Node 部署在同一个机器上)上部署一个 k8s 环境,整理 ...
- 实操|如何将 Containerd 用作 Kubernetes runtime
日前专为开发者提供技术分享的又拍云 OpenTalk 公开课邀请了网易有道资深运维开发工程师张晋涛,直播分享<Containerd 上手实践 >,详细介绍 Containerd 的发展历程 ...
- 自动化集成部署udeployer 批量统一安装一键部署
通过jenkins构建项目:version版本控制:udployer自动化集成:ucop业务巡检做到高效高可用的自动化体系. 1.0版本: 逻辑与业务分离,完美实现逻辑与业务分离,业务实现统一sh ...
- ABP .Net Core API和Angular前端APP集成部署
前言:在ABP官网(https://aspnetboilerplate.com)生成的.Net Core + Angular项目前后端是两个独立的项目,我们可以分开部署,也可以将前端和Web API一 ...
随机推荐
- blender建模常用建模快捷键
编辑物体 M2选取 M2+SHIFT选取多个 A全选 B+M1矩阵选择 C+M1笔刷选择 CTRL+M1套索选择 CTRL+SHIFT+M1取消套索选择 ALT+M2选择边循环,面 CTRL+ALT+ ...
- 事务与一致性:刚性or柔性
转发自 https://cloud.tencent.com/developer/article/1038871 在高并发场景下,分布式储存和处理已经是常用手段.但分布式的结构势必会带来"不一 ...
- 给自己的网站装上SSL证书
给网站装上SSL证书 前言 主要是因为自己的阿里云快过期了,自己的博客也重新用了一下Halo,重新安装SSL的时候有些地方忘了,所以在此留个记录! 关于SSL 阮一峰<图解图解SSL/TLS协议 ...
- Android开发 定时任务清理数据
原文地址:Android开发 定时任务清理数据 | Stars-One的杂货小窝 公司项目,需要整定时任务,对数据进行清理,需要在每天凌晨0:00进行数据的清理,使用了Alarm和广播的方式来实现 P ...
- python10day
昨日回顾 函数是以功能为导向,减少重复代码.增强可读性. 函数的调用:func().写几次执行几次 函数的返回值return 终止函数 return单个值 return多个值,按元组返回 函数的参数: ...
- 学习JAVAWEB第三十七天(读构建之法有感)
读<构建之法>有感 我今年暑假回去就要升入大二了,在今年的专业分流时,我选择了软件工程专业,起初的想法很简单,做一款优秀的,能拥有大量用户的软件,甚至还想通过自己的软件改变人们的生活.读了 ...
- NOIP PJ/CSP-J 题目选做
1. luoguP7074 [CSP-J2020] 方格取数 2. luoguP5662 [CSP-J2019] 纪念品 3. luoguP2671 [NOIP2015 普及组] 求和 4. luog ...
- Python Package Cheatsheet
Web 服务:tornado pip3 install tornado import sys import tornado.ioloop import tornado.web import json ...
- react-(错误代码#31----Minified React error #31)
错误描述:Uncaught Invariant Violation: Minified React error #31; visit http://facebook.github.io/react/d ...
- 「JOISC 2014 Day4」两个人的星座
首先突破口肯定在三角形不交,考虑寻找一些性质. 引理一:两个三角形不交当且仅当存在一个三角形的一条边所在直线将两个三角形分为异侧 证明可以参考:三角形相离充要条件,大致思路是取两个三角形重心连线,将其 ...