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)

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. jmeter5.2版本 配置元件之逻辑控制器详解

    1.简单控制器(Simple Controller) 作用:将多个请求放置在一起,但是没有逻辑上的操作,进行一个简单的分组,一般是由于分组后的请求需要进行统一的某个操作或者存在共同的因素.在简单控制器 ...

  2. TP框架中的一些登录代码分享

    <?php namespace Admin\Controller;use Think\Controller;class LoginController extends Controller{ p ...

  3. command ' cl.exe' failed: No such file or directory解决办法

    1.安装C ++编译器 https://pan.baidu.com/s/1D1-tM-mWO4TVLdTrh3k1GA    提取码:ym67 2.找到安装文件夹:Visual C++ Build T ...

  4. layui 添加复选框checkbox后,无法正确显示及点击的方法

    layui 添加复选框checkbox后,无法正确显示方式,这个是由于html里的样式添加 layui-form后,没有加载 form插件 ,具体如下: <body style="ba ...

  5. 鸿蒙内核源码分析(工作模式篇) | CPU是韦小宝,七个老婆 | 百篇博客分析OpenHarmony源码 | v36.04

    百篇博客系列篇.本篇为: v36.xx 鸿蒙内核源码分析(工作模式篇) | CPU是韦小宝,七个老婆 | 51.c.h .o 硬件架构相关篇为: v22.xx 鸿蒙内核源码分析(汇编基础篇) | CP ...

  6. mybatis: No enum constant org.apache.ibatis.type.JdbcType."VARCHAR"

    mybatis 插入的时候一句sql报错如下. org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ib ...

  7. 3.docker容器常用命令

    docker容器的常用命令 docker有很多命令,让我们一个一个全部背下来,基本是不可能的,帮助文档的作用就很大了,想要查询那个命令,直接去找帮助文档,帮助文档地址:https://docs.doc ...

  8. Spring MVC面试复习整理

    Spring MVC Spring MVC 是Spring Framework 提供的 web 组件 它的实现基于 MVC 的设计模式:Model(模型层).View(视图层).Controller( ...

  9. WPF实现聚光灯效果

    WPF开发者QQ群: 340500857  | 微信群 -> 进入公众号主页 加入组织 前言 效果仿照 CSS聚光灯效果 实现思路: 1. 设置底部Canvas背景色 #222222 . 2. ...

  10. 手把手教你 Docker部署可视化工具Grafana

    一.Grafana的简单介绍 Grafana是开源的.炫酷的可视化监控.分析利器,无论您的数据在哪里,或者它所处的数据库是什么类型,您都可以将它与Grafana精美地结合在一起.它还有丰富的套件供您选 ...