Configurar uma política de armazenamento

Neste documento, mostramos como configurar uma política de armazenamento de VM para um cluster do Google Distributed Cloud.

Visão geral

No vSphere, o Gerenciamento baseado em políticas de armazenamento (SPBM, na sigla em inglês) ajuda a alinhar o armazenamento com as demandas de aplicativos das máquinas virtuais. Ele fornece um framework de políticas de armazenamento que serve como um painel de controle unificado em uma ampla gama de serviços de dados e soluções de armazenamento.

Em um cluster do Anthos no VMware, é possível especificar políticas de armazenamento como uma alternativa à especificação de repositórios de dados. Você define políticas de armazenamento com base nos requisitos do seu aplicativo e, em seguida, o vSphere seleciona e gerencia repositórios de dados automaticamente. Isso pode reduzir a sobrecarga e a manutenção associadas ao armazenamento.

Herança

É possível especificar uma política de armazenamento para um cluster de usuário, um pool de nós em um cluster de usuário ou um conjunto de nós do plano de controle em um cluster de usuário. Também é possível especificar uma política de armazenamento para um cluster de administrador, desde que ele tenha um plano de controle de alta disponibilidade e não tenha pools de nós do Windows.

Se você especificar uma política de armazenamento para um cluster de usuário, ela será herdada pelos pools de nós no cluster de usuário. Se você especificar uma política de armazenamento para um pool de nós individual, ela será usada no lugar da política de armazenamento no nível do cluster. Da mesma forma, se você especificar um armazenamento de dados para um pool de nós individual, ele será usado no lugar da política de armazenamento no nível do cluster.

Em um cluster de usuário com o plano de controle V2 ativado, a política de armazenamento no nível do cluster é herdada pelos nós do plano de controle. Se você especificar uma política de armazenamento ou um repositório de dados para os nós do plano de controle, essa política ou repositório de dados vai ser usado no lugar da política no nível do cluster.

Como aplicar políticas de armazenamento a repositórios de dados

Você pode aplicar uma política de armazenamento a um único repositório de dados ou a vários. Se você aplicar uma política de armazenamento a vários repositórios de dados, os recursos de armazenamento para um cluster de administrador, cluster de usuário ou pool de nós poderão ser distribuídos entre os repositórios de dados.

Exemplo: criar uma política de armazenamento e um cluster de usuário

Nesta seção, mostramos um exemplo de como criar uma política de armazenamento e um cluster de usuário. Este exemplo ilustra a ideia de que uma política de armazenamento pode ser aplicada a dois repositórios de dados.

Aplicar tags ao repositório de dados

Para seguir as etapas deste exemplo, o ambiente do vSphere precisa ter pelo menos dois repositórios de dados.

O cluster do vSphere que hospedará os nós do cluster de usuário precisa ter acesso aos repositórios de dados que você planeja usar neste exercício. Há uma verificação de simulação que verifica isso.

A conta do vCenter usada para aplicar tags precisa ter os seguintes privilégios de privilégios de inclusão de tag do vSphere no servidor vCenter raiz:

  • vSphere Tagging.Create vSphere Tag
  • vSphere Tagging.Create vSphere tag categoria
  • "vSphere Tagging.Assign" ou "Unassign vSphere Tag"

No cliente vSphere, atribua a mesma tag a cada um dos repositórios de dados que você escolheu usar para este exercício. Para instruções, consulte Atribuir tags a Datastores.

Para mais informações, consulte Tags e atributos do vSphere.

Criar uma política de armazenamento

No cliente vSphere, crie uma política de armazenamento de VM para a posição baseada em tag. Na política de armazenamento, especifique a tag que você aplicou aos repositórios de dados escolhidos. Para instruções, consulte Criar uma política de armazenamento de VM para posicionamentos com base em tags.

Para mais informações, consulte a Política de armazenamento da VM.

Se você estiver usando um repositório de dados vSAN, consulte a Política de armazenamento vSAN.

Criar um cluster de usuário

Neste exercício, você cria um cluster de usuário que tem um plano de controle de alta disponibilidade, portanto, haverá três nós do plano de controle. Além dos nós do plano de controle, há seis nós de trabalho: três em um pool de nós e três em um segundo pool de nós. Todos os nós usam endereços IP estáticos.

Comece seguindo as instruções em Criar um cluster de usuário.

Durante o preenchimento do arquivo de configuração do cluster de usuário:

  • Defina o valor de vCenter.storagePolicyName como o nome de uma política de armazenamento atual. Não defina um valor para vCenter.datastore.

  • Especifique dois pools de nós. Para o primeiro pool de nós, não especifique um repositório de dados e não uma política de armazenamento. Para o segundo pool de nós, defina o valor de vsphere.datastore como o nome de um repositório de dados existente.

Exemplo de arquivo de configuração de cluster

