zoukankan      html  css  js  c++  java
  • containerd与kubernetes集成部署

    概念介绍

    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并默认启用。
    

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

    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)工具。
    

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

    概述

    由于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的集成就完成了。下面可以直接安装即可。

    原文来自:https://sealyun.com/post/containerd/

    本文地址:https://www.linuxprobe.com/containerd-kubernetes.html编辑:吴向平,审核员:逄增宝

    Linux命令大全:https://www.linuxcool.com/

  • 相关阅读:
    微服务之初识微服务
    常见的认证机制及JSON WEB TOKEN
    深入理解缓存之缓存预热与淘汰策略
    深入理解缓存之缓存和数据库的一致性
    深入理解缓存之缓存存在的问题及应对措施
    深入理解缓存之常见的缓存算法
    计算机网络之HTTP、HTTPS、HTTP2
    计算机网络之TCP(三次握手、四次挥手等),UDP及DNS
    计算机网络之网络体系架构与IP
    深入理解MyBatis(四)--缓存
  • 原文地址:https://www.cnblogs.com/linuxprobe-sarah/p/10879540.html
Copyright © 2011-2022 走看看