开放接口

Kubernetes作为云原生应用的的基础调度平台,相当于云原生的操作系统
为了便于系统的扩展,Kubernetes中开放的以下接口,可以分别对接不同的后端,来实现自己的业务逻辑
  • CRI(Container Runtime Interface):容器运行时接口,提供计算资源
  • CNI(Container Network Interface):容器网络接口,提供网络资源
  • CSI(Container Storage Interface):容器存储接口,提供存储资源

CRI

在这里插入图片描述

  • 概念:
- CRI 是 Kubernetes 用来与容器运行时进行交互的标准接口。
- 它定义了一套 RPC(远程过程调用)API,这些 API 被用来管理容器的生命周期。
- 因为容器运行时与镜像的生命周期是彼此隔离的,因此需要定义两个服务,该接口使用Protocol Buffer
- Container Runtime实现了CRI gRPC Server,包括RuntimeService和ImageService
	- RuntimeService:容器和Sandbox运行时管理
	- ImageService:提供了从镜像仓库拉取、查看、和移除镜像的RPC 
- 该gRPC Server需要监听本地的Unix socket,而kubelet则作为gRPC Client运行
  • 作用:CRI 使得 Kubernetes 能够支持多种容器运行时,如 Docker, containerd, CRI-O 等。这提高了系统的灵活性,允许用户根据自己的需要选择合适的容器运行时。
  • 原理:Kubelet 通过 CRI 与容器运行时进行通信,包括容器的启动、停止、状态查询等操作。CRI 将这些操作转换成容器运行时能够理解的命令和调用。

CNI

  • 概念:
    • CNI 是一个标准,用于定义容器应如何在网络层面进行交互和通信
    • 它指定了一系列网络配置和接口,容器运行时可以通过这些接口为容器配置网络。
  • 定义:
    • 该接口只有四个方法,添加网络、删除网络、添加网络列表、删除网络列表
  • 作用:
    • CNI 使得 Kubernetes 可以无缝集成各种网络解决方案,包括但不限于 Weave, Calico, Flannel, Cilium 等
    • 这些网络解决方案可以提供 Pod 网络、服务发现、负载均衡等功能。
  • 原理:当 Pod 被创建或删除时,Kubernetes 调用配置的 CNI 插件来分配或回收网络资源,如 IP 地址。CNI 插件负责设置 Pod 的网络命名空间、创建网络接口和设置路由规则等。

CSI

  • 概念:
    • CSI 是一个标准接口,用于将外部存储系统(如云提供商的存储服务或本地存储系统)连接到 Kubernetes 中
    • 它定义了一套标准的 API,用于容器和存储系统之间的交互。
  • 作用:
    • 通过 CSI,Kubernetes 用户可以使用各种存储解决方案,而无需等待 Kubernetes 本身去集成这些解决方案
    • 这大大加快了新存储技术的采用速度,并使得存储解决方案的提供者能够更快地向市场推出他们的产品。
  • 原理:
    • 当 Kubernetes 需要挂载存储卷到 Pod 上时,它会调用 CSI 插件来创建、配置和挂载卷
    • 同样地,当卷不再需要时,CSI 插件会负责卸载卷并执行必要的清理工作。
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