Criar e usar classes de armazenamento no ambiente de execução de VMs no Google Distributed Cloud

Este documento é destinado a proprietários de aplicativos e administradores de plataforma que executam o GKE em Bare Metal. Neste documento, mostramos como criar e usar classes de armazenamento para VMs que usam o ambiente de execução de VMs no Google Distributed Cloud. Um StorageClass permite definir diferentes configurações de armazenamento para atender às várias necessidades das VMs.

Antes de começar

Para concluir este documento, acesse os clusters do GKE em Bare Metal versão 1.12.0 (anthosBareMetalVersion: 1.12.0) ou superior. Use qualquer tipo de cluster capaz de executar cargas de trabalho. Se necessário, teste o GKE em Bare Metal no Compute Engine ou consulte a visão geral da criação de clusters.

Visão geral das classes de armazenamento

Use um StorageClass para definir o tipo de armazenamento que disponibiliza para as VMs. Diferentes classes de armazenamento podem ser mapeadas para um tipo diferente de hardware de armazenamento, sistema de arquivos ou desempenho. É possível criar e usar classes de armazenamento para oferecer suporte às cargas de trabalho de computação no ambiente de execução de VMs no Google Distributed Cloud. Para mais informações, consulte Classes de armazenamento.

Um StorageClass padrão pode ser definido no recurso personalizado do ambiente de execução de VMs Runtime no Google Distributed Cloud. Se você não definir uma classe específica ao criar um VirtualMachineDisks,, este StorageClass padrão será usado. Nenhuma StorageClass inicial é configurada e definida como padrão. Na seção a seguir, você saberá como definir ou atualizar esse StorageClass padrão.

Definir ou atualizar o StorageClass padrão

Inicialmente, o GKE em Bare Metal com o ambiente de execução de VMs no Google Distributed Cloud não tem o StorageClass padrão configurado. Para criar um VirtualMachineDisk sem especificar um StorageClass, primeiro é necessário criar um StorageClass e, em seguida, defini-lo como padrão.

Se você quiser definir ou atualizar inicialmente o StorageClass padrão que o ambiente de execução de VMs no Google Distributed Cloud usa ao criar um VirtualMachineDisk, atualize o recurso personalizado VMRuntime.

  1. Edite o recurso personalizado VMRuntime:

    kubectl edit vmruntime
    
  2. Adicione ou atualize a seção spec.storage que especifica o StorageClass padrão a ser usado:

    apiVersion: vm.cluster.gke.io/v1
    kind: VMRuntime
    metadata:
      name: vmruntime
    spec:
      enabled: true
      storage:
        defaultStorageClass: STORAGE_CLASS_NAME
    ...
    

    Edite STORAGE_CLASS_NAME com o nome do StorageClass padrão que você quer usar. Se você precisar criar um StorageClass primeiro, consulte Criar um StorageClass.

  3. Salve e feche o recurso personalizado VMRuntime no editor.

    O StorageClass que você especificou agora é usado quando você cria um disco de máquina virtual e não especifica um StorageClass. A seção a seguir mostra como criar um disco e usar um StorageClass específico.

    Os recursos VirtualMachineDisk existentes não são atualizados para usar o StorageClass recém-especificado.

Usar um StorageClass específico

Se você não quiser usar o StorageClass padrão ao criar uma VirtualMachineDisk, use o campo storageClassName para especificar um StorageClass diferente.

Para usar uma StorageClass específica já definida ao criar uma VirtualMachineDisk, siga estas etapas:

  1. Crie um manifesto de VirtualMachineDisk, como my-disk.yaml, no editor de sua escolha:

    nano my-disk.yaml
    
  2. Copie e cole o seguinte manifesto YAML:

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

    Substitua os seguintes valores:

    • DISK_NAME: o nome do disco.
    • STORAGE_CLASS_NAME: o StorageClass a ser usado no disco. Esse StorageClass já precisa existir. Se você precisar criar um StorageClass primeiro, consulte Criar um StorageClass.
  3. Salve e feche o manifesto do disco no editor.

  4. Crie o disco usando kubectl:

    kubectl apply -f my-disk.yaml
    

Configurar perfis de armazenamento

Os perfis de armazenamento oferecem opções de configuração adicionais associadas a cada StorageClass. Essas opções de configuração incluem os modos de acesso e volume que serão usados para VirtualMachineDisks que usam StorageClass.

Sem um perfil de armazenamento configurado, os discos serão definidos como o modo de acesso ReadWriteOnce por padrão. Esse modo de acesso não é suficiente para as cargas de trabalho de produção, já que recursos como a migração em tempo real não funcionam. O modo de volume padrão sem um perfil de armazenamento configurado é Filesystem.

O ambiente de execução de VMs no Google Distributed Cloud gera automaticamente um perfil de armazenamento para cada StorageClass de um cluster. O perfil de armazenamento tem o mesmo nome do StorageClass associado. O exemplo de saída a seguir mostra que o cluster tem quatro classes de armazenamento e perfis associados:

  $ kubectl get storageprofiles

  NAME            AGE
  anthos-system   11d
  node-disk       11d
  standard        11d
  nfs             11d

Para editar um perfil de armazenamento e mudar o modo de acesso ou de volume, siga estas etapas:

  1. Edite o recurso personalizado StorageProfile para edição:

    kubectl edit storageprofile STORAGE_PROFILE_NAME
    

    Substitua STORAGE_PROFILE_NAME pela StorageProfile que você quer editar.

  2. Adicione uma única entrada à lista spec.claimPropertySets do StorageProfile:

    apiVersion: cdi.kubevirt.io/v1beta1
    kind: StorageProfile
    metadata:
      name: nfs
    spec:
      claimPropertySets:
      - accessModes:
        - ACCESS_MODE
        volumeMode: VOLUME_MODE
    

    accessMode e volumeMode usam os componentes do Kubernetes subjacentes. Os valores definidos dependem do driver de armazenamento que você usa. Substitua os valores a seguir conforme apropriado para o armazenamento que você usa:

    • ACCESS_MODE: o modo de acesso que você quer usar. Se compatível com o StorageClass associado, o modo de acesso preferencial é ReadWriteMany.
      • Os valores aceitáveis incluem ReadWriteOnce, ReadOnlyMany, ReadWriteMany, e ReadWriteOncePod. Se não for especificado, ReadWriteOnce será usado com base no ambiente de execução de VMs nos padrões do Google Distributed Cloud. Para mais informações, consulte Modos de acesso.
    • VOLUME_MODE: o modo de volume que você quer usar.
      • Os valores aceitáveis incluem Filesystem e Block. Se não for especificado, Filesystem será usado com base nos padrões do Kubernetes. Para mais informações, consulte Modos de volume.
  3. Salve e feche o recurso personalizado StorageProfile no editor.

    As configurações do perfil de armazenamento definidas são usadas quando você cria qualquer disco virtual. Os recursos atuais do VirtualMachineDisk não são atualizados para usar as configurações do perfil de armazenamento definido.

A seguir