我试图将KubeVirt与GKE集群一起使用。
我发现我能够创建一个嵌套虚拟化启用的GCP VM,但是我没有找到一种方法来为GKE群集节点实现相同的目的。
如果无法为GKE群集节点启用嵌套虚拟化,则只能将kubevirt与debug.useEmulation一起使用,这不是我想要的。
谢谢
答案 0 :(得分:2)
是的,你可以——这并不难,只是不是很直观。
使用 ubuntu/containerd、n1 标准节点和 Haswell 的最低 CPU 启动 GKE 集群。我认为您还需要启用“基本授权”才能使 virtctl 正常工作(抱歉)。
找到用于新集群的模板,然后确定正确的源图像:
gcloud 计算实例模板描述 --format=json | jq ".properties.disks[0].initializeParams.sourceImage"
在启用嵌套虚拟化的情况下创建源磁盘的副本:
gcloud 计算图像 --project $PROJECT create $NEW_IMAGE_NAME --source-image $SOURCE_IMAGE --source-image-project=$SOURCE_PROJECT --licenses "https://www.googleapis.com/compute/v1/projects /vm-options/global/licenses/enable-vmx"
在 GKE 集群的模板上使用“创建类似”。将启动盘更改为 $NEW_IMAGE_NAME。您还需要深入到网络/别名并将默认子网更改为您的 pod 网络。
为您的 GKE 节点触发组的滚动更新,以将它们移动到新模板。
您现在可以安装 kubevirt(我必须使用 0.38.1 而不是当前的)
警告:我不知道如何为 kubevirt 使用谷歌磁盘映像,这将是一个明显的匹配。我什至不知道如何让私有 GCR 与 CDI 一起工作。哦,由于 websocket 问题,控制台无法工作。但是...你可以shell到gke节点并查看/dev/kvm,你也可以kubevirt一个VM然后ssh进入它,所以是的,它确实有效。
有谁知道如何让这一切变得更好?
答案 1 :(得分:1)
根据this docs,目前仅在GCE上提供嵌套虚拟化。
关于在Nested Virtualization
上支持GKE
的问题已经存在,可以在here上找到。我会说还没有介绍它,这就是为什么您找不到有关GKE和nested virtualization
的适当文档。
还请考虑GCP
和GKE
完全不同。
Google Compute Engine
VM实例不受Google管理。因此,除了准备好的基础映像之外,您还可以执行任何需要的操作,就像普通的VM。
但是,Google Kubernetes Engine
是专门为容器而创建的。那些虚拟机由Google管理。 GKE
已经为您创建了集群,所有VM都自动成为集群的一部分。在GKE
中,您将无法运行Minikube
或Kubeadm
。
Here,您具有GKE
的某些特征