Veja um exemplo de um arquivo de bloco de IP e uma parte de um arquivo de configuração de cluster de usuário.

user-ipblock.yaml

blocks:
  - netmask: 255.255.255.0
    gateway: 172.16.21.1
    ips:
    - ip: 172.16.21.2
    - ip: 172.16.21.3
    - ip: 172.16.21.4
    - ip: 172.16.21.5
    - ip: 172.16.21.6
    - ip: 172.16.21.7
    - ip: 172.16.21.8

user-cluster-yaml

apiVersion: v1
kind: UserCluster
...
vCenter:
  storagePolicyName: "my-storage-policy"
network:
  hostConfig:
    dnsServers:
    - "203.0.113.2"
    - "198.51.100.2"
    ntpServers:
    - "216.239.35.4"
  ipMode:
    type: "static"
    ipBlockFilePath: "user-ipblock.yaml"
  controlPlaneIPBlock:
    netmask: "255.255.255.0"
    gateway: "172.16.21.1"
    ips:
    - ip: "172.16.21.9"
      hostname: "cp-vm-1"
    - ip: "172.16.21.10"
      hostname: "cp-vm-2"
    - ip: "172.16.21.11"
      hostname: "cp-vm-3"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.21.40"
    ingressVIP: "172.16.21.30"
  kind: MetalLB
  metalLB:
    addressPools:
    - name: "address-pool-1"
      addresses:
    - "172.16.21.30-172.16.21.39"
...
enableControlplaneV2: true
masterNode:
  cpus: 4
  memoryMB: 8192
  replicas: 3
nodePools:
- name: "worker-pool-1"
  enableLoadBalancer: true
- name: "worker-pool-2"
  vSphere:
    datastore: "my-np2-datastore"
...

Estes são os pontos importantes que você precisa entender no exemplo anterior:

  • Os endereços IP estáticos dos nós de trabalho são especificados em um arquivo de bloco de IP. O arquivo de bloco de IP tem sete endereços, mesmo que haja apenas seis nós de trabalho. O endereço IP extra é necessário durante o upgrade, a atualização e o reparo automático do cluster.

  • Os endereços IP estáticos dos três nós do plano de controle são especificados na seção network.controlPlaneIPBlock do arquivo de configuração do cluster de usuário. Não é necessário ter um endereço IP extra neste bloco.

  • O campo masterNode.replicas está definido como 3, então haverá três nós do plano de controle. Em masterNode, nada é especificado para vsphere.datastore ou vsphere.storagePolicyName. Portanto, os nós do plano de controle vão usar a política de armazenamento especificada em vCenter.storagePolicyName.

  • O arquivo de configuração do cluster de usuário inclui um valor para vCenter.storagePolicy, mas não para vCenter.datastore. A política de armazenamento especificada será usada por nós em qualquer pool que não especifique a própria política de armazenamento ou o próprio repositório de dados.

  • Em node-pool-1, nada é especificado para vsphere.datastore ou vsphere.storagePolicyName. Assim, os nós em node-pool-1 usarão a política de armazenamento especificada em vCenter.storagePolicyName.

  • Em node-pool-2, o valor de vsphere.datastore é my-np2-datastore. Portanto, os nós em node-pool-2 usam esse repositório de dados e não usam uma política de armazenamento.

Continue criando o cluster de usuário conforme descrito em Criar um cluster de usuário.

Criar um cluster de usuário em um data center separado do cluster de administrador

Um cluster de usuário pode estar em um data center separado do cluster de administrador. Os dois data centers podem usar a mesma instância do servidor vCenter ou instâncias diferentes do servidor vCenter.

Nesta seção, você verá um exemplo de como criar um cluster de usuário que usa uma instância separada do vCenter Server a partir do cluster de administrador. Como os clusters de usuário e administrador usam instâncias separadas do vCenter Server, eles também estão em data centers separados.

Comece seguindo as instruções em Criar um cluster de usuário.

Durante o preenchimento do arquivo de configuração do cluster de usuário:

  • Defina o valor de vCenter.storagePolicyName como o nome de uma política de armazenamento atual. Não defina um valor para vCenter.datastore.

  • Em vCenter, especifique valores para address, datacenter, cluster e resourcePool.

  • Especifique um valor para network.vCenter.networkName.

  • Especifique dois pools de nós. Para o primeiro pool de nós, não especifique um repositório de dados e não uma política de armazenamento. Para o segundo pool de nós, defina o valor de vsphere.datastore como o nome de um repositório de dados existente.

Exemplo de arquivo de configuração de cluster

Veja um exemplo de um arquivo de bloco de IP e uma parte de um arquivo de configuração de cluster de usuário.

user-ipblock.yaml

blocks:
  - netmask: 255.255.255.0
    gateway: 172.16.21.1
    ips:
    - ip: 172.16.21.2
    - ip: 172.16.21.3
    - ip: 172.16.21.4
    - ip: 172.16.21.5
    - ip: 172.16.21.6
    - ip: 172.16.21.7
    - ip: 172.16.21.8

