【.com快译】当我们开始努力将OracleLinux云原生环境与KataContainers(卡塔容器)集成的时候,我立刻被KataContainers给安全带来的改变所折服容器的边界。印象深刻,我只想知道它是如何工作的。本文试图简单介绍一下Kata容器的那些事。在深入了解Kata容器之前,您可能想了解一下Linux容器的简史。1、什么是Kata容器?Kata容器是一个开源项目。社区致力于使用轻量级虚拟机构建安全的容器运行环境。这些虚拟机在感觉和性能上都像容器,但使用硬件虚拟化技术作为第2层防御提供更强的工作负载隔离。Kata容器源自IntelClearContainers和HyperRunV项目。Kata容器使用现有的CPU功能(例如IntelVT-X和AMD-V?)在同一主机上运行时更有效地隔离多个容器。每个容器都可以在自己的虚拟机中运行,具有自己的Linux内核。由于VM之间的边界,一个容器不应该能够访问另一个容器的内存(hypervisor+EPT/RVI)。runc是Linux上的运行时规范参考实现;当它生成容器时,它使用标准的Linux内核功能,如AppArmour、功能(7)、控制组、seccomp、SELinux和命名空间(7)来控制容器数据流的权限和访问。KataContainers通过将容器包装在虚拟机中来扩展这一点。2.什么时候应该使用Kata容器?runc是最常见的容器运行时环境,也是Docker?、CRI-O和Kubernetes?的默认系统。KataContainers为您提供了另一种选择,可以为混合使用或多租户环境提供更强的隔离。Kubernetes工作节点能够同时使用runc和Kata容器,因此不需要专用硬件。为了提高容器内的通信效率并减少资源使用开销,KataContainers在虚拟机中执行Kubernetespod的所有容器。决定何时使用runc以及何时使用Kata容器取决于您自己的安全策略和情况。影响何时需要更高级别隔离的一些因素包括:图像的来源——可信与不可信。此图像是内部生成的还是从公共注册表下载的?容器中的内容带来竞争优势内部软件容器处理数据集(公共与机密)在虚拟环境中工作会影响性能,因此建议进行特定于工作负载的监控测试以评估环境影响程度(如果有)。3.Kata容器是如何工作的?在安装OracleLinux云原生环境的Kubernetes模块时,runc和Kata容器都与CRI-O一起部署,为Kubernetes和容器运行环境提供了必要的支持。Kata容器使用高度优化的、专门调整的Linux内核来启动虚拟机,结合最小的用户空间来支持容器操作,它们共同提供了一个快速的初始化机制。为了创建Kata容器,Kubernetes用户必须首先创建一个RuntimeClass对象。然后Pod或部署可以引用RuntimeClass来指示要使用的运行时环境。使用容器运行时文档(https://docs.oracle.com/en/operating-systems/olcne/runtimes/kata-pod-create.html)中包含示例。KataContainers旨在提供“感觉和性能都像容器的轻量级虚拟机”;您的开发人员不需要知道他们的代码是在虚拟机中执行的,他们也不需要改变他们的工作流程来获得好处。原标题:KataContainers:What,WhenandHow,作者:MarkCram
