kubernetes中的kata

1.1 OCI 和 CRI-O

OCI 标准是为了避免容器标准被 Docker 独家挟持而出现的。

CRI 标准将 Kubelet 与运行时解耦,实现 CRI 标准的容器管理程序都可以用于 Pod 创建。

CRI-O 插件同时实现了 CRI 和 OCI 标准,可以用于替换 Containerd 直接与 runV 等 OCI runtime 对接。

如下图:

img

1.2 Kata 与 Containerd

为了兼容 OCI 标准,Docker 将管理运行时的功能从 Docker Daemon 中剥离出来,形成了 Containerd 。在运行容器时,可以不用 Docker 的 runc ,而替换为 kata-runtime 。

img

1.3 Kata 与 Kuberntes 的集成

如下图,Kata 主要替换的是 OCI runtime 层,其他部分与基于 Docker runc 的 Kubernetes 并无差异。同时,基于 kata-runtime 的 Pod 和基于 runc 的 Pod 可以共存于集群之中。

img

目前的主要问题是,Kata 不支持 host 网络。而 Kubernetes 中,etcd、nodelocaldns、kube-apiserver、kube-scheduler、metrics-server、node-exporter、kube-proxy、calico、kube-controller-manager 等,也就是 Static Pod 和 Daemonset 都会使用 host 网络。所以在安装部署时,依然使用 runc 作为默认的运行时,而将 kata-runtime 作为可选的运行时给特定的负载使用。