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. # 1. Container Runtime - Containerd
  2. #### 1.1 软件包下载
  3. ```bash
  4. # 设定containerd的版本号
  5. $ VERSION=1.4.3
  6. # 下载压缩包
  7. $ wget https://github.com/containerd/containerd/releases/download/v${VERSION}/cri-containerd-cni-${VERSION}-linux-amd64.tar.gz
  8. ```
  9. #### 1.2 整理压缩文件
  10. 下载后的文件是一个tar.gz,是一个allinone的包,包括了runccirctlctrcontainerd等容器运行时以及cni相关的文件,解压缩到一个独立的目录中
  11. ```bash
  12. # 解压缩
  13. $ tar -xvf cri-containerd-cni-${VERSION}-linux-amd64.tar.gz
  14. # 复制需要的文件
  15. $ cp etc/crictl.yaml /etc/
  16. $ cp etc/systemd/system/containerd.service /etc/systemd/system/
  17. $ cp -r usr /
  18. ```
  19. #### 1.3 containerd配置文件
  20. ```bash
  21. $ mkdir -p /etc/containerd
  22. # 默认配置生成配置文件
  23. $ containerd config default > /etc/containerd/config.toml
  24. # 定制化配置(可选)
  25. $ vi /etc/containerd/config.toml
  26. ```
  27. #### 1.4 启动containerd
  28. ```bash
  29. $ systemctl enable containerd
  30. $ systemctl restart containerd
  31. # 检查状态
  32. $ systemctl status containerd
  33. ```

containerd安装

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

命令

  1. ctr i -h查看帮助
  2.  
  3. ctr i pull docker.io/library/redis:alpine 拉取镜像(默认不带镜像仓库地址) docker pull docker.io/library/redis:alpine docker仓库会自动补全
  4.  
  5. ctr i ls 查看镜像
  6.  
  7. ctr ns 查看命名空间 c 创建 ls 查看 rm删除 label设置标签
  8.  
  9. docker tag redis:alpine registry.cn-hangzhou.aliyuncs.com/imooc/redis:alpine将镜像重新打标签
  10.  
  11. docker push registry.cn-hangzhou.aliyuncs.com/imooc/redis:alpin上传镜像
  12.  
  13. ctr i pull registry.cn-hangzhou.aliyuncs.com/imooc/redis:alpin 拉取镜像
  14.  
  15. ctr i ls查看镜像
  16.  
  17. ctr run -t -d registry.cn-hangzhou.aliyuncs.com/imooc/redis:alpin redis 启动容器
  18.  
  19. ctr c ls查看当前运行容器
  20.  
  21. ctr t ls 查看当前运行任务
  22.  
  23. ctr t kill 杀掉当前任务
  24.  
  25. ctr t rm 删除任务
  26.  
  27. ctr c rm 删除容器
  28.  
  29. ctr -n default t ls 查看当前命名空间任务
  30.  
  31. k8scontainerd提供crictl命令
  32.  
  33. crictl images 查看镜像
  34.  
  35. crictl ps 查看进程
  36.  
  37. 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

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

kubectl命令自动补全

  1. linux:
  2.  
  3. # yum install -y bash-completion
  4. # locate bash_completion
  5. /usr/share/bash-completion/bash_completion
  6. # source /usr/share/bash-completion/bash_completion
  7. # source <(kubectl completion bash)
  8.  
  9. macos:
  10.  
  11. $ brew install bash-completion
  12. $ source $(brew --prefix)/etc/bash_completion
  13. $ source <(kubectl completion bash)