user-cluster-yaml

apiVersion: v1
kind: UserCluster
...
vCenter:
  address: "my-vcenter-server-2.my-domain.example"
  datacenter: "my-uc-data-center"
  cluster: "my-uc-vsphere-cluster"
  resourcePool: "my-uc-resource-pool"
  storagePolicyName: "my-storage-policy"
network:
  vCenter:
    networkName: "my-uc-network"
  hostConfig:
    dnsServers:
    - "203.0.113.2"
    - "198.51.100.2"
    ntpServers:
    - "216.239.35.4"
  ipMode:
    type: "static"
    ipBlockFilePath: "user-ipblock.yaml"
  controlPlaneIPBlock:
    netmask: "255.255.255.0"
    gateway: "172.16.21.1"
    ips:
    - ip: "172.16.21.9"
      hostname: "cp-vm-1"
    - ip: "172.16.21.10"
      hostname: "cp-vm-2"
    - ip: "172.16.21.11"
      hostname: "cp-vm-3"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.21.40"
    ingressVIP: "172.16.21.30"
  kind: MetalLB
  metalLB:
    addressPools:
    - name: "address-pool-1"
      addresses:
    - "172.16.21.30-172.16.21.39"
...
enableControlplaneV2: true
masterNode:
  cpus: 4
  memoryMB: 8192
  replicas: 3
nodePools:
- name: "worker-pool-1"
  enableLoadBalancer: true
- name: "worker-pool-2"
  vSphere:
    datastore: "my-np2-datastore"
...

Estes são os pontos importantes que você precisa entender no exemplo anterior:

  • O arquivo de configuração do cluster de usuário inclui um valor para vCenter.storagePolicy, mas não para vCenter.datastore. A política de armazenamento especificada será usada por nós em qualquer pool de nós que não especifique a própria política de armazenamento ou o próprio repositório de dados.

  • Em vCenter, há valores especificados para address, datacenter, cluster e resourcePool. Portanto, o cluster de usuário vai usar um servidor vCenter, data center, cluster do vSphere e pool de recursos diferentes do cluster de administrador.

  • Há um valor especificado para network.vCenter.networkName.

  • O campo masterNode.replicas está definido como 3, então haverá três nós do plano de controle. Em masterNode, nada é especificado para vsphere.datastore ou vsphere.storagePolicyName. Portanto, os nós do plano de controle vão usar a política de armazenamento especificada em vCenter.storagePolicyName.

  • Em node-pool-1, nada é especificado para vsphere.datastore ou vsphere.storagePolicyName. Assim, os nós em node-pool-1 usarão a política de armazenamento especificada em vCenter.storagePolicyName.

  • Em node-pool-2, o valor de vsphere.datastore é my-np2-datastore. Portanto, os nós em node-pool-2 usam esse repositório de dados e não usam uma política de armazenamento.

Continue criando o cluster de usuário conforme descrito em Criar um cluster de usuário.

Como usar o vMotion de armazenamento

Nesta seção, mostramos como usar o armazenamento vMotion em um cluster que usa SPBM. Se você quiser usar o armazenamento vMotion em um cluster que não usa o SPBM, consulte Usar a ferramenta de migração do repositório de dados.

Siga estas etapas:

  1. Migrar todas as VMs do cluster para o repositório de dados de destino. Para mais instruções, consulte Migrar uma máquina virtual para um novo recurso de computação e armazenamento.

  2. Verifique se as VMs foram migradas para o novo repositório de dados.

    Acesse os objetos Machine no cluster:

    kubectl --kubeconfig CLUSTER_KUBECONFIG get machines --output yaml
    

    Na saída, em status.disks, é possível ver os discos anexados às VMs. Exemplo:

    status:
    addresses:
    – address: 172.16.20.2
      type: ExternalIP
    disks:
    – bootdisk: true
      datastore: pf-ds06
      filepath: ci-bluecwang-head-xvz2ccv28bf9wdbx-2/ci-bluecwang-head-xvz2ccv28bf9wdbx-2.vmdk
      uuid: 6000C29d-8edb-e742-babc-9c124013ba54
    – datastore: pf-ds06
      filepath: anthos/gke-admin-nc4rk/ci-bluecwang-head/ci-bluecwang-head-2-data.vmdk
      uuid: 6000C29e-cb12-8ffd-1aed-27f0438bb9d9
    

    Verifique se todos os discos de todas as máquinas no cluster foram migrados para o armazenamento de dados de destino.

  3. Execute gkectl diagnose para verificar se o cluster está íntegro.

  4. Atualize a política de armazenamento para excluir os repositórios de dados antigos. Caso contrário, novos volumes e VMs recriadas poderão ser atribuídos a um repositório de dados antigo.