Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird beschrieben, wie Sie persistente Azure Disk-Volumes sicher von einem Azure Kubernetes Service (AKS)-Cluster in einen anderen Cluster im selben Abonnement oder in ein anderes Abonnement verschieben. Das Zielabonnement muss sich in derselben Region befinden.
Die Abfolge der Schritte zum Ausführen dieser Verschiebung:
- Um Datenverluste zu vermeiden, stellen Sie sicher, dass sich der Azure Disk-Ressourcenstatus im Quell-AKS-Cluster in keinem angefügten Zustand befindet.
- Verschieben Sie die Azure Disk-Ressource in die Zielressourcengruppe im selben Abonnement oder in ein anderes Abonnement.
- Überprüfen Sie, ob die Azure Disk-Ressourcenverschiebung erfolgreich war.
- Erstellen Sie das persistente Volume (PV) und den persistenten Volumenanspruch (PVC), und binden Sie dann den verschobenen Datenträger als Volume auf einem Pod auf dem Zielcluster ein.
Bevor Sie beginnen
- Stellen Sie sicher, dass Version 2.0.59 oder höher der Azure-Befehlszeilenschnittstelle (Azure CLI) installiert und konfiguriert ist. Führen Sie
az --versionaus, um die Version zu finden. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI. - Details und Anforderungen zum Verschieben von Ressourcen zwischen verschiedenen Regionen finden Sie unter Verschieben von Ressourcen in eine neue Ressourcengruppe oder ein neues Abonnement. Überprüfen Sie unbedingt die Checkliste, bevor Sie Ressourcen in diesem Artikel verschieben.
- Der Quellcluster muss über ein oder mehrere persistente Volumes verfügen, an die ein Azure-Datenträger angeschlossen ist.
- Sie müssen über einen AKS-Cluster im Zielabonnement verfügen.
Überprüfen des Datenträgervolumestatus
Es ist wichtig, das Risiko von Datenbeschädigungen, Inkonsistenzen oder Datenverlusten beim Arbeiten mit persistenten Volumes zu vermeiden. Um diese Risiken während des Migrations- oder Verschiebungsprozesses zu minimieren, müssen Sie zuerst sicherstellen, dass das Datenträgervolume nicht verbunden ist, indem Sie die folgenden Schritte ausführen.
Identifizieren Sie die Knotenressourcengruppe, die die von Azure verwalteten Datenträger mithilfe des
az aks showBefehls hostet, und fügen Sie den--query nodeResourceGroupParameter hinzu.az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsvDie Ausgabe des Befehls sieht in etwa wie im folgenden Beispiel aus:
MC_myResourceGroup_myAKSCluster_eastusListen Sie die verwalteten Datenträger mithilfe des Befehls
az disk listauf. Verweisen Sie auf die Ressourcengruppe, die im vorherigen Schritt zurückgegeben wurde.az disk list --resource-group MC_myResourceGroup_myAKSCluster_eastusÜberprüfen Sie die Liste und notieren Sie, welche Datenträgervolumes Sie in den anderen Cluster verschieben möchten. Überprüfen Sie auch den Datenträgerstatus, indem Sie nach der
diskState-Eigenschaft suchen. Die Ausgabe des Befehls ist ein komprimiertes Beispiel.{ "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",Hinweis
Notieren Sie sich den Wert des Felds
resourceGroupfür jeden Datenträger, den Sie aus der obigen Ausgabe verschieben möchten. Diese Ressourcengruppe ist die Knotenressourcengruppe, nicht die Clusterressourcengruppe. Sie benötigen den Namen dieser Ressourcengruppe, um die Datenträger zu verschieben.Wenn
diskStateAttachedanzeigt, bestimmen Sie zunächst, ob noch Workloads auf das Volume zugreifen, und stoppen Sie diese. Nach einem bestimmten Zeitraum gibt der Datenträgerstatus den StatusUnattachedzurück und kann dann verschoben werden.
Verschieben des persistenten Volumes
Um persistente Volumes in einen anderen AKS-Cluster zu verschieben, führen Sie die unter Verschieben von Azure-Ressourcen in eine neue Ressourcengruppe oder ein neues Abonnement beschriebenen Schritte aus. Sie können das Azure-Portal, Azure PowerShell oder die Azure CLI zum Durchführen der Migration verwenden.
Während dieses Prozesses verweisen Sie auf:
- Der Name oder die Ressourcen-ID der Ressourcengruppe des Quellknotens, die die von Azure verwalteten Datenträger hostet. Sie finden den Namen der Knotenressourcengruppe, indem Sie im Azure-Portal zum Dashboard Datenträger navigieren und die zugeordnete Ressourcengruppe für Ihren Datenträger notieren.
- Name oder Ressourcen-ID der Zielressourcengruppe, in die die verwalteten Datenträger verschoben werden sollen.
- Name oder Ressourcen-ID der verwalteten Datenträgerressourcen.
Hinweis
Aufgrund der Abhängigkeiten zwischen Ressourcenanbietern kann dieser Vorgang bis zu vier Stunden dauern.
Überprüfen, ob das Datenträgervolume verschoben wurde
Nachdem Sie das Datenträgervolume in die Zielclusterressourcengruppe verschoben haben, überprüfen Sie die Ressource in der Ressourcengruppenliste mithilfe des Befehls az disk list. Verweisen Sie auf die Zielressourcengruppe, in die die Ressourcen verschoben wurden. In diesem Beispiel wurden die Datenträger in eine Ressourcengruppe mit dem Namen MC_myResourceGroup_myAKSCluster_eastus verschoben.
az disk list --resource-group MC_myResourceGroup_myAKSCluster_eastus
Binden Sie den verschobenen Datenträger als Volume ein
Wenn Sie das verschobene Datenträgervolume einbinden möchten, erstellen Sie ein statisches persistentes Volume mit der Ressourcen-ID, die in den vorherigen Schritten kopiert wurde, mit den persistenten Volumeansprüchen und in diesem Beispiel mit einem einfachen Pod.
Erstellen Sie eine Datei pv-azuredisk.yaml mit einem persistenten Volume. Aktualisieren Sie das volumeHandle-Feld mit der Datenträgerressourcen-ID aus dem vorherigen Schritt.
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: ext4Erstellen Sie eine Datei pvc-azuredisk.yaml mit einem PersistentVolumeClaim-Objekt, das PersistentVolume verwendet.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-azuredisk spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi volumeName: pv-azuredisk storageClassName: managed-csiErstellen Sie PersistentVolume und PersistentVolumeClaim mithilfe des Befehls
kubectl apply. Verweisen Sie dabei auf die beiden erstellten YAML-Dateien.kubectl apply -f pv-azuredisk.yaml kubectl apply -f pvc-azuredisk.yamlVergewissern Sie sich, dass Ihr PersistentVolumeClaim erstellt und an den PersistentVolume gebunden ist, indem Sie den
kubectl getBefehl verwenden.kubectl get pvc pvc-azurediskDie Ausgabe des Befehls sieht in etwa wie im folgenden Beispiel aus:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE pvc-azuredisk Bound pv-azuredisk 20Gi RWO 5sErstellen Sie eine Datei azure-disk-pod.yaml, um auf PersistentVolumeClaim zu verweisen. Im Beispielmanifest ist der Name des Pods 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-azurediskWenden Sie die Konfiguration an, und binden Sie das Volume mithilfe des Befehls kubectl apply ein.
kubectl apply -f azure-disk-pod.yamlÜberprüfen Sie den Podstatus und die Daten, die mit dem Volume migriert wurden, das im Pod-Dateisystem auf
/mnt/azureeingebunden wurde. Rufen Sie zuerst den Pod-Status mithilfe des Befehlskubectl getab.kubectl get podsDie Ausgabe des Befehls sieht in etwa wie im folgenden Beispiel aus:
NAME READY STATUS RESTARTS AGE mypod 1/1 Running 0 4m1sÜberprüfen Sie die Daten im eingebundenen Volume
/mnt/azuremithilfe des Befehlskubectl exec.kubectl exec -it mypod -- ls -l /mnt/azure/Die Ausgabe des Befehls sieht in etwa wie im folgenden Beispiel aus:
total 28 -rw-r--r-- 1 root root 0 Jan 11 10:09 file-created-in-source-aks
Nächste Schritte
- Weitere Informationen zu datenträgerbasierten Speicherlösungen finden Sie unter Datenträgerbasierte Lösungen in AKS.
- Weitere Informationen zu bewährten Methoden bei der Speicherung finden Sie unter Best Practices für Speicherung und Sicherungen in Azure Kubernetes Service.