k8s入坑之路(3)containerd容器的更多相关文章

  1. k8s入坑之路(4)kubenetes安装

    三种安装方法: 1.kubeadm 2.kubespray 3.二进制安装 kubespray安装kubernetes集群 优点: 1.kuberspray对比kubeadm更加简洁内部集成了kube ...

  2. k8s入坑之路(14)scheduler调度 kubelet管理及健康检查 更新策略

    kubelet 主要功能 Pod 管理 在 kubernetes 的设计中,最基本的管理单位是 pod,而不是 container.pod 是 kubernetes 在容器上的一层封装,由一组运行在同 ...

  3. k8s入坑之路(12)ingress-nginx安装配置四层代理

    ingress官方文档地址:http://docs.kubernetes.org.cn/  https://feisky.gitbooks.io/kubernetes/content/plugins/ ...

  4. k8s入坑之路(9)k8s网络插件详解

    Flannel: 最成熟.最简单的选择 Calico: 性能好.灵活性最强,目前的企业级主流 Canal: 将Flannel提供的网络层与Calico的网络策略功能集成在一起. Weave: 独有的功 ...

  5. k8s入坑之路(16)kubernetes中CICD/基于宿主机jenkins

    cicd的结合组件 需要代码仓库如gitlab.github.包构建工具Maven等,持续集成工具如jenkins,github/cicd.结合自己脚本实现重复式任务自动化. 传统服务发布流程: 提交 ...

  6. k8s入坑之路(15)kubernetes共享存储与StatefulSet有状态

    共享存储 docker默认是无状态,当有状态服务时需要用到共享存储 为什么需要共享存储: 1.最常见有状态服务,本地存储有些程序会把文件保存在服务器目录中,如果容器重新启停则会丢失. 2.如果使用vo ...

  7. k8s入坑之路(13)kubernetes重要资源(namespace隔离 resources资源管理 label)

    Namespace --- 集群的共享与隔离 语言中namespace概念 namespace核心作用隔离 以上是隔离的代码.namespace隔离的是: 1.资源对象的隔离:Service.Depl ...

  8. k8s入坑之路(13)服务迁移(定时任务 微服务 传统服务)

    定时任务迁移kubernetes 服务迁移步骤 1.安装好java 2.安装好maven 项目打包 mvn package 测试传参运行 java -cp cronjob-demo-1.0-SNAPS ...

  9. k8s入坑之路(10)kubernetes coredns详解

    概述 作为服务发现机制的基本功能,在集群内需要能够通过服务名对服务进行访问,那么就需要一个集群范围内的DNS服务来完成从服务名到ClusterIP的解析. DNS服务在kubernetes中经历了三个 ...

随机推荐

  1. Java基础系列(20)- while循环

    循环结构 while循环 do-循环 for循环 在java5中引入了一种主要用于数组的增强型for循环 while循环 while是最基本的循环,它的结构为 while(布尔表达式){ //循环内容 ...

  2. 一生挚友redo log、binlog《死磕MySQL系列 二》

    系列文章 原来一条select语句在MySQL是这样执行的<死磕MySQL系列 一> 一生挚友redo log.binlog<死磕MySQL系列 二> 前言 咔咔闲谈 上期根据 ...

  3. php 设计模式 --适配器

    1,目标:实现一个不同的类不同方法,符合一定的规范: 规范类 <?php interface Iplay{ function Attack(); function Defence(); } cl ...

  4. ActiveQq的代码实现

    ]从java代码开始再过渡到springboot Java代码的实现 1.activemq这个消息中间件有两种形式 1. p2p(生产者,消费者) 特点: 生产者: package com.lqh; ...

  5. 低差异序列 (low-discrepancy sequences)之Hammerysley在半球中采样点方法的介绍

    半球上的Hammersley 源作者:Holger Dammertz 一组关于如何在2D中使用Hammersley点集以在着色器程序中快速实用地生成半球方向的笔记.如果你发现任何错误或有意见,不要犹豫 ...

  6. Wannafly挑战赛23F-计数【原根,矩阵树定理,拉格朗日插值】

    正题 题目链接:https://ac.nowcoder.com/acm/contest/161/F 题目大意 给出\(n\)个点的一张图,求它的所有生成树中权值和为\(k\)的倍数的个数.输出答案对\ ...

  7. 日常学习用到的Git指令

    Git 常用Git指令 (本地) git init - 将文件夹初始化为Git仓库 git add - 将工作区的指定文件放入暂存区 git status - 查看工作区和暂存区的状态 git com ...

  8. ubuntu20.04安装网易云音乐

    Ubuntu20.04安装网易云 进入网易云音乐下载地址 下载对应客户端 进入终端,安装 sudo dpkg -i 软件名.deb

  9. Apache ShardingSphere 在京东白条场景的落地之旅

    京东白条使用 Apache ShardingSphere 解决了千亿数据存储和扩容的问题,为大促活动奠定了基础. 2014 年初,"京东白条"作为业内互联网信用支付产品,数据量爆发 ...

  10. GAN实战笔记——第二章自编码器生成模型入门

    自编码器生成模型入门 之所以讲解本章内容,原因有三. 生成模型对大多数人来说是一个全新的领域.大多数人一开始接触到的往往都是机器学习中的分类任务--也许因为它们更为直观:而生成模型试图生成看起来很逼真 ...