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 esse cluster 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 paravCenter.datastore
.Especifique dois pools de nós. Para o primeiro pool de nós, não especifique um repositório de dados nem 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 como3
, então haverá três nós do plano de controle. EmmasterNode
, nada é especificado paravsphere.datastore
ouvsphere.storagePolicyName
. Portanto, os nós do plano de controle vão usar a política de armazenamento especificada emvCenter.storagePolicyName
.O arquivo de configuração do cluster de usuário inclui um valor para
vCenter.storagePolicy
, mas não paravCenter.datastore
. A política de armazenamento especificada será usada por nós em qualquer pool que não especifique a própria política ou repositório de dados.Em
node-pool-1
, nada é especificado paravsphere.datastore
ouvsphere.storagePolicyName
. Assim, os nós emnode-pool-1
usarão a política de armazenamento especificada emvCenter.storagePolicyName
.Em
node-pool-2
, o valor devsphere.datastore
émy-np2-datastore
. Portanto, os nós emnode-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 paravCenter.datastore
.Em
vCenter
, especifique valores paraaddress
,datacenter
,cluster
eresourcePool
.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 nem 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 paravCenter.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 ou repositório de dados.Em
vCenter
, há valores especificados paraaddress
,datacenter
,cluster
eresourcePool
. 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 como3
, então haverá três nós do plano de controle. EmmasterNode
, nada é especificado paravsphere.datastore
ouvsphere.storagePolicyName
. Portanto, os nós do plano de controle vão usar a política de armazenamento especificada emvCenter.storagePolicyName
.Em
node-pool-1
, nada é especificado paravsphere.datastore
ouvsphere.storagePolicyName
. Assim, os nós emnode-pool-1
usarão a política de armazenamento especificada emvCenter.storagePolicyName
.Em
node-pool-2
, o valor devsphere.datastore
émy-np2-datastore
. Portanto, os nós emnode-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 vMotion de armazenamento em um cluster que usa o SPBM. Se você quiser usar o vMotion de armazenamento em um cluster que não usa o SPBM, consulte Usar a ferramenta de migração de repositório de dados.
Siga estas etapas:
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.
Verifique se as VMs foram migradas com sucesso para o novo repositório de dados.
Consiga 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.
Execute
gkectl diagnose
para verificar se o cluster está íntegro.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.