管理虚拟机

本页面介绍了如何管理在 Google Distributed Cloud 上运行的Google Distributed Cloud 上的虚拟机运行时中的虚拟机。在完成本页面上的步骤之前,您必须熟悉 VM Runtime on GDC。如需查看受支持的客机操作系统列表,请参阅适用于 VM Runtime on GDC 的经过验证的客机操作系统

如需了解虚拟机如何成为分布式云平台的重要组成部分,请参阅扩展 GKE Enterprise 以管理本地边缘虚拟机

本地控制平面集群支持虚拟机 webhook。这样一来,Distributed Cloud 就可以验证用户向本地 Kubernetes API 服务器发出的请求。遭拒的要求会生成有关拒绝原因的详细信息。

在 Distributed Cloud 上启用 VM Runtime on GDC 支持

默认情况下,Distributed Cloud 上已停用 VM Runtime on GDC 虚拟机支持。如需启用该功能,请完成本部分中的步骤。本部分中的说明假定您已拥有一个可正常运行的 Distributed Cloud 集群。

用于在 Distributed Cloud 上配置 VM Runtime on GDC 支持的 VMRuntime 资源还可通过使用 enableGPU 参数在集群上配置 GPU 支持。请务必根据工作负载需求配置这两个参数。您不必启用 GPU 支持,即可在 Distributed Cloud 集群上启用 VM Runtime on GDC 支持。

下表介绍了可用的配置:

enable enableGPU 生成的配置
false false 工作负载仅在容器中运行,无法使用 GPU 资源。
false true 工作负载仅在容器中运行,并且可以使用 GPU 资源。
true true 工作负载可以在虚拟机上运行,也可以在容器中运行。
这两种类型的工作负载都可以使用 GPU 资源。
true false 工作负载可以在虚拟机上运行,也可以在容器中运行。
这两种类型的工作负载都无法使用 GPU 资源。

如果您已启用 GPU 支持,请修改 VMRuntime 资源以添加 enable 参数,将其值设置为 true,然后将其应用于 Distributed Cloud 集群。

启用 VM Runtime on GDC 虚拟机子系统

根据您要在哪个类型的集群上启用 GDC 虚拟机子系统上的虚拟机运行时,执行以下操作之一:

  • 对于 Cloud 控制平面集群,您必须手动创建 VMRuntime 资源。
  • 对于本地控制平面集群,您必须修改现有的 VMRuntime 资源。

如需在 GDC 虚拟机子系统上启用 VM Runtime,请完成以下步骤:

  1. 根据目标集群类型,创建或修改具有以下内容的 VMRuntime 自定义资源,并将其应用于您的集群:

    apiVersion: vm.cluster.gke.io/v1
    kind: VMRuntime
    metadata:
      name: vmruntime
    spec:
      # Enable Anthos VM Runtime support
      enabled: true
      # vmImageFormat defaults to "raw" if not set
      vmImageFormat: "raw"

    请勿更改 vmImageFormat 参数的值。 Distributed Cloud 不支持任何其他虚拟磁盘格式。

    此过程通常需要几分钟才能完成。

  2. 使用以下命令验证 VMRuntime 自定义资源是否已应用于集群:

    kubectl get vmruntime -o yaml

    该命令会返回类似于以下示例的输出:

     - apiVersion: vm.cluster.gke.io/v1
       kind: VMRuntime
       metadata:
         name: vmruntime
         ...
       spec:
         enabled: true
         vmImageFormat: raw
       status:
         ...
       ready: true
         ...
    
  3. 使用以下命令验证您的集群是否已启用 VM Runtime on GDC 虚拟机支持:

    kubectl get pods -n vm-system

    该命令会返回输出,显示在集群上运行的 GDC 子系统 Pod 中的虚拟机运行时,类似于以下示例:

    NAME                                                READY   STATUS         RESTARTS        AGE
    cdi-apiserver-6c76c6cf7b-n68wn                      1/1     Running        0               132m
    cdi-deployment-f78fd599-vj7tv                       1/1     Running        0               132m
    cdi-operator-65c4df9647-fcb9d                       1/1     Running        0               134m
    cdi-uploadproxy-7765ffb694-6j7bf                    1/1     Running        0               132m
    macvtap-fjfjr                                       1/1     Running        0               134m
    virt-api-77dd99dbbb-bs2fb                           1/1     Running        0               132m
    virt-api-77dd99dbbb-pqc27                           1/1     Running        0               132m
    virt-controller-5b44dbbbd7-hc222                    1/1     Running        0               132m
    virt-controller-5b44dbbbd7-p8xkk                    1/1     Running        0               132m
    virt-handler-n76fs                                  1/1     Running        0               132m
    virt-operator-86565697d9-fpxqh                      2/2     Running        0               134m
    virt-operator-86565697d9-jnbt7                      2/2     Running        0               134m
    vm-controller-controller-manager-7844d5fb7b-72d8m   2/2     Running        0               134m
    vmruntime-controller-manager-845649c847-m78r9       2/2     Running        0               175m
    

