有没有办法在 GKE 集群节点中启用嵌套虚拟化?

che*_*lin 4 virtual-machine kubernetes google-kubernetes-engine

我正在尝试将 KubeVirt 与 GKE 集群一起使用。

我发现我能够创建启用嵌套虚拟化的 GCP VM,但我没有找到为 GKE 集群节点实现相同功能的方法。

如果我无法为 GKE 集群节点启用嵌套虚拟化,我只能将 kubevirt 与 debug.useEmulation 结合使用,这不是我想要的。

谢谢

小智 6

是的,你可以——这并不难做到,只是不太直观。

  1. 使用 ubuntu/containerd、n1 标准节点和 Haswell 的最低 cpu 启动 GKE 集群。我认为您还需要启用“基本授权”才能使 virtctl 正常工作(抱歉)。

  2. 找到用于新集群的模板,然后确定正确的源映像:

    gcloud 计算实例模板描述 --format=json | jq“.properties.disks[0].initializeParams.sourceImage”

  3. 创建启用嵌套虚拟化的源磁盘的副本:

    gcloud 计算映像 --project $PROJECT 创建 $NEW_IMAGE_NAME --source-image $SOURCE_IMAGE --source-image-project=$SOURCE_PROJECT --licenses "https://www.googleapis.com/compute/v1/projects/vm-选项/全局/许可证/启用-vmx”

  4. 在 GKE 集群的模板上使用“创建类似”。将启动磁盘更改为 $NEW_IMAGE_NAME。您还需要深入了解网络/别名,并将默认子网更改为您的 Pod 网络。

  5. 在 GKE 节点组上触发滚动更新,将它们移动到新模板。

  6. 您现在可以安装 kubevirt (我必须使用 0.38.1 而不是当前的)

注意事项:我不知道如何使用 kubevirt 的谷歌磁盘映像,这将是一个明显的匹配。我什至还没弄清楚如何让私人 GCR 与 CDI 一起工作。哦,由于 websocket 问题,控制台无法工作。但是...您可以通过 shell 访问 gke 节点并查看 /dev/kvm,您也可以 kubevirt 一个虚拟机,然后通过 ssh 连接到它,所以是的,它确实有效。

有人知道如何让这一切变得更好吗?