我命由我,不由天!


  • 搜索
prometheus docker golang linux kubernetes

CRI

发表于 2020-12-15 | 分类于 kubernetes | 0 | 阅读次数 649

CRI(container runtime interface)

实现:

image.png

Generic Runtime Manager:通用的运行时管理器

remote:CRI接口

  • CRI Server 如:创建/删除容器这样的接口
  • 流式数据接口 Streaming Server,如exec,port-forward 流式数据接口

循环:

  1. 通过List接口拿到容器的状态
  2. 通过Sandbox和Container 接口创建容器
  3. 镜像接口来拉取容器镜像

通过CRI操作容器的生命周期

比方说我们通过 kubectl 命令来运行一个 Pod,那么 Kubelet 就会通过 CRI 执行以下操作:

  • 首先调用 RunPodSandbox 接口来创建一个 Pod 容器,Pod 容器是用来持有容器的相关资源的,比如说网络空间、PID空间、进程空间等资源;
  • 然后调用 CreatContainer 接口在 Pod 容器的空间创建业务容器;
  • 再调用 StartContainer 接口启动容器,相对应的销毁容器的接口为 StopContainer 与 RemoveContainer。

CRI streaming 接口

exec 或者 attach 到容器的IO流中做各种交互命令

  1. exec 操作发送到apiserver,鉴权
  2. apiserver对kubelet server 发起exec 请求
  3. kubelet 调用 CRI 的exec 接口将具体的请求发送至容器的 runtime
  4. 跟streaming server 交互获取流式数据
  • 本文作者: Dante
  • 本文链接: https://gaodongfei.com/archives/c-r-i
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
# kubernetes
Argo
Gitops
  • 文章目录
  • 站点概览
Dante

Dante

119 日志
5 分类
5 标签
RSS
Creative Commons
0%
© 2023 Dante
由 Halo 强力驱动
|
主题 - NexT.Pisces v5.1.4
沪ICP备2020033702号