Distributed Cloud Connected 랙에서 가상 머신 관리

이 페이지에서는 Google Distributed Cloud의 VM 런타임을 실행하는 Google Distributed Cloud 연결 랙에서 가상 머신을 관리하는 방법을 설명합니다. 이 페이지의 단계를 완료하기 전에 GDC의 VM 런타임을 숙지해야 합니다. 지원되는 게스트 운영체제 목록은 GDC용 VM 런타임에 검증된 게스트 운영체제를 참고하세요.

가상 머신 워크로드는 기존 ('구성 1' 및 '구성 2') 랙 하드웨어에서 지원되지만 대체 랙 하드웨어 구성에서는 지원되지 않습니다.

가상 머신이 Distributed Cloud 연결 플랫폼의 필수 구성요소로 작동하는 방법을 알아보려면 온프레미스 에지 VM을 관리하기 위해 GKE Enterprise 확장을 참고하세요.

Distributed Cloud 연결된 클러스터는 가상 머신 웹훅을 지원합니다. 이를 통해 Distributed Cloud Connected는 로컬 Kubernetes API 서버에 대한 사용자 요청을 검증할 수 있습니다. 거부된 요청은 거부 사유에 관한 자세한 정보를 생성합니다.

기존 가상 머신을 Distributed Cloud Connected 버전 1.7.0으로 업그레이드

클러스터를 Distributed Cloud 연결 소프트웨어 버전 1.7.0으로 업그레이드하기 전에 클러스터의 VMRuntime 리소스의 spec 섹션에 다음을 추가한 후 수정된 리소스를 클러스터에 적용해야 합니다.

spec:
  haPolicy:
    defaultRecoveryStrategy: Reschedule
    nodeHeartbeatInterval: 15s
    nodeMonitorGracePeriod: 55s

Distributed Cloud Connected에서 GDC의 VM 런타임 지원 사용 설정

기본적으로 Distributed Cloud Connected에서는 GDC 가상 머신 지원의 VM 런타임이 사용 중지되어 있습니다. 이 기능을 사용 설정하려면 이 섹션의 단계를 완료하세요. 이 섹션의 안내에서는 완전히 작동하는 Distributed Cloud 연결 클러스터가 있다고 가정합니다.

  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"
      # Set node grace period to 55 seconds; required for upgrading to 1.7.0
      haPolicy:
        defaultRecoveryStrategy: Reschedule
        nodeHeartbeatInterval: 15s
        nodeMonitorGracePeriod: 55s

    vmImageFormat 매개변수의 값을 변경하지 마세요. Distributed Cloud Connected는 다른 가상 디스크 형식을 지원하지 않습니다.

    이 프로세스를 완료하는 데 일반적으로 몇 분 정도 걸립니다.

    vmImageFormat 매개변수의 값을 변경하지 마세요. Distributed Cloud Connected는 다른 가상 디스크 형식을 지원하지 않습니다.

    이 프로세스를 완료하는 데 일반적으로 몇 분 정도 걸립니다.

  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. 다음 명령어를 사용하여 클러스터에서 GDC용 VM 런타임 가상 머신 지원이 사용 설정되었는지 확인합니다.

    kubectl get pods -n vm-system

    이 명령어는 다음 예와 같이 클러스터에서 실행되는 GDC 하위 시스템 포드의 VM 런타임을 보여주는 출력을 반환합니다.

    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
    

virtctl 관리 도구 설치

분산 클라우드 연결 클러스터에서 가상 머신을 관리하려면 virtctl 클라이언트 도구가 필요합니다. 도구를 설치하려면 다음 단계를 완료하세요.

  1. virtctl 클라이언트 도구를 kubectl 플러그인으로 설치합니다.

    export VERSION=v0.59.0-anthos1.28-gke.8
    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 Connected에서 가상 머신 프로비저닝

이 섹션에서는 Symcloud Storage 추상화 레이어를 사용하여 Distributed Cloud 연결 클러스터에 Linux 가상 머신과 Windows 가상 머신을 프로비저닝하는 방법을 보여주는 구성 예를 제공합니다.

