Azure Disk kalıcı birimlerini aynı veya farklı bir abonelikteki başka bir AKS kümesine taşıma

Bu makalede, Azure Disk kalıcı birimlerinin aynı abonelikte veya farklı bir abonelikte bir Azure Kubernetes Service (AKS) kümesinden diğerine güvenli bir şekilde nasıl taşındığı açıklanmaktadır. Hedef abonelik aynı bölgede olmalıdır.

Bu taşımayı tamamlama adımlarının sırası şunlardır:

  • Veri kaybını önlemek için kaynak AKS kümesindeki Azure Disk kaynak durumunun Bağlı durumda olmadığını onaylayın.
  • Azure Disk kaynağını aynı abonelikteki veya farklı bir abonelikteki hedef kaynak grubuna taşıyın.
  • Azure Disk kaynak taşıma işleminin başarılı olduğunu doğrulayın.
  • Kalıcı disk (PV) ve kalıcı disk talebi (PVC) oluşturun, ardından taşınan diski hedef kümedeki bir podule birim olarak bağlayın.

Başlamadan önce

  • Azure CLI sürüm 2.0.59 veya üzerinin yüklü ve yapılandırılmış olduğundan emin olun. Sürümü bulmak için az --version komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.
  • Kaynakları yeni bir kaynak grubuna veya aboneliğe taşıma bölümünde kaynakları farklı bölgeler arasında taşıma hakkındaki ayrıntıları ve gereksinimleri gözden geçirin. Bu makaledeki kaynakları taşımadan önce denetim listesini gözden geçirmeyi unutmayın.
  • Kaynak kümede Azure Disk'in bağlı olduğu bir veya daha fazla kalıcı birim olmalıdır.
  • Hedef abonelikte bir AKS kümeniz olmalıdır.

Disk birimi durumunu doğrulama

Kalıcı birimlerle çalışırken veri bozulması, tutarsızlıklar veya veri kaybı riskini önlemek önemlidir. Geçiş veya taşıma işlemi sırasında bu riskleri azaltmak için önce aşağıdaki adımları uygulayarak disk biriminin bağlı olmadığını doğrulamanız gerekir.

  1. komutunu kullanarak az aks show Azure yönetilen disklerini barındıran düğüm kaynak grubunu belirleyin ve parametresini --query nodeResourceGroup ekleyin.

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

    Komutun çıkışı aşağıdaki örneğe benzer:

    MC_myResourceGroup_myAKSCluster_eastus
    
  2. komutunu kullanarak yönetilen diskleri listeleyin az disk list . Önceki adımda döndürülen kaynak grubuna başvurun.

    az disk list --resource-group MC_myResourceGroup_myAKSCluster_eastus
    

    Listeyi gözden geçirin ve diğer kümeye taşımayı planladığınız disk birimlerini not edin. Ayrıca diskState özelliğini arayarak disk durumunu doğrulayın. Komutun çıktısı daraltılmış bir örnektir.

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

    Not

    Yukarıdaki çıktıdan taşımak istediğiniz her disk için alanın değerini resourceGroup not edin. Bu kaynak grubu küme kaynak grubu değil düğüm kaynak grubudur. Diskleri taşımak için bu kaynak grubunun adına ihtiyacınız olacaktır.

  3. diskState Attached gösterirse, önce herhangi bir iş yükünün birime erişmeye devam edip etmediğini belirleyin ve onları durdurun. Bir süre sonra disk durumu Unattached haline geri döner ve ardından taşınabilir hale gelir.

Kalıcı birimi taşıma

Kalıcı birimi veya birimleri başka bir AKS kümesine taşımak için Azure kaynaklarını yeni bir kaynak grubuna veya aboneliğe taşıma başlığı altında açıklanan adımları izleyin. Geçişi gerçekleştirmek için Azure portalını, Azure PowerShell'i veya Azure CLI'yi kullanabilirsiniz.

