kubernetes集群三步安装

概念介绍

  • cri (Container runtime interface)

  • 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)
  • 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

安装

安装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.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/v1beta1
    kind: InitConfiguration
    nodeRegistration:
      criSocket: /run/containerd/containerd.sock
      name: containerd

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

扫码关注sealyun

探讨可加QQ群:98488045

containerd与kubernetes集成的更多相关文章

  1. containerd与kubernetes集成部署

    概念介绍 cri (Container runtime interface) cri is a containerd plugin implementation of Kubernetes conta ...

  2. 实操|如何将 Containerd 用作 Kubernetes runtime

    日前专为开发者提供技术分享的又拍云 OpenTalk 公开课邀请了网易有道资深运维开发工程师张晋涛,直播分享<Containerd 上手实践 >,详细介绍 Containerd 的发展历程 ...

  3. CRI 与 ShimV2:一种 Kubernetes 集成容器运行时的新思路

    摘要: 关于 Kubernetes 接口化设计.CRI.容器运行时.shimv2.RuntimeClass 等关键技术特性的设计与实现.     Kubernetes 项目目前的重点发展方向,是为开发 ...

  4. Dubbo与Kubernetes集成

    Dubbo应用迁移到docker的问题 Dubbo是阿里开源的一套服务治理与rpc框架,服务的提供者通过zookeeper把自己的服务发布上去,然后服务调用方通过zk获取服务的ip和端口,dubbo客 ...

  5. 干货 | 京东云托管Kubernetes集成镜像仓库并部署原生DashBoard

    在上一篇"Cloud Native 实操系列"文章中,我们为大家介绍了如何通过京东云原生容器实现Eureka的部署(

  6. Kubernetes将弃用Docker!与 containerd容器引擎

    时间戳:2022-06-07 20:32:19 星期二 撰写文档参考:(阿良-腾讯课堂)Kubernetes将弃用Docker 参考博客k8s入坑之路(3)containerd容器 container ...

  7. Kubernetes容器运行时弃用Docker转型Containerd

    文章转载自:https://i4t.com/5435.html Kubernetes社区在2020年7月份发布的版本中已经开始了dockershim的移除计划,在1.20版本中将内置的dockersh ...

  8. containerd 与安全沙箱的 Kubernetes 初体验

    作者 | 易立  阿里云资深技术专家 containerd 是一个开源的行业标准容器运行时,关注于简单.稳定和可移植,同时支持 Linux 和 Windows. 2016 年 12 月 14 日,Do ...

  9. docker、oci、runc以及kubernetes梳理

    容器无疑是近年来云计算中最火热的关键词.随着docker的大热,docker.oci.runc.containerd等等名词也逐渐传播开来.这么多的名词,也容易让人混淆.本文对相关名词和其之间的联系进 ...

随机推荐

  1. python初识(3)

    bool 字符串 for循环 bool 数字非零全都是True 字符串非空全都是True 字符串 索引 从0开始 0 切片选取 [x:y] 左闭右开区间 [x:y:z] 选取x到y之间 每隔z选取一次 ...

  2. ffmpeg+nginx将rtsp转为rtmp

    一.安装ffmpeg 1.http://ffmpeg.org/download.html下载地址,选择合适的操作系统版本下载,因为我的操作系统是centos7,所以下面的安装都是命令都是针对cento ...

  3. 什么是Task

    什么是Task Task是.Net4.0新增用来处理异步编程的,叫做基于“任务编程模型”,任务其实是架构在线程之上的,具体操作的时候还是由线程去执行的,任务的管控有点类似于线程池,程序中开10个Tas ...

  4. 用SpringBoot+MySql+JPA实现对数据库的增删改查和分页

    使用SpringBoot+Mysql+JPA实现对数据库的增删改查和分页      JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述 ...

  5. Mac上Ultra Edit的激活

    2016-11-20 增加16.10.0.22破解 去官网下载原载,先运行一次,再在终端里执行下面代码就可以破解完成!printf '\x31\xC0\xFF\xC0\xC3\x90' | dd se ...

  6. android网络编程_socket(一)

    转载http://www.eoeandroid.com/thread-97477-1-1.html 小知识点:UDP协议和TCP协议的不同.UDP是把数据都打成数据包,数据包上自带通信的地址,但是数据 ...

  7. MyBatis从入门到精通(十三):使用discriminator鉴别器映射

    最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解鉴别器映射discri ...

  8. 双剑合璧——掌握 cURL 和 Dig 走天涯

    如今随着大量的应用转移到网络,作为开发者,会经常做一些通讯测试,例如从网站获取信息.模拟用户向网站提交或者上传数据,查看应用通讯情况等等,现在变成了非常重要的任务. 一起来认识 cURL cURL 是 ...

  9. python 3.5学习笔记(第三章)

    本章内容 1.集合及其运算 2.文件操作 3.字符编码与转码 4.函数与函数式编程 5.局部变量与全局变量 6.递归 7.补充知识点 一.集合及其运算 1.概念: set集合是一个不重复元素集,用 { ...

  10. Hive的基本操作和数据类型

    Hive的基本操作 1.启动Hive bin/hive 2.查看数据库 hive>show databases; 3. 打开默认数据库 hive>use default; 4.显示defa ...