zoukankan      html  css  js  c++  java
  • k8s入坑之路(3)containerd容器

    containerd概念:

    containerd主要是namebases与k8s docker不同 存放路径不一致 没有默认仓库

    容器运行时:

    2020年未kubernetes宣布不再支持docker

    docker由libcontainer及containerd组成将libcontainer捐赠给OCI开源基金会将libcontainer改名runc,OCI定义了镜像规范,运行时规范。(镜像标准镜像组织结构包含各种文件目录等,运行时如何启动一个容器需要接受那些指定,配置生命周期等,如何划分cgroup等)runc实现。

    CNCF(云原生计算机协会)成立容器编排大战中由kubernetes胜出,docker将containerd捐赠CNCF,containerd比runc更高一层的封装。

    kubernetes为了保持中立性在1.5版本推出CRI机制,CRI本质是GRPC接口的定义。容器操作接口,镜像操作接口。第一个实现接口的是containerd。

     

    kubernetes为了支持docker自己做了dockershim垫片,kubelet调用grpc接口调用dockershim,然后dockershim通过CRI去电泳docker api,docker去操作containerd。kubernetes宣布不再支持docker cri实现是把dockershim去掉。

    缺点:各软件需要适配,包括适配新版kubernetes及containerd。containerd镜像拉取存在问题。尽量使用私有仓库进行避免。

     containerd架构:

    # 1. Container Runtime - Containerd
    #### 1.1 软件包下载
    ```bash
    # 设定containerd的版本号
    $ VERSION=1.4.3
    # 下载压缩包
    $ wget https://github.com/containerd/containerd/releases/download/v${VERSION}/cri-containerd-cni-${VERSION}-linux-amd64.tar.gz
    ```
    #### 1.2 整理压缩文件
    下载后的文件是一个tar.gz,是一个allinone的包,包括了runc、circtl、ctr、containerd等容器运行时以及cni相关的文件,解压缩到一个独立的目录中
    ```bash
    # 解压缩
    $ tar -xvf cri-containerd-cni-${VERSION}-linux-amd64.tar.gz
    # 复制需要的文件
    $ cp etc/crictl.yaml /etc/
    $ cp etc/systemd/system/containerd.service /etc/systemd/system/
    $ cp -r usr /
    ```
    #### 1.3 containerd配置文件
    ```bash
    $ mkdir -p /etc/containerd
    # 默认配置生成配置文件
    $ containerd config default > /etc/containerd/config.toml
    # 定制化配置(可选)
    $ vi /etc/containerd/config.toml
    ```
    #### 1.4 启动containerd
    ```bash
    $ systemctl enable containerd
    $ systemctl restart containerd
    # 检查状态
    $ systemctl status containerd
    ```
    containerd安装

      

      操作containerd使用的命名空间不同,镜像物理隔离目录完全不同。

    命令

    ctr i -h查看帮助
    
    ctr i pull docker.io/library/redis:alpine 拉取镜像(默认不带镜像仓库地址) docker pull docker.io/library/redis:alpine docker仓库会自动补全
    
    ctr i ls 查看镜像
    
    ctr ns 查看命名空间 c 创建 ls 查看  rm删除 label设置标签
    
    docker tag redis:alpine registry.cn-hangzhou.aliyuncs.com/imooc/redis:alpine将镜像重新打标签
    
    docker push registry.cn-hangzhou.aliyuncs.com/imooc/redis:alpin上传镜像
    
    ctr i pull registry.cn-hangzhou.aliyuncs.com/imooc/redis:alpin 拉取镜像
    
    ctr i ls查看镜像
    
    ctr run -t -d registry.cn-hangzhou.aliyuncs.com/imooc/redis:alpin redis 启动容器
    
    ctr c ls查看当前运行容器
    
    ctr t ls 查看当前运行任务
    
    ctr t kill 杀掉当前任务
    
    ctr t rm 删除任务
    
    ctr c rm 删除容器
    
    ctr -n default t ls 查看当前命名空间任务
    
    k8s给containerd提供crictl命令
    
    crictl images 查看镜像
    
    crictl ps 查看进程
    
    crictl pod 查看pod

    crictl logs 查看日志

    crictl exec 进入容器

    alias docker=crictl 将crictl转变为docker命令操作ctr

      ctr -n k8s.io i tag registry.cn-hangzhou.aliyuncs.com/kubernetes-kubespray/pause:3.2 k8s.gcr.io/pause:3.2 重新将镜像打一个tag

     docker变成docker ce后默认命名空间moby containerd默认空间default kubernetes默认空间k8s.io

    kubectl命令自动补全

    linux:
    
    # yum install -y bash-completion
    # locate bash_completion
    /usr/share/bash-completion/bash_completion
    # source /usr/share/bash-completion/bash_completion
    # source <(kubectl completion bash)
    
    
    macos:
    
    $ brew install bash-completion
    $ source $(brew --prefix)/etc/bash_completion
    $ source <(kubectl completion bash)
    View Code
  • 相关阅读:
    1. Ubuntu下使用pip方式安装tensorflow
    CSS 属性
    django运行django-admin.py无法创建网站
    jQuery各种效果举例
    一生莫轻舞,一舞一生苦
    即使你美丽动人,也要具备更华丽的着装
    即使有一颗强大的心,也要让人看到你美丽的外表
    python操作RabbiMQ
    windows下python安装paramiko
    python用paramiko将执行的结果存入excel表格
  • 原文地址:https://www.cnblogs.com/dahuige/p/14917691.html
Copyright © 2011-2022 走看看