Skip to content

设计要求

Kata Containers 运行时必须完全满足下面这些要求。

1. OCI 兼容性

Kata Containers runtime 必须实现兼容性 OCI runtime 标准及所有的 OCI runtime 操作。

2. runc CLI 兼容性

理论上,只要兼容 OCI 就足够了。实际上,Kata Containers 运行时应该遵守最新的稳定 runc CLI。

特别是,它必须实现以下 runc 命令:

  • create
  • delete
  • exec
  • kill
  • list
  • pause
  • ps
  • start
  • state
  • version

Kata Containers 运行时必须实现以下命令行选项:

  • --console-socket
  • --pid-file

3. CRI and Kubernetes 支持

Kata Containers 必须为 CRI shims 提供两个接口来管理基于硬件虚拟化的 Kubernetes pods 和 containers:

  • 一个与 OCI 和 runc 兼容的命令行接口,如上一节所述。例如,CRI-O 和 cri-containerd 等实现使用了此接口。
  • 一个用于 CRI 的硬件虚拟化运行时库 API ,并提供更多的 CRI 本地实现。

4. 多种硬件架构支持

Kata Containers 运行时不能是特定于体系结构的。它应该能够支持多种硬件体系结构,并提供模块化和灵活的设计来增加对其他硬件体系结构的支持。

5. 多种 hypervisor 支持

Kata Containers 运行时不能与任何特定的硬件虚拟化技术、 hypervisors 或虚拟机监视器实现绑定。

它应该支持多个 hypervisors ,并提供一个可插拔和灵活的设计,以增加对其他 hypervisors 的支持。

5.1 嵌套

The Kata Containers runtime 必须支持嵌套虚拟化环境。

6. 联网

  • Kata Containers runtime 必须支持 CNI 插件
  • Kata Containers runtime 必须支持传统网络和 IPv6网络。

7. I/O

7.1 设备直接分配

为了让容器直接消耗主机硬件资源,Kata Containers runtime 必须通过利用 I/O 虚拟化技术(IOMMU,中断重映射)为容器提供安全的通道,以供GPU,SRIOV,RDMA,QAT等通用设备使用。

7.2 加速

Kata Containers runtime 必须支持网络的加速和网络的基于用户空间的 I/O 操作(例如DPDK)以及通过 vhost-user 套接字的存储。

7.3 可扩展性

Kata Containers runtime 必须通过 SRIOV 技术支持可扩展的 I/O。

8. 降低虚拟化开销

与裸金属应用程序相比,容器的一个引人注目的方面是它们的开销很小。容器运行时应将开销降至最低,以便提供预期的用户体验。Kata Containers runtime 实现应该针对以下方面进行优化:

  • 最小的工作负载启动和关闭时间

  • 最小的工作负载内存占用

  • 最大网络吞吐量

  • 最小的网络延迟