10.8. 启用或禁用虚拟机删除保护


您可以通过为虚拟机启用删除保护来防止意外删除虚拟机(VM)。您还可以禁用虚拟机的删除保护。

您可以通过 OpenShift Container Platform Web 控制台中的命令行或虚拟机的 VirtualMachine 详情页 启用或禁用删除保护。选项默认为禁用。

您还可以选择删除您管理的集群中任何虚拟机的删除保护选项可用。在这种情况下,启用了该功能的虚拟机会保留保护,而选项对任何新创建的虚拟机都不可用。

要防止意外删除虚拟机(VM),您可以使用 OpenShift Container Platform web 控制台启用虚拟机删除保护。您还可以禁用虚拟机的删除保护。

默认情况下,虚拟机不启用删除保护。您必须为每个独立虚拟机设置选项。

流程

  1. 在 OpenShift Container Platform Web 控制台中选择您的视图:

    • 对于以虚拟化为中心的视图,请选择 Administrator Virtualization VirtualMachines
    • 对于常规视图,进入到 Virtualization VirtualMachines
  2. VirtualMachines 列表中,选择删除您要启用或禁用的保护的虚拟机。
  3. Configuration 选项卡。
  4. VirtualMachines 详情中,选择启用或禁用保护,如下所示:

    • 启用保护:

      1. Deletion 保护 开关设置为 On
      2. 单击 Enable 以确认保护。
    • 禁用保护:

      1. 将删除 保护 开关设置为 Off
      2. Disable 来禁用保护。

10.8.2. 使用 CLI 启用或禁用虚拟机删除保护

要防止意外删除虚拟机(VM),您可以使用命令行启用虚拟机删除保护。您还可以禁用虚拟机的删除保护。

默认情况下,虚拟机不启用删除保护。您必须为每个独立虚拟机设置选项。

先决条件

  • 已安装 OpenShift CLI(oc)。

流程

  • 运行以下命令为虚拟机启用删除保护:

    $ oc patch vm <vm_name> --type merge -p '{"metadata":{"labels":{"kubevirt.io/vm-delete-protection":"True"}}}' -n <namespace>
    Copy to Clipboard Toggle word wrap
  • 运行以下命令禁用虚拟机的删除保护:

    $ oc patch vm <vm_name> --type json -p '[{"op": "remove", "path": "/metadata/labels/kubevirt.io~1vm-delete-protection"}]' -n <namespace>
    Copy to Clipboard Toggle word wrap

10.8.3. 删除 VM 删除保护选项

当您启用对虚拟机(VM)的删除保护时,您可以确保无法意外删除虚拟机。您还可以禁用虚拟机的保护。

作为集群管理员,您可以选择使 VM 删除保护选项可用。启用了删除保护的虚拟机会保留该设置;对于任何创建的新虚拟机,不允许启用该选项。

您可以通过为集群建立验证准入策略来删除删除保护选项,然后创建必要的绑定以在集群中使用策略。

先决条件

  • 您必须具有集群管理员特权。
  • 已安装 OpenShift CLI(oc)。

流程

  1. 创建验证准入策略,如下例所示:

    验证准入策略文件示例

    apiVersion: admissionregistration.k8s.io/v1
    kind: ValidatingAdmissionPolicy
    metadata:
      name: "disable-vm-delete-protection"
    spec:
      failurePolicy: Fail
      matchConstraints:
        resourceRules:
        - apiGroups:   ["kubevirt.io"]
          apiVersions: ["*"]
          operations:  ["UPDATE", "CREATE"]
          resources:   ["virtualmachines"]
      variables:
        - expression: string('kubevirt.io/vm-delete-protection')
          name: vmDeleteProtectionLabel
      validations:
      - expression: >-
          !has(object.metadata.labels) ||
          !object.metadata.labels.exists(label, label == variables.vmDeleteProtectionLabel) ||
          has(oldObject.metadata.labels) &&
          oldObject.metadata.labels.exists(label, label == variables.vmDeleteProtectionLabel)
        message: "Virtual Machine delete protection feature is disabled"
    Copy to Clipboard Toggle word wrap

  2. 将验证准入策略应用到集群:

    $ oc apply -f disable-vm-delete-protection.yaml
    Copy to Clipboard Toggle word wrap
  3. 创建验证准入策略绑定,如下例所示:

    验证准入策略绑定文件示例

    apiVersion: admissionregistration.k8s.io/v1
    kind: ValidatingAdmissionPolicyBinding
    metadata:
      name: "disable-vm-delete-protection-binding"
    spec:
      policyName: "disable-vm-delete-protection"
      validationActions: [Deny]
      matchResources:
    Copy to Clipboard Toggle word wrap

  4. 将验证准入策略绑定应用到集群:

    $ oc apply -f disable-vm-delete-protection-binding.yaml
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat