$ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
当节点过载时,OpenShift Virtualization 可以激活内核同页合并 (KSM)。KSM 可对在虚拟机 (VM) 的内存页中找到的相同数据进行重复数据删除。如果您拥有非常相似的虚拟机,KSM 可以使在单个节点上调度更多虚拟机成为可能。
您必须仅将 KSM 用于可信工作负载。 |
您可以配置 OpenShift Virtualization 以在节点遇到内存过载时激活内核同页合并 (KSM)。
您可以使用 OpenShift Container Platform Web 控制台或通过编辑 `HyperConverged` 自定义资源 (CR) 来为所有节点启用或禁用 KSM 激活功能。`HyperConverged` CR 支持更细粒度的配置。
您可以通过编辑 `HyperConverged` CR 的 `spec.configuration.ksmConfiguration` 节来配置 KSM 激活功能。
您可以通过编辑 `ksmConfiguration` 节来启用该功能和配置设置。
您可以通过删除 `ksmConfiguration` 节来禁用该功能。
您可以通过将节点选择语法添加到 `ksmConfiguration.nodeLabelSelector` 字段来允许 OpenShift Virtualization 仅在节点的子集上启用 KSM。
即使在 OpenShift Virtualization 中禁用了 KSM 激活功能,管理员仍然可以在支持它的节点上启用 KSM。 |
OpenShift Virtualization 会识别配置为支持 KSM 的节点并应用以下节点标签
kubevirt.io/ksm-handler-managed: "false"
当 OpenShift Virtualization 在遇到内存过载的节点上激活 KSM 时,此标签设置为 `"true"`。如果管理员激活 KSM,则此标签不会设置为 `"true"`。
kubevirt.io/ksm-enabled: "false"
即使 OpenShift Virtualization 没有激活 KSM,当在节点上激活 KSM 时,此标签也设置为 `"true"`。
这些标签不会应用于不支持 KSM 的节点。
您可以使用 OpenShift Container Platform Web 控制台允许 OpenShift Virtualization 在集群中的所有节点上激活内核同页合并 (KSM)。
在侧边菜单中,点击**虚拟化** → **概述**。
选择**设置**选项卡。
选择**集群**选项卡。
展开**资源管理**。
为所有节点启用或禁用此功能。
将**内核同页合并 (KSM)** 设置为开启。
将**内核同页合并 (KSM)** 设置为关闭。
您可以通过编辑HyperConverged
自定义资源 (CR) 来启用或禁用 OpenShift Virtualization 的内核同页合并 (KSM) 激活功能。如果您只想让 OpenShift Virtualization 在部分节点上激活 KSM,请使用此方法。
通过运行以下命令,在默认编辑器中打开HyperConverged
CR:
$ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv
编辑ksmConfiguration
部分
要为所有节点启用 KSM 激活功能,请将nodeLabelSelector
值设置为{}
。例如:
apiVersion: hco.kubevirt.io/v1beta1
kind: HyperConverged
metadata:
name: kubevirt-hyperconverged
namespace: openshift-cnv
spec:
configuration:
ksmConfiguration:
nodeLabelSelector: {}
# ...
要在部分节点上启用 KSM 激活功能,请编辑nodeLabelSelector
字段。添加与您希望 OpenShift Virtualization 启用 KSM 的节点匹配的语法。例如,以下配置允许 OpenShift Virtualization 在同时设置了<first_example_key>
和 <second_example_key>
为 "true"
的节点上启用 KSM:
apiVersion: hco.kubevirt.io/v1beta1
kind: HyperConverged
metadata:
name: kubevirt-hyperconverged
namespace: openshift-cnv
spec:
configuration:
ksmConfiguration:
nodeLabelSelector:
matchLabels:
<first_example_key>: "true"
<second_example_key>: "true"
# ...
要禁用 KSM 激活功能,请删除ksmConfiguration
部分。例如:
apiVersion: hco.kubevirt.io/v1beta1
kind: HyperConverged
metadata:
name: kubevirt-hyperconverged
namespace: openshift-cnv
spec:
configuration:
# ...
保存文件。