Permanente Azure Disk-volumes verplaatsen naar een ander AKS-cluster in hetzelfde of een ander abonnement

In dit artikel wordt beschreven hoe u permanente Azure Disk-volumes veilig kunt verplaatsen van een AKS-cluster (Azure Kubernetes Service) naar een ander cluster in hetzelfde abonnement of in een ander abonnement. Het doelabonnement moet zich in dezelfde regio bevinden.

De reeks stappen voor het voltooien van deze verplaatsing zijn:

  • Als u gegevensverlies wilt voorkomen, controleert u of de status van de Azure Disk-resource op het bron-AKS-cluster niet de status Gekoppeld heeft .
  • Verplaats de Azure Disk-resource naar de doelresourcegroep in hetzelfde abonnement of een ander abonnement.
  • Controleer of de verplaatsing van de Azure Disk-resource is geslaagd.
  • Maak het permanente volume (PV) en de permanente volumeclaim (PVC) en koppel de verplaatste schijf vervolgens als een volume op een pod op het doelcluster.

Voordat u begint

Status van schijfvolume valideren

Het is belangrijk om het risico op beschadiging van gegevens, inconsistenties of gegevensverlies te voorkomen tijdens het werken met permanente volumes. Als u deze risico's tijdens de migratie of verplaatsing wilt beperken, moet u eerst controleren of het schijfvolume niet is gekoppeld door de volgende stappen uit te voeren.

  1. Identificeer de knooppuntresourcegroep die als host fungeert voor de beheerde Azure-schijven met behulp van de az aks show opdracht en voeg de --query nodeResourceGroup parameter toe.

    az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv
    

    De uitvoer van de opdracht lijkt op het volgende voorbeeld:

    MC_myResourceGroup_myAKSCluster_eastus
    
  2. Geef de beheerde schijven weer met behulp van de az disk list opdracht. Verwijs naar de resourcegroep die in de vorige stap is geretourneerd.

    az disk list --resource-group MC_myResourceGroup_myAKSCluster_eastus
    

    Bekijk de lijst en noteer welke schijfvolumes u naar het andere cluster wilt verplaatsen. Valideer ook de schijfstatus door naar de diskState eigenschap te zoeken. De uitvoer van de opdracht is een verkort voorbeeld.

    {
    "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",
    

    Notitie

    Noteer de waarde van het resourceGroup veld voor elke schijf die u wilt verplaatsen uit de bovenstaande uitvoer. Deze resourcegroep is de knooppuntresourcegroep, niet de clusterresourcegroep. U hebt de naam van deze resourcegroep nodig om de schijven te verplaatsen.

  3. Als diskStateAttached toont, bepaal dan eerst of workloads nog steeds toegang hebben tot het volume en stop ze. Na een bepaalde periode retourneert de schijfstatus de status Unattached en kan deze vervolgens worden verplaatst.

Het permanente volume verplaatsen

Als u het permanente volume of de permanente volumes naar een ander AKS-cluster wilt verplaatsen, volgt u de stappen die worden beschreven in Azure-resources verplaatsen naar een nieuwe resourcegroep of een nieuw abonnement. U kunt Azure Portal, Azure PowerShell of de Azure CLI gebruiken om de migratie uit te voeren.

Tijdens dit proces verwijst u naar:

  • De naam of resource-id van de bronknooppuntresourcegroep die als host fungeert voor de beheerde Azure-schijven. U vindt de naam van de knooppuntresourcegroep door te navigeren naar het dashboard Schijven in Azure Portal en de bijbehorende resourcegroep voor uw schijf te noteren.
  • De naam of resource-id van de doelresourcegroep waar de beheerde schijven naartoe moeten worden verplaatst.
  • De naam of resource-id van de beheerde schijvenresources.

Notitie

Vanwege de afhankelijkheden tussen resourceproviders kan het tot vier uur duren voordat deze bewerking is voltooid.

Controleer of het schijfvolume is verplaatst

Nadat u het schijfvolume naar de doelclusterresourcegroep hebt verplaatst, valideert u de resource in de lijst met resourcegroepen met behulp van de az disk list opdracht. Verwijs naar de doelresourcegroep waar de resources zijn verplaatst. In dit voorbeeld zijn de schijven verplaatst naar een resourcegroep met de naam MC_myResourceGroup_myAKSCluster_eastus.

  az disk list --resource-group MC_myResourceGroup_myAKSCluster_eastus

De verplaatste schijf als volume koppelen

Als u het verplaatste schijfvolume wilt koppelen, maakt u een statisch permanent volume met de resource-id die u in de vorige stappen hebt gekopieerd, de permanente volumeclaim en in dit voorbeeld een eenvoudige pod.

  1. Maak een pv-azuredisk.yaml-bestand met een permanent volume. Werk het veld volumeHandle bij met de schijfresource-id uit de vorige stap.

    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: ext4
    
  2. Maak een pvc-azuredisk.yaml-bestand met een PersistentVolumeClaim die gebruikmaakt van het PersistentVolume.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-azuredisk
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 10Gi
      volumeName: pv-azuredisk
      storageClassName: managed-csi
    
  3. Maak het PersistentVolume en PersistentVolumeClaim met behulp van de kubectl apply opdracht en verwijs naar de twee YAML-bestanden die u hebt gemaakt.

    kubectl apply -f pv-azuredisk.yaml
    kubectl apply -f pvc-azuredisk.yaml
    
  4. Controleer of uw PersistentVolumeClaim is gemaakt en gebonden aan het PersistentVolume met behulp van de kubectl get opdracht.

    kubectl get pvc pvc-azuredisk
    

    De uitvoer van de opdracht lijkt op het volgende voorbeeld:

    NAME            STATUS   VOLUME         CAPACITY    ACCESS MODES   STORAGECLASS   AGE
    pvc-azuredisk   Bound    pv-azuredisk   20Gi        RWO                           5s
    
  5. Als u wilt verwijzen naar uw PersistentVolumeClaim, maakt u een azure-disk-pod.yaml-bestand . In het voorbeeldmanifest is de naam van de 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-azuredisk
    
  6. Gebruik de opdracht kubectl apply om de configuratie toe te passen en het volume te koppelen.

    kubectl apply -f azure-disk-pod.yaml
    
  7. Controleer de status van de pod en de gegevens die zijn gemigreerd met het volume dat in het pod-bestandssysteem is aangekoppeld op /mnt/azure. Haal eerst de podstatus op met behulp van de kubectl get opdracht.

    kubectl get pods
    

    De uitvoer van de opdracht lijkt op het volgende voorbeeld:

    NAME    READY   STATUS    RESTARTS   AGE
    mypod   1/1     Running   0          4m1s
    

    Controleer de gegevens in het gekoppelde volume /mnt/azure met behulp van de kubectl exec opdracht.

    kubectl exec -it mypod -- ls -l /mnt/azure/
    

    De uitvoer van de opdracht lijkt op het volgende voorbeeld:

    total 28
    -rw-r--r--    1 root     root       0 Jan 11 10:09 file-created-in-source-aks
    

Volgende stappen