kubernetes之CRI详解

server/2024/10/18 15:00:51/

如何更好的用好Kubernetes CRI?本文尝试从CRI原理及作用、CRI执行流程、常见CRI及其优缺点、最佳实践及历史演进等方面进行阐述。希望对您有所帮助!

一、Kubernetes CRI 原理及作用

CRI(Container Runtime Interface,容器运行时接口) 是 Kubernetes 提供的一种标准接口,用于与不同的容器运行时集成。它通过定义一组标准化的 API,使得 Kubernetes 可以与多种容器运行时进行通信,从而实现容器的生命周期管理。

CRI 原理简介
  1. 抽象与标准化

    • CRI 作为一个抽象层,定义了一组 gRPC 接口,规范了容器的创建、启动、停止、删除等生命周期管理操作,以及容器镜像的拉取、列出和删除操作。这些接口包括 PodSandboxServiceRuntimeService
    • 容器运行时需要实现这些接口,以便与 Kubernetes 的 Kubelet 进行通信。
  2. 主要组件

    • Kubelet:Kubernetes 节点上的主要代理,负责管理节点上的容器和 Pod。Kubelet 使用 CRI 接口与底层容器运行时进行通信。
    • 容器运行时:实现 CRI 接口的具体容器运行时(如 containerd、CRI-O、Docker 等)。这些运行时通过实现 CRI 接口,向 Kubelet 提供所需的功能。
  3. 工作流程

    • 镜像管理
      • PullImage:Kubelet 请求容器运行时拉取指定的容器镜像。
      • ListImages:Kubelet 请求容器运行时列出本地存储的所有容器镜像。
      • RemoveImage:Kubelet 请求容器运行时删除指定的容器镜像。
    • Pod 和容器管理
      • RunPodSandbox:Kubelet 请求容器运行时创建一个新的 Pod 沙盒,提供网络和文件系统隔离。
      • StopPodSandbox:Kubelet 请求容器运行时停止一个 Pod 沙盒。
      • RemovePodSandbox:Kubelet 请求容器运行时删除一个 Pod 沙盒。
      • CreateContainer:Kubelet 请求容器运行时在 Pod 沙盒中创建一个新的容器
      • StartContainer:Kubelet 请求容器运行时启动已创建的容器
      • StopContainer:Kubelet 请求容器运行时停止正在运行的容器
      • RemoveContainer:Kubelet 请求容器运行时删除已停止的容器
    • 容器状态检查
      • ListContainers:Kubelet 请求容器运行时列出所有容器的信息。
      • ContainerStatus:Kubelet 请求容器运行时提供指定容器的详细状态信息。
CRI 的作用
  1. 解耦 Kubernetes 与容器运行时

    • CRI 将 Kubernetes 与具体的容器运行时解耦,允许 Kubernetes 支持多种容器运行时,而不需要修改 Kubernetes 的核心代码。
  2. 增强灵活性

    • 用户可以根据需求选择最适合的容器运行时(如 Docker、containerd、CRI-O),并能够在不同的运行时之间轻松切换。
  3. 标准化与一致性

    • CRI 提供了一组标准化的接口,使得不同容器运行时的实现更加规范和一致,简化了开发和维护工作。
  4. 便于扩展

    • 新的容器运行时可以实现 CRI 接口,并与 Kubernetes 集成,而不需要对 Kubernetes 本身进行修改。这增强了系统的可扩展性。
  5. 促进生态系统发展

    • CRI 促进了容器运行时生态系统的发展,使得更多的运行时能够与 Kubernetes 集成,为用户提供更多的选择。

通过 CRI,Kubernetes 实现了对容器运行时的标准化和抽象化,增强了系统的灵活性和可扩展性,同时简化了与容器运行时的集成过程。

二、Kubernetes CRI执行流程

当理解 Kubernetes 中的 CRI(Container Runtime Interface)执行逻辑时,需要考虑到其涉及的具体步骤和各组件之间的详细交互。以下是更详细的 CRI 执行逻辑示意图及其解释:

详细的 CRI 执行逻辑示意图和解释

+------------------------+          +-------------------------+          +------------------------+
|                        |          |                         |          |                        |
|      Kubernetes        |          |       CRI Plugin        |          |   Container Runtime

http://www.ppmy.cn/server/53699.html

相关文章

计算机网络知识整理笔记

目录 1.对网络协议的分层? 2.TCP/IP和UDP之间的区别? 3.建立TCP连接的三次握手? 4.断开TCP连接的四次挥手? 5.TCP协议如何保证可靠性传输? 6.什么是TCP的拥塞控制? 7.什么是HTTP协议? 8…

如何加速AI原生应用进程?华为云开天aPaaS提出新范式

每一次新旧代际转换时,都会上演这样的一幕:“畅想很多,落地很少”,AI原生应用似乎也不例外。 关于AI原生应用的呼声已经持续一段时间,但普通用户对“AI原生”依然陌生。除了新业态普及的周期性,AI原生应用…

Spring 动态增强逻辑执行分析

1、假如UserService中存在被增强的public 普通方法,那么spring ioc时就会创建对应的代理对象放置到容器中; 2、那么Controller中注入的userService就是代理对象; Service public class UserService {Transactionalpublic void f2(String us…

Qt之Pdb生成及Dump崩溃文件生成与调试(含注释和源码)

文章目录 一、Pdb生成及Dump文件使用示例图1.Pdb文件生成2.Dump文件调试3.参数不全Pdb生成的Dump文件调试 二、个人理解1.生成Pdb文件的方式2.Dump文件不生产的情况 三、源码Pro文件mian.cppMainWindowUi文件 总结 一、Pdb生成及Dump文件使用示例图 1.Pdb文件生成 下图先通过…

debian打包小结

背景 业务需要,打一个openstack组件的deb包 openstack组件有setup.py可直接支持打rpm包,但不支持deb包,所以手动打deb包 用了dh_make准备打包文件,然后用debuild或dpkg-buildpackages打deb包 步骤 方法有很多,我用…

【2024-06-21】网易互娱秋招实习笔试三道编程题解

恭喜发现宝藏!搜索公众号【TechGuide】回复公司名,解锁更多新鲜好文和互联网大厂的笔经面经。 作者@TechGuide【全网同名】 订阅专栏: 【专享版】2024最新大厂笔试真题解析,错过必后悔的宝藏资源! 第一题:阴阳师斗技 题目描述 小盖正在参加阴阳师的斗技。已知斗技的规…

【STM32】看门狗

1.看门狗简介 看门狗起始就是一个定时器,从功能上说它可以让微控制器在程序发生意外(程序进入死循环或跑飞)的时候,能重新恢复到系统刚上电状态,以保障系统出问题的时候可以重启一次。说的简单一点,看门狗…

深入剖析Tomcat(十、十一) 详解StandardWrapper

《深入剖析Tomcat》第十章介绍了Tomcat的安全机制,主要就是对servlet的访问做安全验证,如果Tomcat中设置了某些servlet需要指定角色的用户才能访问,则需要客户端进行登录验证,如果用户名密码正确并且该用户拥有该角色的话&#xf…