向目标命名空间授予对 Distributed Cloud 注册表的访问权限

本部分中的步骤仅适用于云控制平面集群。如果您要在本地控制平面集群上配置 VM Runtime on GDC 虚拟机子系统,请跳过此部分。

您必须先向命名空间授予对 Distributed Cloud 注册表的访问权限,然后才能在该命名空间中创建虚拟机。注册表包含在目标命名空间中创建和部署虚拟机所需的组件。请注意,您无法在为 Distributed Cloud 系统管理预留的命名空间中运行虚拟机。如需了解详情,请参阅管理命名空间限制

完成以下步骤,以向目标命名空间授予对分布式云注册表的访问权限:

  1. 使用名为 gcr-pullimagePullSecret 密钥修补目标命名空间中的默认服务账号:

    kubectl patch sa default -p "{\"imagePullSecrets\": [{\"name\": \"gcr-pull\"}]}" -n NAMESPACE

    NAMESPACE 替换为目标命名空间的名称。

  2. 刷新目标命名空间中的关联 Secret:

    # Delete existing secret.
    kubectl delete secret gcr-pull -n NAMESPACE --ignore-not-found
    # Copy the new secret to the target namespace.
    kubectl get secret gcr-pull -n vm-system -o yaml | sed "s/namespace: vm-system/namespace: NAMESPACE/g" | kubectl apply -f -

    NAMESPACE 替换为目标命名空间的名称。

    密钥会在 1 小时后过期。过期后,您必须手动刷新。

安装 virtctl 管理工具

您需要使用 virtctl 客户端工具来管理 Distributed Cloud 集群中的虚拟机。如需安装该工具,请完成以下步骤:

  1. kubectl 插件的形式安装 virtctl 客户端工具:

    export VERSION=v0.49.0-anthos1.12-gke.7
    gcloud storage cp gs://anthos-baremetal-release/virtctl/${VERSION}/linux-amd64/virtctl /usr/local/bin/virtctl
    cd /usr/local/bin
    sudo ln -s virtctl kubectl-virt
    sudo chmod a+x virtctl
    cd -
  2. 验证 virt 插件是否已安装:

    kubectl plugin list

    如果插件已成功安装,则该命令的输出会将 kubectl-virt 列为其中一个插件。

在 Distributed Cloud 上预配具有原始块存储的虚拟机

本部分提供了一些配置示例,用于说明如何在具有原始块存储的分布式云集群上预配 Linux 虚拟机和 Windows 虚拟机。这些示例使用实例化为 PersistentVolume 的块存储。

使用原始块存储的限制

在分布式云上运行具有原始块存储的虚拟机时,存在以下限制:

  • 在云控制平面集群上,VirtualMachine 资源规范不支持 OSType 字段。因此,只有 consolevnc 方法支持访问在云控制平面集群上运行的虚拟机。
  • 您无法直接使用 kubectl virt 命令在 Distributed Cloud 集群上创建虚拟机,因为 Distributed Cloud 不会为虚拟机提供文件系统存储。
  • 块存储 PersistentVolumeClaim 资源不支持 qcow2 磁盘映像格式。
  • 容器化数据导入器 (CDI) 插件不支持块存储上的 DataVolume 资源,因为该插件的临时空间仅适用于文件系统存储。如需了解详情,请参阅临时空间

