例如,我可以让一个 pod 运行 docker,另一个 pod 运行 cri-o 吗?
我是 kubernetes 世界的新手,我无法在文档中找到答案。
答案1
在 Kubernetes 1.20 版本中,有一个概念运行时类。这基本上在 Pod 级别告诉 Kubernetes 使用哪个容器引擎来运行该 Pod。
您可以在不同的 Pod 之间设置不同的 RuntimeClass,以在性能和安全性之间取得平衡。例如,如果您的部分工作负载需要高级别的信息安全保障,您可以选择安排这些 Pod 在使用硬件虚拟化的容器运行时中运行。然后,您将受益于替代运行时的额外隔离,但需要付出一些额外的开销。
您还可以使用 RuntimeClass 来运行具有相同容器运行时但具有不同设置的不同 Pod。
有了这些,你就可以使用微型虚拟机/轻量级虚拟机等概念来运行 pod。这个概念并不是 Kubernetes 或容器编排所特有的,而是来自沙盒应用程序的相关领域(例如,作为打开不受信任网站的附件的浏览器安全增强功能)。例如,请参阅此用于应用程序沙盒的微型虚拟机比较。
对于 Kubernetes,gVisor 和 Kata 等技术(以及其他;请参阅CNCF 上的容器运行时概况) 旨在提供价值。
可用的功能将在很大程度上取决于 Kubernetes 发行版及其 VM 基础设施的设置方式。