베어메탈용 Anthos 클러스터에서 가상 디스크 만들기 및 관리

이 문서에서는 베어메탈용 Anthos 클러스터를 실행하는 애플리케이션 소유자를 대상으로 합니다. 이 문서에서는 Anthos VM 런타임을 사용하는 가상 머신(VM)에 대해 디스크 리소스를 만들고 관리하는 방법을 보여줍니다.

시작하기 전에

이 문서를 완료하려면 다음 리소스에 대해 액세스 권한이 필요합니다.

연결된 디스크가 있는 VM 만들기

VM을 만들 때는 기존 부팅 또는 데이터 디스크를 연결하거나, 이미지에서 디스크를 만들거나(부팅 디스크 포함), 빈 디스크를 만들 수 있습니다.

빈 디스크

이 시나리오에서는 빈 디스크를 만들고 이를 VM에 연결합니다. 이 시나리오에서는 애플리케이션 데이터를 저장하기 위해 데이터 디스크를 만들 수 있습니다.

  1. 원하는 편집기에서 my-vm.yaml과 같이 VirtualMachineDiskVirtualMachine을 정의하는 매니페스트를 만듭니다.

    nano my-vm.yaml
    
  2. 다음 YAML 정의를 복사하여 붙여넣습니다.

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: DISK_NAME
    spec:
      size: 10Gi
    ---
    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: VM_NAME
    spec:
      interfaces:
        - name: eth0
          networkName: pod-network
          default: true
      disks:
        - boot: true
          virtualMachineDiskName: VM_NAME-boot-dv
        - virtualMachineDiskName: DISK_NAME
    

    이 예시에서는 DISK_NAME이라는 빈 10Gi(10기비바이트) 디스크를 만듭니다. VM의 spec.disks 섹션에서는 다음 섹션에 표시된 것처럼 이미지에서와 같이 부팅 디스크를 연결해야 합니다.

  3. 편집기에서 매니페스트 파일을 저장하고 닫습니다.

  4. kubectl을 사용하여 VM 및 디스크를 만듭니다.

    kubectl apply -f my-vm.yaml
    

이미지에서

이 시나리오에서는 이미지에서 디스크를 만들고 이를 VM에 연결합니다. 이 시나리오에서는 예를 들어 이미지에서 부팅 디스크를 만들 수 있습니다. 또한 이미지에서 데이터 디스크를 만들고 연결할 수 있습니다.

  1. 원하는 편집기에서 my-vm.yaml과 같이 VirtualMachineDiskVirtualMachine을 정의하는 매니페스트를 만듭니다.

    nano my-vm.yaml
    
  2. 다음 YAML 정의를 복사하여 붙여넣습니다.

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: VM_NAME-boot-dv
    spec:
      size: 20Gi
      source:
        http:
          url: https://cloud-images.ubuntu.com/releases/focal/release/ubuntu-20.04-server-cloudimg-amd64.img
    ---
    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: VM_NAME
    spec:
      interfaces:
        - name: eth0
          networkName: pod-network
          default: true
      disks:
        - boot: true
          virtualMachineDiskName: VM_NAME-boot-dv
    

    이 예시에서는 공개 Ubuntu 이미지를 사용하여 VM_NAME-boot-dv이라는 20Gi(20기비바이트) 디스크를 만듭니다. VM의 spec.disks 섹션에서는 디스크가 boot: true로 설정됩니다.

  3. 편집기에서 매니페스트를 저장하고 닫습니다.

  4. kubectl을 사용하여 VM 및 디스크를 만듭니다.

    kubectl apply -f my-vm.yaml
    

기존 디스크

이 시나리오에서는 빈 디스크를 만들고 이를 VM에 연결합니다. 이 시나리오에서는 애플리케이션 데이터를 저장하기 위해 데이터 디스크를 만들 수 있습니다.

  1. 원하는 편집기에서 my-vm.yaml과 같은 VirtualMachine 매니페스트를 만듭니다.

    nano my-vm.yaml
    
  2. 다음 YAML 정의를 복사하여 붙여넣습니다.

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: VM_NAME
    spec:
      interfaces:
        - name: eth0
          networkName: pod-network
          default: true
      disks:
        - boot: true
          virtualMachineDiskName: VM_NAME-boot-dv
        - virtualMachineDiskName: EXISTING_DISK_NAME
    

    이 예시에서는 EXISTING_DISK_NAME이라는 기존 디스크를 연결합니다.

    VM의 spec.disks 섹션에서는 이전 섹션에 표시된 것처럼 이미지에서와 같이 부팅 디스크를 연결해야 합니다.

  3. 편집기에서 VM 매니페스트를 저장하고 닫습니다.

  4. kubectl을 사용하여 VM을 만듭니다.

    kubectl apply -f my-vm.yaml
    

디스크를 만들고 기존 VM에 연결

기존 VM이 있으면 디스크를 만들고 연결하여 애플리케이션 수명 주기를 지원할 수 있습니다. VM은 디스크를 연결하기 전에 중지된 상태여야 합니다.