在 Distributed Cloud 上预配具有原始块存储的 Linux 虚拟机

以下示例说明了如何预配一个运行 Ubuntu Server 22.04 的 Linux 虚拟机,该虚拟机具有原始块存储。安装源是 Ubuntu Server 22.04 ISO 光盘映像。

  1. 为 Ubuntu Server 安装光盘映像创建一个包含以下内容的 PersistentVolumeClaim 资源,然后将其应用于集群:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      labels:
        app: containerized-data-importer
      name: iso-ubuntu
      annotations:
        cdi.kubevirt.io/storage.import.endpoint: "https://releases.ubuntu.com/jammy/ubuntu-22.04.3-live-server-amd64.iso"
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: local-block
      volumeMode: Block
      resources:
        requests:
          storage: 5Gi
  2. 为虚拟机的虚拟硬盘创建具有以下内容的 PersistentVolumeClaim 资源,然后将其应用到集群:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: ubuntuhd
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 15Gi
      storageClassName: local-block
      volumeMode: Block
  3. 为 Ubuntu Server 安装光盘映像创建一个包含以下内容的 VirtualMachineDisk 资源,然后将其应用于集群:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: "ubuntu-iso-disk"
    spec:
      persistentVolumeClaimName: iso-ubuntu
      diskType: cdrom
  4. 为虚拟机的虚拟硬盘创建一个包含以下内容的 VirtualMachineDisk 资源,然后将其应用于您的集群:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: "ubuntu-main-disk"
    spec:
      persistentVolumeClaimName: ubuntuhd
  5. 创建包含以下内容的 VirtualMachineType 资源,以指定虚拟机的配置,然后将其应用于集群:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineType
    metadata:
      name: small-2-20
    spec:
      cpu:
        vcpus: 2
      memory:
        capacity: 20Gi
  6. 创建一个包含以下内容的 VirtualMachine 资源,该资源可在集群上实例化并启动虚拟机,然后将其应用于您的集群:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      labels:
        kubevirt.io/vm: ubu-vm
      name: ubu-vm #  Propagate the virtual machine name to the VMI
    spec:
      osType: Linux
      compute:
        virtualMachineTypeName: small-2-20
      interfaces:
        - name: eth0
          networkName: pod-network
          default: true
      disks:
        - virtualMachineDiskName: ubuntu-main-disk
          boot: true
        - virtualMachineDiskName: ubuntu-iso-disk

    osType 字段仅适用于本地控制平面集群。在本地控制平面集群上,必须使用此参数来配置以下功能:

  7. 在虚拟机上安装 Ubuntu Server:

    1. 等待 importer Pod 下载 Ubuntu Server 安装光盘映像。
    2. 检查虚拟机的状态:

      kubectl get gvm VM_NAME

      VM_NAME 替换为虚拟机的名称,在本例中为 ubu-vm

    3. 登录到虚拟机:

      kubectl virt vnc VM_NAME

      VM_NAME 替换为虚拟机的名称,在本例中为 ubu-vm

    4. 完成 Ubuntu Linux 安装步骤。

  8. 清理:

    1. 停止虚拟机:

      kubectl virt stop VM_NAME

      VM_NAME 替换为虚拟机的名称,在本例中为 ubu-vm

    2. 修改虚拟机的 YAML 文件,以移除对安装光盘映像的引用:

      kubectl edit gvm VM_NAME

      VM_NAME 替换为虚拟机的名称,在本例中为 ubu-vm

    3. 启动虚拟机:

      kubectl virt start VM_NAME

      VM_NAME 替换为虚拟机的名称,在本例中为 ubu-vm

    4. 删除安装光盘映像的 VirtualMachineDiskPersistentVolumeClaim 资源:

      kubectl delete virtualmachinedisk ubuntu-iso-disk
      kubectl delete pvc iso-ubuntu

在具有原始块存储的分布式云上预配 Windows 虚拟机

