Criar uma VM com recursos específicos de CPU e memória

Ao criar VMs que usam o ambiente de execução de VMs no Google Distributed Cloud, é possível configurar recursos de computação de duas maneiras:

  • Especificar manualmente a CPU e a memória: defina os recursos de computação diretamente no manifesto VirtualMachine. Essa abordagem é útil para VMs únicas ou cargas de trabalho personalizadas que exigem alocações de recursos exclusivas.
  • Criar e usar tipos de VM: defina recursos personalizados VirtualMachineType reutilizáveis que padronizam as alocações de CPU e memória. Essa abordagem é útil para gerenciar frotas de VMs, garantir a consistência de computação em todo o cluster e simplificar o provisionamento de VMs para desenvolvedores.

Antes de começar

Para especificar manualmente recursos de CPU e memória e criar e usar tipos de VM, você precisa de acesso aos seguintes recursos:

  • Um cluster conectado do Distributed Cloud, versão 1.9.0 ou mais recente.
  • A ferramenta de linha de comando do Kubernetes, kubectl, instalada e configurada para acessar seu cluster. Para mais informações, consulte instalar kubectl.
  • Opcional: a ferramenta do cliente virtctl instalada como um plug-in para o kubectl. Se necessário, consulte Instalar a ferramenta de gerenciamento virtctl.

Criar uma VM e especificar a CPU e a memória

Ao criar uma VM, é possível especificar manualmente os requisitos de CPU e memória. Use esse recurso para criar VMs com os recursos de computação apropriados para atender às necessidades do seu aplicativo.

Para criar uma VM e especificar a CPU e a memória, use um manifesto VirtualMachine.

  1. No editor de sua escolha, crie um manifesto VirtualMachine, como my-custom-vm.yaml:

    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

    Nesse arquivo YAML, defina as seguintes configurações:

    • VM_NAME: o nome da VM.
    • NAMESPACE: o namespace de destino da VM.
    • L2_NETWORK_NAME: o nome da rede L2 a que a VM será conectada.
    • VCPU_NUMBER: o número de vCPUs a serem atribuídas à VM. É possível atribuir de 1 a 96 vCPUs a uma VM.
    • MEMORY_SIZE: a quantidade de memória a ser atribuída à VM. É possível atribuir entre 1 Mi e 1 Ti de memória a uma VM. Para mais informações, consulte Unidades de recurso de memória na documentação do Kubernetes.
    • VM_BOOT_NAME: o nome do disco de inicialização da VM. O disco de inicialização já precisa existir. Para mais informações, consulte Criar um disco de máquina virtual com base em uma imagem de máquina virtual.

    A VM conecta a interface eth0 à rede L2 especificada.

  2. Para criar a VM, aplique o manifesto ao cluster conectado do Distributed Cloud usando o comando kubectl apply:

    kubectl apply -f my-custom-vm.yaml
    
  3. Para verificar se a VM foi criada, use o comando kubectl get:

    kubectl get vm VM_NAME -n NAMESPACE
    

    A saída esperada mostra o status da VM. Também é possível usar o comando kubectl describe para conferir a configuração detalhada, incluindo a CPU e a memória atribuídas.

Criar e usar tipos de VM

Quando você ativa o ambiente de execução de VM no GDC, a definição de recurso personalizado VirtualMachineType fica disponível no cluster. É possível usar esse tipo de recurso para criar modelos reutilizáveis que definem alocações específicas de CPU e memória. Ao criar tipos de VM personalizados para suas diferentes cargas de trabalho, é possível provisionar várias VMs com configurações consistentes de recursos de computação.

Se o ambiente de execução de VMs no GDC estiver ativado no Distributed Cloud Connected, um tipo de VM predefinido poderá estar disponível. Não é possível atualizar este tipo de VM predefinido. A definição a seguir mostra o tipo de VM padrão example-machinetype:

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

Criar um tipo de VM

É possível criar seus próprios tipos de VM para atender às necessidades de computação das cargas de trabalho.

  1. No editor de sua escolha, crie um manifesto VirtualMachineType, como my-vm-type.yaml:

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

    Nesse tipo de VM, defina as seguintes configurações:

    • VM_TYPE_NAME: o nome do tipo de VM.
    • VCPU_NUMBER: o número de vCPUs a serem atribuídas à VM. É possível atribuir de 1 a 96 vCPUs a uma VM.
    • MEMORY_SIZE: a quantidade de memória a ser atribuída à VM. É possível atribuir entre 1 Mi e 1 Ti de memória a uma VM. Para mais informações, consulte Unidades de recurso de memória na documentação do Kubernetes.
  2. Para criar o tipo de VM, aplique o manifesto ao cluster conectado do Distributed Cloud usando o comando kubectl apply:

    kubectl apply -f my-vm-type.yaml
    
  3. Para verificar se o tipo de VM foi criado, execute o comando kubectl get:

    kubectl get virtualmachinetype VM_TYPE_NAME
    

Criar uma VM usando um tipo de VM

Para aplicar as configurações de CPU e memória definidas em um tipo de VM à sua VM, especifique o nome do tipo de VM na seção compute do manifesto VirtualMachine.

  1. No editor de sua escolha, crie um manifesto VirtualMachine, como my-custom-vm.yaml. Nesse arquivo YAML, especifique o nome do tipo de VM personalizado que você criou na seção anterior, como my-vm-type, como o valor de 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

    Defina as seguintes configurações:

    • VM_NAME: o nome da VM.
    • NAMESPACE: o namespace de destino da VM.
    • L2_NETWORK_NAME: o nome da rede L2 a que a VM será conectada.
    • VM_TYPE_NAME: o nome do tipo de VM personalizada que você criou na seção anterior, como my-vm-type.
    • VM_BOOT_NAME: o nome do disco de inicialização da VM. O disco de inicialização já precisa existir. Para mais informações, consulte Criar um disco de máquina virtual com base em uma imagem de máquina virtual.

    A VM conecta a interface eth0 à rede L2 especificada.

  2. Para criar a VM, aplique o manifesto ao cluster conectado do Distributed Cloud usando o comando kubectl apply:

    kubectl apply -f my-custom-vm.yaml
    
  3. Para verificar se a VM está usando o tipo de VM, execute o comando kubectl get com a opção -o jsonpath:

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

    A saída esperada mostra o nome do tipo de VM.

A seguir