빈 디스크

이 시나리오에서는 빈 디스크를 만들고 이를 VM에 연결합니다. 이 시나리오에서는 애플리케이션 데이터를 저장하기 위해 데이터 디스크를 만들 수 있습니다.

  1. 필요한 경우 kubectl을 사용하여 VM을 중지합니다.

    kubectl virt stop vm VM_NAME
    

    VM_NAME을 중지하려는 VM의 이름으로 바꿉니다.

  2. my-vm과 같은 기존 VM 리소스를 수정합니다.

    kubectl edit gvm VM_NAME
    
  3. VirtualMachine YAML 매니페스트를 업데이트하여 위에 VirtualMachineDisk 섹션을 추가한 후 VM의 spec.disks 섹션의 끝에 디스크를 연결합니다.

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: DISK_NAME
    spec:
      size: 10Gi
    ---
    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: VM_NAME
    spec:
      interfaces:
        - name: eth0
          networkName: pod-network
          default: true
      disks:
        - boot: true
          virtualMachineDiskName: VM_NAME-boot-dv
        - virtualMachineDiskName: DISK_NAME
    

    이 예시에서는 DISK_NAME이라는 빈 10Gi(10기비바이트) 디스크를 만듭니다.

  4. 편집기에서 업데이트된 VM 매니페스트를 저장하고 닫습니다.

  5. kubectl을 사용하여 VM을 시작합니다.

    kubectl virt start vm VM_NAME
    

    VM_NAME을 시작하려는 VM의 이름으로 바꿉니다.

이미지에서

이 시나리오에서는 소스 이미지에서 디스크를 만들고 이를 VM에 연결합니다.

  1. 필요한 경우 kubectl을 사용하여 VM을 중지합니다.

    kubectl virt stop vm VM_NAME
    

    VM_NAME을 중지하려는 VM의 이름으로 바꿉니다.

  2. my-vm과 같은 기존 VM 리소스를 수정합니다.

    kubectl edit gvm VM_NAME
    
  3. VirtualMachine 매니페스트를 업데이트하여 위에 VirtualMachineDisk 섹션을 추가한 후 VM의 spec.disks 섹션 끝에 디스크를 연결합니다.

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: DISK_NAME
    spec:
      size: 10Gi
      source:
        http:
          url: http://example.com/my-disk-img.qcow2
    ---
    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: VM_NAME
    spec:
      interfaces:
        - name: eth0
          networkName: pod-network
          default: true
      disks:
        - boot: true
          virtualMachineDiskName: VM_NAME-boot-dv
        - virtualMachineDiskName: DISK_NAME
    

    이 예시에서는 http://example.com/my-disk-img.qcow2 HTTP 소스에서 DISK_NAME이라는 10Gi(10기비바이트) 디스크를 만듭니다.

  4. 편집기에서 업데이트된 VM 매니페스트를 저장하고 닫습니다.

  5. kubectl을 사용하여 VM을 시작합니다.

    kubectl virt start vm VM_NAME
    

    VM_NAME을 시작하려는 VM의 이름으로 바꿉니다.

디스크 만들기

이 시나리오에서는 VM 리소스와 별개로 디스크 리소스를 만듭니다. 이 시나리오에서는 미리 디스크를 만든 후 필요에 따라 VM에 연결할 수 있습니다.

빈 디스크

빈 디스크를 만들려면 다음 단계를 완료합니다.

  1. 원하는 편집기에서 my-disk.yaml과 같은 VirtualMachineDisk 매니페스트를 만듭니다.

    nano my-disk.yaml
    
  2. 다음 YAML 정의를 복사하여 붙여넣습니다.

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: DISK_NAME
    spec:
      size: 10Gi
    

    이 예시에서는 DISK_NAME이라는 빈 10Gi(10기비바이트) 디스크를 만듭니다.

  3. 편집기에서 디스크 매니페스트를 저장하고 닫습니다.

  4. kubectl을 사용하여 디스크를 만듭니다.

    kubectl apply -f my-disk.yaml
    

이미지에서

이미지에서 디스크를 만들려면 다음 단계를 완료합니다.

  1. 원하는 편집기에서 my-disk.yaml과 같은 VirtualMachineDisk 매니페스트를 만듭니다.

    nano my-disk.yaml
    
  2. 다음 YAML 정의를 복사하여 붙여넣습니다.

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: DISK_NAME
    spec:
      size: 20Gi
      source:
        http:
          url: https://cloud-images.ubuntu.com/releases/focal/release/ubuntu-20.04-server-cloudimg-amd64.img
    

    이 예시에서는 공개 Ubuntu 이미지를 사용하여 DISK_NAME이라는 20Gi(20기비바이트) 디스크를 만듭니다.

  3. 편집기에서 디스크 매니페스트를 저장하고 닫습니다.

  4. kubectl을 사용하여 디스크를 만듭니다.

    kubectl apply -f my-disk.yaml
    

다음 단계