以下示例展示了如何预配具有原始块存储的 Windows 虚拟机。这些步骤与预配 Linux 虚拟机类似,但需要额外添加 virtio 驱动程序磁盘映像,这是安装 Windows 所必需的。

  1. 获取 Windows 的许可副本及其安装介质映像。

  2. 为 Windows 安装光盘映像创建一个包含以下内容的 PersistentVolumeClaim 资源,然后将其应用于集群。如需查看相关说明,请参阅从映像

  3. virtio 驱动程序创建一个包含以下内容的 PersistentVolumeClaim 资源,然后将其应用于您的集群:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      labels:
        app: containerized-data-importer
      name: virtio-driver
      annotations:
        cdi.kubevirt.io/storage.import.endpoint: "https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso"
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: local-block
      volumeMode: Block
      resources:
        requests:
          storage: 1Gi
  4. 为虚拟机的虚拟硬盘创建一个包含以下内容的 PersistentVolumeClaim 资源,然后将其应用于您的集群:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: windowshd
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 15Gi
      storageClassName: local-block
      volumeMode: Block
  5. 为 Windows 安装光盘映像创建一个包含以下内容的 VirtualMachineDisk 资源,然后将其应用于集群:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: "windows-iso-disk"
    spec:
      persistentVolumeClaimName: iso-windows
      diskType: cdrom
  6. virtio 驱动程序创建一个包含以下内容的 VirtualMachineDisk 资源,然后将其应用于您的集群:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: "win-virtio-driver"
    spec:
      persistentVolumeClaimName: virtio-driver
      diskType: cdrom
  7. 为虚拟机的虚拟硬盘创建一个包含以下内容的 VirtualMachineDisk 资源,然后将其应用于您的集群:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: "windows-main-disk"
    spec:
      persistentVolumeClaimName: windowshd
  8. 创建包含以下内容的 VirtualMachineType 资源,以指定虚拟机的配置,然后将其应用于集群:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineType
    metadata:
      name: small-2-20
    spec:
      cpu:
        vcpus: 2
      memory:
        capacity: 20Gi
  9. 创建一个包含以下内容的 VirtualMachine 资源,该资源可在集群上实例化并启动虚拟机,然后将其应用于您的集群:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      labels:
        kubevirt.io/vm: win-vm
      name: win-vm #  Propagate the virtual machine name to the VMI
    spec:
      osType: Windows
      compute:
        virtualMachineTypeName: my-vmt
      interfaces:
        - name: eth0
          networkName: pod-network
          default: true
      disks:
        - virtualMachineDiskName: windows-main-disk
          boot: true
        - virtualMachineDiskName: windows-iso-disk
        - virtualMachineDiskName: win-virtio-driver

    osType 字段仅适用于本地控制平面集群。在本地控制平面集群上,必须使用此参数来配置以下功能:

  10. 在虚拟机上安装 Windows:

    1. 等待 importer Pod 下载 Windows 安装光盘映像。
    2. 检查虚拟机的状态:

      kubectl get gvm VM_NAME

      VM_NAME 替换为虚拟机的名称,在本例中为 win-vm

    3. 按照连接到 Windows 虚拟机并完成操作系统安装中的步骤完成 Windows 安装。

  11. 清理:

    1. 停止虚拟机:

      kubectl virt stop VM_NAME

      VM_NAME 替换为虚拟机的名称,在本例中为 win-vm

    2. 完成分离 ISO 映像和驱动程序磁盘中的步骤。

在具有 Symcloud Storage 的 Distributed Cloud 上预配虚拟机

本部分提供了一些配置示例,用于说明如何使用 Symcloud Storage 抽象层在分布式云集群上预配 Linux 虚拟机和 Windows 虚拟机。

在完成本部分中的步骤之前,您必须先完成为 Symcloud Storage 配置 Distributed Cloud 中的步骤。如果您稍后在集群上停用 Symcloud Storage,则配置为使用 Symcloud Storage 的虚拟机将失败。

在 Distributed Cloud 上使用 Symcloud Storage 预配 Linux 虚拟机

