Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo descreve como mover com segurança os volumes persistentes do Disco do Azure de um cluster do Serviço Kubernetes do Azure (AKS) para outro na mesma assinatura ou em uma assinatura diferente. A assinatura de destino deve estar na mesma região.
A sequência de etapas para concluir essa movimentação são:
- Para evitar a perda de dados, confirme que o estado do recurso do Disco do Azure no cluster AKS de origem não está num estado Anexado.
- Mova o recurso de disco do Azure para o grupo de recursos de destino na mesma assinatura ou em uma assinatura diferente.
- Valide se a movimentação de recursos do Disco do Azure foi bem-sucedida.
- Crie o volume persistente (PV) e a declaração de volume persistente (PVC) e, em seguida, monte o disco movido como um volume em um pod no cluster de destino.
Antes de começar
- Verifique se você tem a CLI do Azure versão 2.0.59 ou posterior instalada e configurada. Para localizar a versão, execute
az --version. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI). - Analise os detalhes e os requisitos sobre como mover recursos entre regiões diferentes em Mover recursos para um novo grupo de recursos ou assinatura. Certifique-se de revisar a lista de verificação antes de mover recursos nesse artigo.
- O cluster de origem deve ter um ou mais volumes persistentes com um Disco do Azure anexado.
- Você deve ter um cluster AKS na assinatura de destino.
Validar o estado do volume do disco
É importante evitar o risco de corrupção de dados, inconsistências ou perda de dados ao trabalhar com volumes persistentes. Para reduzir esses riscos durante o processo de migração ou movimentação, você deve primeiro verificar se o volume do disco está desanexado executando as etapas a seguir.
Identifique o grupo de recursos de nós que aloja os discos geridos do Azure usando o
az aks showcomando e adicione o--query nodeResourceGroupparâmetro.az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsvA saída do comando é semelhante ao seguinte exemplo:
MC_myResourceGroup_myAKSCluster_eastusListe os discos gerenciados usando o
az disk listcomando. Faça referência ao grupo de recursos retornado na etapa anterior.az disk list --resource-group MC_myResourceGroup_myAKSCluster_eastusRevise a lista e observe quais volumes de disco você planeja mover para o outro cluster. Valide também o estado do disco procurando a
diskStatepropriedade. A saída do comando é um exemplo condensado.{ "LastOwnershipUpdateTime": "2023-04-25T15:09:19.5439836+00:00", "creationData": { "createOption": "Empty", "logicalSectorSize": 4096 }, "diskIOPSReadOnly": 3000, "diskIOPSReadWrite": 4000, "diskMBpsReadOnly": 125, "diskMBpsReadWrite": 1000, "diskSizeBytes": 1073741824000, "diskSizeGB": 1000, "diskState": "Unattached",Nota
Observe o valor do campo
resourceGroupde cada disco que pretendes mover da saída acima. Este grupo de recursos é o grupo de recursos do nó, não o grupo de recursos do cluster. Você precisará do nome desse grupo de recursos para mover os discos.Se
diskStatemostrarAttached, primeiro determine se alguma carga de trabalho ainda está acessando o volume e interrompa-as. Após um período de tempo, o estado do disco retorna o estadoUnattachede pode ser movido.
Mover o volume persistente
Para mover o volume ou volumes persistentes para outro cluster AKS, siga as etapas descritas em Mover recursos do Azure para um novo grupo de recursos ou assinatura. Você pode usar o portal do Azure, o Azure PowerShell ou a CLI do Azure para executar a migração.
Durante esse processo, você faz referência:
- O nome ou ID de recurso do grupo de recursos da origem que hospeda os discos geridos do Azure. Você pode encontrar o nome do grupo de recursos do nó navegando até o painel Discos no portal do Azure e anotando o grupo de recursos associado ao seu disco.
- O nome ou ID do recurso do grupo de recursos de destino para o qual mover os discos gerenciados.
- O nome ou ID do recurso dos discos geridos.
Nota
Devido às dependências entre provedores de recursos, essa operação pode levar até quatro horas para ser concluída.
Verifique se o volume do disco foi movido
Depois de mover o volume do disco para o grupo de recursos de cluster de destino, valide o recurso na lista de grupos de recursos usando o az disk list comando. Faça referência ao grupo de recursos de destino para onde os recursos foram movidos. Neste exemplo, os discos foram movidos para um grupo de recursos chamado MC_myResourceGroup_myAKSCluster_eastus.
az disk list --resource-group MC_myResourceGroup_myAKSCluster_eastus
Monte o disco transferido num volume
Para montar o volume de disco movido, crie um volume persistente estático com o ID do recurso copiado nas etapas anteriores, a declaração de volume persistente e, neste exemplo, um pod simples.
Crie um arquivo pv-azuredisk.yaml com um volume persistente. Atualize o campo volumeHandle com o ID do recurso de disco da etapa anterior.
apiVersion: v1 kind: PersistentVolume metadata: name: pv-azuredisk spec: capacity: storage: 10Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: managed-csi csi: driver: disk.csi.azure.com readOnly: false volumeHandle: /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/MC_rg_azure_aks-pvc-target_eastus/providers/Microsoft.Compute/disks/pvc-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e volumeAttributes: fsType: ext4Crie um arquivo pvc-azuredisk.yaml com um PersistentVolumeClaim que usa o PersistentVolume.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-azuredisk spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi volumeName: pv-azuredisk storageClassName: managed-csiCrie o PersistentVolume e o PersistentVolumeClaim usando o comando
kubectl applye faça referência aos dois ficheiros YAML que criou.kubectl apply -f pv-azuredisk.yaml kubectl apply -f pvc-azuredisk.yamlVerifique se seu PersistentVolumeClaim foi criado e vinculado ao PersistentVolume usando o
kubectl getcomando.kubectl get pvc pvc-azurediskA saída do comando é semelhante ao seguinte exemplo:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE pvc-azuredisk Bound pv-azuredisk 20Gi RWO 5sPara fazer referência ao seu PersistentVolumeClaim, crie um ficheiro azure-disk-pod.yaml. No exemplo de manifest, o nome do pod é mypod.
apiVersion: v1 kind: Pod metadata: name: mypod spec: nodeSelector: kubernetes.io/os: linux containers: - image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine name: mypod resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - name: azure mountPath: /mnt/azure volumes: - name: azure persistentVolumeClaim: claimName: pvc-azurediskAplique a configuração e monte o volume usando o comando kubectl apply .
kubectl apply -f azure-disk-pod.yamlVerifique o status do pod e os dados migrados com o volume montado dentro do sistema de arquivos pod no
/mnt/azure. Primeiro, obtenha o status do pod usando okubectl getcomando.kubectl get podsA saída do comando é semelhante ao seguinte exemplo:
NAME READY STATUS RESTARTS AGE mypod 1/1 Running 0 4m1sVerifique os dados dentro do volume
/mnt/azuremontado usando okubectl execcomando.kubectl exec -it mypod -- ls -l /mnt/azure/A saída do comando é semelhante ao seguinte exemplo:
total 28 -rw-r--r-- 1 root root 0 Jan 11 10:09 file-created-in-source-aks
Próximos passos
- Para obter mais informações sobre soluções de armazenamento baseadas em disco, consulte Soluções baseadas em disco no AKS.
- Para obter mais informações sobre práticas recomendadas de armazenamento, consulte Práticas recomendadas para armazenamento e backups no Serviço Kubernetes do Azure.