containerd与kubernetes集成部署

概念介绍

cri(容器运行时接口)

cri是Kubernetes容器运行时接口(CRI)的容器插件实现。
cri是kubernetes的容器运行时接口的容器插件实现。

containerd

containerd是一个行业标准的容器运行时,强调简单性,健壮性和可移植性。
containerd完全支持运行容器的的CRI运行时规范。
CRI在containerd1.1以上的版本的原生插件。它内置于containerd并默认启用。

containerd与kubernetes集成部署containerd与kubernetes集成部署

CRI-O

基于OCI的Kubernetes容器运行时接口的实现。
kubernetes为了兼容CRI和OCI孵化了项目CRI-O。为了架设在CRI和OCI之间的一座桥梁。由此CRI-O既兼容CRI插件实现又兼容OCI的容器运行时标准。

oci(开放式集装箱计划)

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

runc

runc是一个CLI工具,用于根据OCI规范生成和运行容器。
runc,是对于OCI标准的一个参考实现,是一个可以用于创建和运行容器的CLI(命令行界面)工具。

containerd与kubernetes集成部署containerd与kubernetes集成部署

概述

由于搬运工嵌入了太多自身内容,为了减轻容器负担。此次选用containerd作为kubernetes的容器实现方案。本文将带大家讲述如何搭建一个集成了containerd的K8S集群。

环境准备

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

下载链接: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]的地址字段默认为/run/containerd/containerd.sock

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

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

  [单元]
  Description = containerd容器运行时
  文档= HTTPS://containerd.io
  之后= network.target
  
  [服务]
  ExecStartPre = / sbin / modprobe overlay
  ExecStart =在/ usr / local / bin目录/ containerd
  重启=始终
  RestartSec = 5
  委派= YES
  KillMode =过程
  OOMScoreAdjust = -999
  LimitNOFILE = 1048576
  #具有非零Limit * s会因会计开销而导致性能问题
  #在内核中。我们建议使用cgroup进行容器本地记帐。
  LimitNPROC =无穷大
  LimitCORE =无穷大
  
  [安装]
  WantedBy = multi-user.target

启动containerd

  systemctl启用containerd
  systemctl重新启动containerd
  systemctl status containerd

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

测试containerd

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

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

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

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

  runtime-endpoint:unix:///run/containerd/containerd.sock
  image-endpoint:unix:///run/containerd/containerd.sock
  超时:10
  debug:false

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

验证一下CRI插件是否可用

  crictl pull nginx:alpine
  crictl rmi nginx:高山
  crictl图像

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

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

导入kubenetes离线镜像包

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

CRI导入镜像命令(CRI导入镜像):

   ctr cri load images.tar

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

   ctr图像导入images.tar 

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

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

  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
    名称:containerd

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值