特定の CPU とメモリリソースを持つ VM を作成する

Google Distributed Cloud 上の VM ランタイムを使用する VM を作成する場合は、次の 2 つの方法でコンピューティング リソースを構成できます。

  • CPU とメモリを手動で指定する: コンピューティング リソースを VirtualMachine マニフェストで直接定義します。この方法は、1 回限りの VM や、一意のリソース割り当てを必要とするカスタム ワークロードに便利です。
  • VM タイプを作成して使用する: CPU とメモリ の割り当てを標準化する再利用可能な VirtualMachineTypeカスタム リソースを定義します。この方法は、VM のフリートの管理、クラスタ全体でのコンピューティングの一貫性の確保、デベロッパー向けの VM プロビジョニングの簡素化に便利です。

始める前に

CPU とメモリリソースを手動で指定し、VM タイプを作成して使用するには、次のリソースにアクセスする必要があります。

  • バージョン 1.9.0 以降の Distributed Cloud Connected クラスタ。
  • クラスタにアクセスするようにインストールおよび構成された Kubernetes コマンドライン ツール kubectl。詳細については、 インストール kubectlをご覧ください。
  • 省略可: kubectl のプラグインとしてインストールされた virtctl クライアント ツール。必要に応じて、 管理ツールをインストールするをご覧ください。virtctl

VM を作成して CPU とメモリを指定する

VM を作成する際は、CPU とメモリの要件を手動で指定できます。 この機能を使用して、アプリケーションのニーズに合わせて適切なコンピューティング リソースを持つ VM を作成します。

VM を作成して CPU とメモリを指定するには、VirtualMachine マニフェストを使用します。

  1. 任意のエディタで、my-custom-vm.yaml などの VirtualMachine マニフェストを作成します。

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: VM_NAME
      namespace: NAMESPACE
    spec:
      compute:
        cpu:
          vcpus: VCPU_NUMBER
        memory:
          capacity: MEMORY_SIZE
      interfaces:
        - name: eth0
          networkName: L2_NETWORK_NAME
          default: true
      disks:
        - virtualMachineDiskName: VM_BOOT_NAME-boot-dv
          boot: true

    この YAML ファイルで、以下の設定を定義します。

    • VM_NAME: VM の名前。
    • NAMESPACE: VM のターゲット Namespace。
    • L2_NETWORK_NAME: VM を接続する L2 ネットワークの名前。
    • VCPU_NUMBER: VM に割り当てる vCPU の数。 1 ~ 96 個の vCPU を VM に割り当てることができます。
    • MEMORY_SIZE: VM に割り当てるメモリの量。1 Mi ~ 1 Ti のメモリを VM に割り当てることができます。詳細については、Kubernetes ドキュメントの メモリリソース ユニット をご覧ください。
    • VM_BOOT_NAME: VM ブートディスクの名前。ブートディスクはすでに存在している必要があります。詳細については、 仮想マシン イメージから仮想マシン ディスクを作成するをご覧ください。

    VM は eth0 インターフェースを指定された L2 ネットワークに接続します。

  2. VM を作成するには、マニフェストを Distributed Cloud Connected クラスタに適用するには、kubectl apply コマンドを使用します。

    kubectl apply -f my-custom-vm.yaml
    
  3. VM が作成されたことを確認するには、kubectl get コマンドを使用します。

    kubectl get vm VM_NAME -n NAMESPACE
    

    想定される出力には、VM のステータスが表示されます。 kubectl describe コマンドを使用して、割り当てられた CPU と メモリなどの詳細な構成を表示することもできます。

VM タイプを作成して使用する

GDC 上の VM ランタイムを有効にすると、クラスタで VirtualMachineType カスタム リソース定義を使用できるようになります。このリソースタイプを使用して、特定の CPU とメモリの割り当てを定義する再利用可能なテンプレートを作成できます。 さまざまなワークロードに対してカスタム VM タイプを作成することで、一貫したコンピューティング リソース構成で複数の VM をプロビジョニングできます。

Distributed Cloud Connected で GDC 上の VM ランタイムが有効になっている場合は 、事前定義された VM タイプを使用できることがあります。この事前定義された VM タイプは更新できません。デフォルトの example-machinetype VM タイプの定義は次のとおりです。

apiVersion: vm.cluster.gke.io/v1
kind: VirtualMachineType
metadata:
  name: "example-machinetype"
  labels:
    vm.cluster.gke.io/predefined-machinetype: "true"
spec:
  cpu:
    vcpus: 2
  memory:
    capacity: 4G

VM タイプを作成する

VM タイプは、ワークロードのコンピューティング ニーズに合わせて独自のものを作成できます。

  1. 任意のエディタで、my-vm-type.yaml などの VirtualMachineType マニフェストを作成します。

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineType
    metadata:
      name: VM_TYPE_NAME
    spec:
      cpu:
        vcpus: VCPU_NUMBER
      memory:
        capacity: MEMORY_SIZE

    この VM タイプでは、次の設定を定義します。

    • VM_TYPE_NAME: VM タイプの名前。
    • VCPU_NUMBER: VM に割り当てる vCPU の数。 1 ~ 96 個の vCPU を VM に割り当てることができます。
    • MEMORY_SIZE: VM に割り当てるメモリの量。 1 Mi ~ 1 Ti のメモリを VM に割り当てることができます。詳細については、Kubernetes ドキュメントの メモリリソース ユニット をご覧ください。
  2. VM タイプを作成するには、kubectl apply コマンドを使用して、マニフェストを Distributed Cloud Connected クラスタに適用します。

    kubectl apply -f my-vm-type.yaml
    
  3. VM タイプが作成されたことを確認するには、kubectl get コマンドを実行します。

    kubectl get virtualmachinetype VM_TYPE_NAME
    

VM タイプを使用して VM を作成する

VM タイプで定義された CPU とメモリの設定を VM に適用するには、VirtualMachine マニフェストの compute セクションで VM タイプの名前を指定します。

  1. 任意のエディタで、my-custom-vm.yaml などの VirtualMachine マニフェストを作成します。この YAML ファイルで、my-vm-type など、前のセクションで作成したカスタム VM タイプの名前を virtualMachineTypeName の値として指定します。

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: VM_NAME
      namespace: NAMESPACE
    spec:
      compute:
        virtualMachineTypeName: VM_TYPE_NAME
      interfaces:
        - name: eth0
          networkName: L2_NETWORK_NAME
          default: true
      disks:
        - virtualMachineDiskName: VM_BOOT_NAME-boot-dv
          boot: true

    次の設定を定義します。

    • VM_NAME: VM の名前。
    • NAMESPACE: VM のターゲット Namespace。
    • L2_NETWORK_NAME: VM を接続する L2 ネットワークの名前。
    • VM_TYPE_NAME: 前のセクションで作成したカスタム VM タイプの名前(my-vm-type など)。
    • VM_BOOT_NAME: VM ブートディスクの名前。ブートディスクはすでに存在している必要があります。詳細については、 仮想マシン イメージから仮想マシン ディスクを作成するをご覧ください。

    VM は eth0 インターフェースを指定された L2 ネットワークに接続します。

  2. VM を作成するには、マニフェストを Distributed Cloud Connected クラスタに適用するには、kubectl apply コマンドを使用します。

    kubectl apply -f my-custom-vm.yaml
    
  3. VM が VM タイプを使用していることを確認するには、kubectl get コマンドを -o jsonpath オプションを指定して実行します。

    kubectl get vm VM_NAME -n NAMESPACE -o jsonpath='{.spec.compute.virtualMachineTypeName}'
    

    想定される出力には、VM タイプの名前が表示されます。

次のステップ