ベアメタル版 Anthos クラスタの仮想ディスクを作成して管理する

このドキュメントは、Anthos clusters on bare metal を実行するアプリケーション オーナーを対象としています。このドキュメントでは、Anthos VM ランタイムを使用する仮想マシン(VM)のディスク リソースを作成し、管理する方法について説明します。

準備

このドキュメントの内容を実施するには、次のリソースへのアクセス権が必要です。

ディスクがアタッチされた VM を作成する

VM を作成するときに、既存のブートディスクまたはデータディスクをアタッチできます。また、イメージからディスクを作成(ブートディスクなど)することも、空のディスクを作成することもできます。

空のディスク

このシナリオでは、空のディスクを作成して VM にアタッチします。このシナリオでは、アプリケーション データを保存するためのデータディスクを作成できます。

  1. 選択したエディタで VirtualMachineDiskVirtualMachine を定義するマニフェスト(my-vm.yaml など)を作成します。

    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. 選択したエディタで VirtualMachineDiskVirtualMachine を定義するマニフェスト(my-vm.yaml など)を作成します。

    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. 選択したエディタで VirtualMachine マニフェスト(my-vm.yaml など)を作成します。

    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. 既存の VM リソース(my-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. 既存の VM リソース(my-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. 選択したエディタで、VirtualMachineDisk マニフェスト(my-disk.yaml など)を作成します。

    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. 選択したエディタで、VirtualMachineDisk マニフェスト(my-disk.yaml など)を作成します。

    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
    

次のステップ