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 实现应该针对以下方面进行优化:

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

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

  • 最大网络吞吐量

  • 最小的网络延迟