Distributed Cloud Connected는 가상 머신에 파일 시스템 스토리지를 제공하지 않으므로 kubectl virt 명령어를 사용하여 Distributed Cloud Connected 클러스터에 직접 가상 머신을 만들 수 없습니다.

이 섹션의 단계를 완료하기 전에 먼저 Symcloud Storage용 Distributed Cloud Connected 구성의 단계를 완료해야 합니다. 나중에 클러스터에서 Symcloud Storage를 사용 중지하면 Symcloud Storage를 사용하도록 구성된 가상 머신이 실패합니다.

Distributed Cloud Connected에서 Linux 가상 머신 프로비저닝

다음 예에서는 Ubuntu Server 22.04를 실행하는 Symcloud Storage로 Linux 가상 머신을 프로비저닝하는 방법을 보여줍니다. 설치 소스는 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: my-network
          default: true
      disks:
        - virtualMachineDiskName: ubuntu-main-disk
          boot: true
        - virtualMachineDiskName: ubuntu-iso-disk

    클러스터에서 다음 기능도 구성해야 합니다.

  5. 가상 머신에 Ubuntu Server를 설치합니다.

    1. importer 포드가 Ubuntu Server 설치 디스크 이미지를 다운로드할 때까지 기다립니다.
    2. 가상 머신의 상태를 확인합니다.

      kubectl get gvm VM_NAME

      VM_NAME을 가상 머신 이름(이 예에서는 ubu-vm)으로 바꿉니다.

    3. SSH 또는 원격 데스크톱을 사용하여 가상 머신에 로그인합니다.

    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

Distributed Cloud Connected에서 Windows 가상 머신 프로비저닝

다음 예에서는 Symcloud Storage로 Windows 가상 머신을 프로비저닝하는 방법을 보여줍니다. 이 단계는 Windows를 설치하는 데 필요한 virtio 드라이버 디스크 이미지를 추가하는 것을 제외하고 Linux 가상 머신을 프로비저닝하는 것과 유사합니다.

  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 디스크 이미지의 전체 URL로 바꿉니다.

  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: my-network
          default: true
      disks:
        - virtualMachineDiskName: windows-main-disk
          boot: true
        - virtualMachineDiskName: windows-iso-disk
        - virtualMachineDiskName: win-virtio-driver

    클러스터에서 다음 기능도 구성해야 합니다.

  7. 가상 머신에 Windows를 설치합니다.

    1. importer 포드가 Windows 설치 디스크 이미지를 다운로드할 때까지 기다립니다.
    2. 가상 머신의 상태를 확인합니다.

      kubectl get gvm VM_NAME

      VM_NAME을 가상 머신 이름(이 예에서는 win-vm)으로 바꿉니다.

    3. Windows VM에 연결 및 OS 설치 완료의 단계에 따라 Windows 설치를 완료합니다.

  8. 삭제:

    1. 가상 머신을 중지합니다.

      kubectl virt stop VM_NAME

      VM_NAME을 가상 머신 이름(이 예에서는 win-vm)으로 바꿉니다.

    2. ISO 이미지 및 드라이버 디스크 분리의 단계를 완료합니다.

Distributed Cloud(연결형)에서 실행되는 가상 머신 관리

Distributed Cloud connected에서 실행되는 가상 머신 관리에 관한 안내는 다음 GDC용 VM 런타임 문서를 참고하세요.

Distributed Cloud(연결형)에서 실행되는 가상 머신을 관리하려면 먼저 kubectl 연결을 구성해야 합니다.

Distributed Cloud Connected의 GDC에서 VM 런타임 사용 중지

이 섹션의 단계에 따라 Distributed Cloud Connected에서 GDC의 VM 런타임을 사용 중지합니다. Distributed Cloud(연결형)에서 GDC의 VM 런타임을 사용 중지하려면 VM 삭제에 설명된 대로 Distributed Cloud(연결형) 클러스터의 모든 가상 머신을 중지하고 삭제해야 합니다.

Distributed Cloud Connected의 GDC에서 VM 런타임을 사용 중지하려면 enabled 사양 매개변수를 다음과 같이 false로 설정하여 VMRuntime 커스텀 리소스를 수정한 후 클러스터에 적용합니다.

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"

다음 단계