04.开放接口

开放接口

Kubernetes作为云原生应用的基础调度平台,相当于云原生的操作系统,为了便于系统的扩展,Kubernetes中开放的以下接口,可以分别对接不同的后端,来实现自己的业务逻辑:

  • CRI(Container Runtime Interface:容器运行时接口,提供计算资源
  • CNI(Container Network Interface:容器网络接口,提供网络资源
  • CSI(Container Storage Interface:容器存储接口,提供存储资源

CRI

CRI,Container Runtime Interface(容器运行时接口)中定义了容器和镜像的服务的接口,因为容器运行时与镜像的生命周期是彼此隔离的,因此需要定义两个服务。该接口使用Protocol Buffer,基于gRPC,在Kubernetes v1.10+版本中是在pkg/kubelet/apis/cri/runtime/v1alpha2api.proto中定义的。

Container Runtime实现了CRI gRPC Server,包括RuntimeServiceImageService。该gRPC Server需要监听本地的Unix socket,而kubelet则作为gRPC Client运行。

CNI

CNI(Container Network Interface)是CNCF旗下的一个项目,由一组用于配置Linux容器的网络接口的规范和库组成,同时还包含了一些插件。CNI仅关心容器创建时的网络分配,和当容器被删除时释放网络资源。Kubernetes源码的vendor/github.com/containernetworking/cni/libcni目录中已经包含了CNI的代码,也就是说Kubernetes中已经内置了CNI

CSI

CSI, Container Storage Interface(容器存储接口)CSI代表容器存储接口,CSI试图建立一个行业标准接口的规范,借助CSI容器编排系统(CO)可以将任意存储系统暴露给自己的容器工作负载。有关详细信息,请查看设计方案。

CSI卷类型是一种out-tree(即跟其它存储插件在同一个代码路径下,随Kubernetes的代码同时编译的)的CSI卷插件,用于Pod与在同一节点上运行的外部CSI卷驱动程序交互。部署CSI兼容卷驱动后,用户可以使用CSI作为卷类型来挂载驱动提供的存储。

上一页
下一页