Tüm Ürünler
Search
Belge Merkezi

Container Service for Kubernetes:Use regional ESSDs for cross-zone disaster recovery

Son Güncelleme:Oct 06, 2026

Bölgesel Enterprise SSD (ESSD) diskler, verileri aynı bölge içindeki birden fazla alanda otomatik ve eşzamanlı olarak çoğaltır. Bu sayede durum bilgisi tutan uygulamalarınız, bir alan arızalandığında herhangi bir kod değişikliği yapmadan çalışmaya devam eder. Bir düğüm veya tüm bir alan kullanılamaz hale geldiğinde Kubernetes etkilenen pod'ları başka bir alana yeniden planlar; pod'lar aynı birimi tekrar bağlar ve hemen çalışmaya devam eder.

Başlamadan önce

İlerlemeden önce aşağıdaki konuları inceleyin:

  • Disk overview — bölgesel ESSD'lere giriş

  • Limits — desteklenen bölgeler ve diğer kısıtlamalar

  • Elastic Block Storage billing — Kubernetes birimi olarak kullanıldığında bölgesel ESSD'ler disk kapasitesine göre kullandıkça öde modeliyle faturalandırılır

Bölgesel ESSD'lerin ne zaman kullanılacağı

Standart disk Bölgesel ESSD
Çoğaltma Tek alan Birden fazla alanda eşzamanlı
Alan arızası yönetimi — Pod otomatik olarak başka bir alana yeniden planlanır
Kod değişikliği gerekliliği — Yok
Faturalama modeli — Yalnızca kullandıkça öde (Kubernetes birimi olarak)

Durum bilgisi tutan uygulamanızın, manuel müdahale olmadan alan arızaları karşısında erişilebilir kalması gerektiğinde bölgesel ESSD kullanın.

Ön koşullar

Başlamadan önce şunlara sahip olduğunuzdan emin olun:

ACK'de bölgesel ESSD'leri kullanma

Adım 1: Düğüm desteğini onaylayın

Bölgesel ESSD'leri destekleyen tüm düğümleri listeleyin:

kubectl get node -lnode.csi.alibabacloud.com/disktype.cloud_regional_disk_auto=available

Alanlar arası yük devretmeyi doğrulamak için farklı alanlarda en az iki desteklenen düğüme ihtiyacınız vardır. Aşağıdaki adımlarda örnek olarak cn-beijing-i ve cn-beijing-l kullanılmıştır.

Adım 2: Bir StorageClass oluşturun

  1. sc-regional.yaml dosyasını oluşturun:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alibabacloud-disk-regional
    parameters:
      type: cloud_regional_disk_auto
    provisioner: diskplugin.csi.alibabacloud.com
    reclaimPolicy: Delete
    volumeBindingMode: WaitForFirstConsumer
    allowVolumeExpansion: true

    Temel parametreler:

    Parametre Değer Amaç
    type cloud_regional_disk_auto Verileri birden fazla alanda eşzamanlı olarak çoğaltan bir bölgesel ESSD sağlar
    volumeBindingMode WaitForFirstConsumer Birim oluşturmayı bir pod planlanana kadar erteler; böylece disk doğru alanda sağlanır. Bu ayar yapılmazsa disk yanlış alanda kilitlenebilir ve alanlar arası yük devretmeyi engelleyebilir
    reclaimPolicy Delete Kalıcı Birim Talebi (PVC) silindiğinde altta yatan diski siler
    allowVolumeExpansion true Disk kapasitesinin genişletilmesini etkinleştirir
  2. StorageClass'ı uygulayın:

    kubectl apply -f sc-regional.yaml

Adım 3: Durum bilgisi tutan bir uygulama dağıtın

  1. StorageClass'ı kullanan bir StatefulSet tanımlamak için disk-test.yaml dosyasını oluşturun:

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: disk-test
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            ports:
            - containerPort: 80
            volumeMounts:
            - name: pvc-disk
              mountPath: /data
      volumeClaimTemplates:
      - metadata:
          name: pvc-disk
        spec:
          accessModes: [ "ReadWriteOnce" ]
          storageClassName: alibabacloud-disk-regional
          resources:
            requests:
              storage: 20Gi
  2. Uygulamayı dağıtın:

    kubectl apply -f disk-test.yaml

    Pod planlandığında CSI sürücüsü 20 GiB'lik bir bölgesel ESSD sağlar, bir Kalıcı Birim (PV) oluşturur ve bunu pod'a bağlar. Disk ardından verileri birden fazla alanda eşzamanlı olarak çoğaltmaya başlar.

Adım 4: Uygulamanın çalıştığını doğrulayın

  1. PVC ve pod durumunu kontrol edin:

    kubectl get pvc pvc-disk-disk-test-0
    kubectl get pod disk-test-0

    Beklenen çıktı:

    NAME                   STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS                 VOLUMEATTRIBUTESCLASS   AGE
    pvc-disk-disk-test-0   Bound    d-2ze5xxxxxxxxxxxxxxxx   20Gi       RWO            alibabacloud-disk-regional   <unset>                 14m
    NAME          READY   STATUS    RESTARTS   AGE
    disk-test-0   1/1     Running   0          14m

    PVC bağlıdır ve pod çalışmaktadır; bu da bölgesel ESSD'nin başarıyla sağlandığını ve bağlandığını gösterir.

  2. Pod'un çalıştığı düğümü ve alanı belirleyin:

    kubectl get node $(kubectl get pod disk-test-0 -ojsonpath='{.spec.nodeName}') -Ltopology.kubernetes.io/zone

    Beklenen çıktı:

    NAME                       STATUS   ROLES    AGE     VERSION            ZONE
    cn-beijing.172.25.xxx.xx   Ready    <none>   6m32s   v1.32.1-aliyun.1   cn-beijing-i

    Pod cn-beijing-i alanına planlanmıştır.

Adım 5: Bir alan arızasını simüle edin ve alanlar arası yük devretmeyi doğrulayın

Uyarı

Bu işlem, hedef alanda çalışan tüm pod'ları etkiler. Üretim ortamında gerçekleştirmeyin.

  1. Bir alan arızasını simüle etmek için pod'un mevcut alanındaki tüm düğümlere taint uygulayın:

    kubectl taint node -ltopology.kubernetes.io/zone=cn-beijing-i testing=regional:NoExecute

    Kubernetes Controller Manager (KCM) taint'i algılar, pod'u etkilenen düğümlerden çıkarır ve başka bir alandaki bir düğüme yeniden planlar.

  2. Pod'un yeni durumunu ve konumunu kontrol edin:

    kubectl get pod disk-test-0
    kubectl get node $(kubectl get pod disk-test-0 -ojsonpath='{.spec.nodeName}') -Ltopology.kubernetes.io/zone

    Beklenen çıktı:

    NAME          READY   STATUS    RESTARTS   AGE
    disk-test-0   1/1     Running   0          20s
    NAME                       STATUS   ROLES    AGE   VERSION            ZONE
    cn-beijing.172.26.xxx.xx   Ready    <none>   32m   v1.32.1-aliyun.1   cn-beijing-l

    Pod artık cn-beijing-l alanında çalışmaktadır. Bölgesel ESSD otomatik olarak yeniden bağlanır ve veriler bozulmadan kalır; manuel senkronizasyon gerekmez.

Adım 6: Temizleme

  1. cn-beijing-i alanında normal planlamayı geri yüklemek için taint'i kaldırın:

    kubectl taint node -ltopology.kubernetes.io/zone=cn-beijing-i testing-
  2. Test kaynaklarını silin:

    kubectl delete sts disk-test
    kubectl delete pvc pvc-disk-disk-test-0