以下示例展示了如何预配运行 Ubuntu Server 22.04 的 Linux 虚拟机和 Symcloud Storage。安装源是 Ubuntu Server 22.04 ISO 光盘映像。

  1. 为 Ubuntu Server 安装光盘映像创建一个包含以下内容的 VirtualMachineDisk 资源,然后将其应用于集群:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: ubuntu-iso-disk
    spec:
      size: 20Gi
      storageClassName: robin
      diskType: cdrom
      source:
        http:
          url: https://releases.ubuntu.com/jammy/ubuntu-22.04.3-live-server-amd64.iso
  2. 为虚拟机的虚拟硬盘创建一个包含以下内容的 VirtualMachineDisk 资源,然后将其应用于您的集群:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: "ubuntu-main-disk"
    spec:
      size: 200Gi
      storageClassName: robin
  3. 创建包含以下内容的 VirtualMachineType 资源,以指定虚拟机的配置,然后将其应用于集群:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineType
    metadata:
      name: small-2-20
    spec:
      cpu:
        vcpus: 2
      memory:
        capacity: 20Gi
  4. 创建一个包含以下内容的 VirtualMachine 资源,该资源可在集群上实例化并启动虚拟机,然后将其应用于您的集群:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      labels:
        kubevirt.io/vm: ubu-vm
      name: ubu-vm #  Propagate the virtual machine name to the VMI
    spec:
      osType: Linux
      compute:
        virtualMachineTypeName: small-2-20
      interfaces:
        - name: eth0
          networkName: pod-network
          default: true
      disks:
        - virtualMachineDiskName: ubuntu-main-disk
          boot: true
        - virtualMachineDiskName: ubuntu-iso-disk

    osType 字段仅适用于本地控制平面集群。在本地控制平面集群上,必须使用此参数来配置以下功能:

  5. 在虚拟机上安装 Ubuntu Server:

    1. 等待 importer Pod 下载 Ubuntu Server 安装光盘映像。
    2. 检查虚拟机的状态:

      kubectl get gvm VM_NAME

      VM_NAME 替换为虚拟机的名称,在本例中为 ubu-vm

    3. 登录到虚拟机:

      kubectl virt vnc VM_NAME

      VM_NAME 替换为虚拟机的名称,在本例中为 ubu-vm

    4. 完成 Ubuntu Linux 安装步骤。

  6. 清理:

    1. 停止虚拟机:

      kubectl virt stop VM_NAME

      VM_NAME 替换为虚拟机的名称,在本例中为 ubu-vm

    2. 修改虚拟机的 YAML 文件,以移除对安装光盘映像的引用:

      kubectl edit gvm VM_NAME

      VM_NAME 替换为虚拟机的名称,在本例中为 ubu-vm

    3. 启动虚拟机:

      kubectl virt start VM_NAME

      VM_NAME 替换为虚拟机的名称,在本例中为 ubu-vm

    4. 删除安装光盘映像的 VirtualMachineDisk 资源:

      kubectl delete virtualmachinedisk ubuntu-iso-disk

在具有 Symcloud Storage 的分布式云上预配 Windows 虚拟机