Bu işlem sırasında aşağıdakilere başvurursunuz:

  • Azure tarafından yönetilen diskleri barındıran kaynak düğümü kaynak grubunun adı veya kaynak kimliği. Azure portalında Diskler panosuna gidip diskiniz için ilişkili kaynak grubunu not ederek düğüm kaynak grubunun adını bulabilirsiniz.
  • Yönetilen disklerin taşınacak hedef kaynak grubunun adı veya kaynak kimliği.
  • Yönetilen disk kaynaklarının adı veya kaynak kimliği.

Not

Kaynak sağlayıcıları arasındaki bağımlılıklar nedeniyle bu işlemin tamamlanması dört saate kadar sürebilir.

Disk biriminin taşındığını doğrulayın

Disk birimini hedef küme kaynak grubuna taşıdıktan sonra komutunu kullanarak az disk list kaynak grubu listesindeki kaynağı doğrulayın. Kaynakların taşındığı hedef kaynak grubuna başvurun. Bu örnekte, diskler MC_myResourceGroup_myAKSCluster_eastus adlı bir kaynak grubuna taşındı.

  az disk list --resource-group MC_myResourceGroup_myAKSCluster_eastus

Taşınan diski birim olarak bağla

Taşınan disk birimini bağlamak için, önceki adımlarda kopyalanan kaynak kimliğini kullanarak statik bir kalıcı birim, kalıcı birim talebi ve bu örnekte basit bir pod oluşturun.

  1. Kalıcı bir birime sahip bir pv-azuredisk.yaml dosyası oluşturun. volumeHandle alanını önceki adımdaki disk kaynak kimliğiyle güncelleştirin.

    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. PersistentVolume kullanan bir PersistentVolumeClaim içeren pvc-azuredisk.yaml dosyası oluşturun.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-azuredisk
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 10Gi
      volumeName: pv-azuredisk
      storageClassName: managed-csi
    
  3. komutunu kullanarak PersistentVolume ve oluşturun ve oluşturduğunuz iki YAML dosyasına başvurun.

    kubectl apply -f pv-azuredisk.yaml
    kubectl apply -f pvc-azuredisk.yaml
    
  4. komutunu kullanarak PersistentVolumeClaim'inizin oluşturulduğunu ve PersistentVolume'a kubectl get bağlı olduğunu doğrulayın.

    kubectl get pvc pvc-azuredisk
    

    Komutun çıkışı aşağıdaki örneğe benzer:

    NAME            STATUS   VOLUME         CAPACITY    ACCESS MODES   STORAGECLASS   AGE
    pvc-azuredisk   Bound    pv-azuredisk   20Gi        RWO                           5s
    
  5. PersistentVolumeClaim'inize başvurmak için bir azure-disk-pod.yaml dosyası oluşturun. Örnek bildirimde podun adı mypod'dur.

    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. Kubectl apply komutunu kullanarak yapılandırmayı uygulayın ve birimi bağlayın .

    kubectl apply -f azure-disk-pod.yaml
    
  7. pod durumunu ve geçirilen verileri üzerindeki /mnt/azurepod dosya sisteminin içine bağlanmış birimle denetleyin. Öncelikle, kubectl get komutunu kullanarak pod durumunu alın.

    kubectl get pods
    

    Komutun çıkışı aşağıdaki örneğe benzer:

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

    komutunu kullanarak /mnt/azure bağlı birimin kubectl exec içindeki verileri doğrulayın.

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

    Komutun çıkışı aşağıdaki örneğe benzer:

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

Sonraki adımlar

  • Disk tabanlı depolama çözümleri hakkında daha fazla bilgi için bkz . AKS'de disk tabanlı çözümler.
  • Depolamanın en iyi yöntemleri hakkında daha fazla bilgi için bkz . Azure Kubernetes Service'te depolama ve yedekleme için en iyi yöntemler.