我使用 KubeAdm 设置了一个 Kubernetes 集群(在 AWS Cloud 中的 EC2 实例中设置)。使用的 CNI 是 Flannel,集群运行良好。我的要求是尝试设置虚拟化技术(https://kubevirt.io/) 在我的集群中配置虚拟机和集群中的 pod。KubeVirt 是 CNCF 的一个开源沙盒项目。我已经设置了 KubeVirt,它运行良好。我按照此链接中的步骤设置了 KubeVirt:https://kubevirt.io/quickstart_cloud/
之后,我想在 Kubernetes 集群中启动一个 VM。因此,我遵循了以下官方文档:https://kubevirt.io/labs/kubernetes/lab1.html
VM 已创建,但处于“调度'阶段。我观察到,与虚拟机一起,集群中还创建了一个关联的 pod。问题是这个特定的 pod 没有得到安排,处于待处理状态。
描述了 pod 之后,我收到以下错误消息,其中说明了有关设备插件的一些信息:
警告 FailedScheduling 2m5s(22m 内 x4)默认调度程序 0/2 节点可用:2 devices.kubevirt.io/kvm 不足。抢占:0/2 节点可用:2 未找到传入 pod 的抢占受害者。
我的工作节点中没有污点,但是这个 pod 不会被调度。然后我找到了一个提到 KubeVirt 的设备插件的链接(https://kubevirt.io/2018/KVM-Using-Device-Plugins.html)。
查看 Worker 节点描述,在“可分配->devices.kubevirt.io/kvm' 它被提及为“110“当我编辑我的工作节点时,它是”0“
我尝试编辑工作节点并将值更改为“110”。我保存了更改并显示node/kube-c2-workernode-02-poc edited
。
但是,我再次编辑后,之前添加的更改完全消失了,就好像我根本没有修改它一样。我尝试通过增加 EBS 卷中的 CPU 核心、内存和 IOPS 来增加工作节点规格。但毫不费力,结果仍然相同。
那么,在经历了反复思考并找到问题所在之后,我该如何更改 Kubernetes 中工作节点的资源分配并正确保存它?
答案1
Kubevirt 需要启用虚拟化。
这些“可分配”/“容量”不是您可以/不应该自己更改的东西。它们只是反映了您节点的状态:您无法在此处托管虚拟机,因此您的 virt-launcher Pod 处于待处理状态。
目前,在 EC2 中实现此功能的唯一方法是使用金属实例。
在裸机上,一般来说:我们应确保在 BIOS 级别启用虚拟化指令 (VT-x / AMD-v)。此时,您的节点将注册可以调度虚拟机。