以下示例展示了如何使用 Symcloud Storage 预配 Windows 虚拟机。这些步骤与预配 Linux 虚拟机类似,但需要额外添加 virtio 驱动程序磁盘映像,这是安装 Windows 所必需的。

  1. 获取 Windows 的许可副本及其安装介质映像。

  2. 为 Windows 安装光盘映像创建一个包含以下内容的 VirtualMachineDisk 资源,然后将其应用于集群:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: windows-iso-disk
      namespace: default
    spec:
      size: 5Gi
      storageClassName: robin
      diskType: cdrom
      source:
        http:
          url: WINDOWS_ISO_URL

    NAT_GATEWAY 替换为目标 Windows 安装 ISO 光盘映像的完整网址。

  3. virtio 驱动程序创建一个包含以下内容的 VirtualMachineDisk 资源,然后将其应用于您的集群:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: windows-virtio-driver
      namespace: default
    spec:
      size: 1Gi
      storageClassName: robin
      diskType: cdrom
      source:
        http:
          url: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
  4. 为虚拟机的虚拟硬盘创建一个包含以下内容的 VirtualMachineDisk 资源,然后将其应用于您的集群:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: windows-main-disk
      namespace: default
    spec:
      size: 15Gi
      storageClassName: robin
  5. 创建包含以下内容的 VirtualMachineType 资源,以指定虚拟机的配置,然后将其应用于集群:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineType
    metadata:
      name: small-2-20
    spec:
      cpu:
        vcpus: 2
      memory:
        capacity: 20Gi
  6. 创建一个包含以下内容的 VirtualMachine 资源,该资源可在集群上实例化并启动虚拟机,然后将其应用于您的集群:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      labels:
        kubevirt.io/vm: win-vm
      name: win-vm #  Propagate the virtual machine name to the VMI
    spec:
      osType: Windows
      compute:
        virtualMachineTypeName: my-vmt
      interfaces:
        - name: eth0
          networkName: pod-network
          default: true
      disks:
        - virtualMachineDiskName: windows-main-disk
          boot: true
        - virtualMachineDiskName: windows-iso-disk
        - virtualMachineDiskName: win-virtio-driver

    osType 字段仅适用于本地控制平面集群。在本地控制平面集群上,必须使用此参数来配置以下功能:

  7. 在虚拟机上安装 Windows:

    1. 等待 importer Pod 下载 Windows 安装光盘映像。
    2. 检查虚拟机的状态:

      kubectl get gvm VM_NAME

      VM_NAME 替换为虚拟机的名称,在本例中为 win-vm

    3. 按照连接到 Windows 虚拟机并完成操作系统安装中的步骤完成 Windows 安装。

  8. 清理:

    1. 停止虚拟机:

      kubectl virt stop VM_NAME

      VM_NAME 替换为虚拟机的名称,在本例中为 win-vm

    2. 完成分离 ISO 映像和驱动程序磁盘中的步骤。

使用 virtctl 在 Distributed Cloud 上预配虚拟机

如果您不需要通过为虚拟机编写自己的资源规范来进行自定义,则可以使用 virtctl 命令行工具在 Distributed Cloud 上预配虚拟机,如创建虚拟机中所述。

管理在 Distributed Cloud 上运行的虚拟机

如需了解如何管理在 Distributed Cloud 上运行的虚拟机,请参阅以下 VM Runtime on GDC 文档:

如需管理在本地控制平面集群上运行的虚拟机,您必须先配置 kubectl 连接

配置 ttyS0 设备,以通过串行控制台访问 Linux 虚拟机

如果您计划使用串行控制台 (kubectl virt console) 访问 Linux 虚拟机,请确保已在 guest 操作系统上配置 ttyS0 串行控制台设备。如需配置此设备,请完成以下步骤:

  1. 在系统中实例化 ttyS0 串行设备:

    setserial -g /dev/ttyS0
  2. 通过将以下行添加到 /etc/default/grub 配置文件,将 grub 引导加载程序配置为使用 ttyS0 串行设备。第一行会替换现有的 GRUB_CMDLINE_LINUX 变量。

    GRUB_CMDLINE_LINUX='console=tty0 console=ttyS0,19200n8'
    GRUB_TERMINAL=serial
    GRUB_SERIAL_COMMAND="serial --speed=19200 --unit=0 --word=8 --parity=no --stop=1"
  3. 将新的 grub 配置应用到启动扇区:

    update-grub
  4. 重启虚拟机。

停用 Distributed Cloud 上的 VM Runtime on GDC

按照本部分中的步骤在 Distributed Cloud 上停用 VM Runtime on GDC。在 Distributed Cloud 上停用 VM Runtime on GDC 之前,您必须停止并删除 Distributed Cloud 集群中的所有虚拟机,如删除虚拟机中所述。

如需在 Distributed Cloud 上停用 VM Runtime on GDC,请按如下所示修改 VMRuntime 自定义资源,将 enabled spec 参数设置为 false,然后将其应用到集群:

apiVersion: vm.cluster.gke.io/v1
kind: VMRuntime
metadata:
  name: vmruntime
spec:
  # Disable Anthos VM Runtime
  enabled: false
  # vmImageFormat defaults to "raw" if not set
  vmImageFormat: "raw"

后续步骤