Tüm Ürünler
Search
Belge Merkezi

Container Service for Kubernetes:Use a statically provisioned cloud disk volume

Son Güncelleme:Oct 06, 2026

PV ve PVC'yi manuel olarak oluşturarak bir cloud diski statik olarak sağlanan birim şeklinde bir Pod'a bağlayabilirsiniz. Bu yöntem, veri paylaşımı gerektirmeyen ve yüksek disk G/Ç performansı ile düşük gecikme süresi isteyen iş yükleri için ideal olan kalıcı depolama sağlar.

Diskler aşağıdaki senaryolar için uygundur:

  • MySQL ve Redis gibi veri paylaşımı gerektirmeyen ve yüksek disk G/Ç aktarım hızı isteyen uygulamalar.

  • Yüksek hızlı günlük yazma işlemleri.

  • Pod yaşam döngüsünden bağımsız veri kalıcılığı.

İş akışı

image
  1. PV oluşturun
    Kimliğini, kapasitesini, erişim modunu ve alan uygunluğunu belirterek mevcut bir cloud diski kümenize kaydedin. Bu işlem, Pod'un doğru düğüme planlanmasını sağlar.

  2. PVC oluşturun
    Uygulamanız bir PVC aracılığıyla depolama kaynaklarını talep eder ve bu talep uyumlu bir PV ile eşleşir.

  3. PVC'yi uygulamanıza bağlayın
    Eşleştirilmiş PVC'yi uygulama Pod'unuza bağlayarak konteyner içinde kalıcı bir dizin olarak kullanılabilir hale getirin.

Ön koşullar

  • CSI bileşen gereksinimleri: csi-plugin ve csi-provisioner bileşenlerinin yüklü olması gerekir.

    CSI bileşenleri varsayılan olarak yüklüdür. Yüklü olduklarından emin olmak için Add-ons sayfasını kontrol edin. CSI bileşenlerini en son sürüme yükseltmenizi öneririz.
  • Cloud disk Available durumunda olmalı ve aşağıdaki gereksinimleri karşılamalıdır:

    • Kullanılabilirlik alanı sınırlamaları: ESSD bölge yedekli cloud diskler hariç, diğer cloud disk türleri yalnızca aynı kullanılabilirlik alanındaki pod'lara bağlanabilir.

    • Örnek türü ailesi sınırlamaları: Bazı cloud disk türleri yalnızca belirli örnek türü ailelerine bağlanabilir.

  • Sanal düğüm sınırlamaları: Sanal düğümde cloud disk kullanmak için kümenizin ve kube-scheduler'ınızın aşağıdaki sürüm gereksinimlerini karşılaması gerekir.

    Sürüm gereksinimleri


    Küme sürümü


    Kube-scheduler sürümü


    1,28 veya sonrası


    6.9.3 veya sonrası


    1,26


    6.8.7


    1,24


    6.4.7


    1,22


    6.4.5

  • Lingjun düğümü sınırlamaları: Lingjun düğümlerinde cloud disk kullanmak için aşağıdaki gereksinimlerin karşılanması gerekir.

    Ayrıntılar

Adım 1: PV oluşturun

Mevcut bir cloud diski kümede kullanılabilir bir depolama kaynağı olarak tanımlamak için bir PV oluşturun.

kubectl

  1. Aşağıdaki içeriğe sahip disk-pv.yaml adlı bir dosya oluşturun.

    Disk kimliğini, disk boyutunu, alan kimliğini ve disk kategorisini edinin ve YAML dosyasındaki değişkenleri gerçek değerlerle değiştirin.
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      # The ID of your existing cloud disk, such as d-uf628m33r5rsbi******
      name: "<YOUR-DISK-ID>"
      annotations:
        # Recommended. Ensures the Pod is scheduled to a node that supports this disk type.
        # <YOUR-DISK-CATEGORY> is the category of your existing cloud disk. Supported values include cloud_essd_entry, cloud_auto, cloud_essd, cloud_ssd, cloud_efficiency, and cloud_regional_disk_auto.
        csi.alibabacloud.com/volume-topology: '{"nodeSelectorTerms":[{"matchExpressions":[{"key":"node.csi.alibabacloud.com/disktype.<YOUR-DISK-CATEGORY>","operator":"In","values":["available"]}]}]}'
    spec:
      capacity:
        # The size of your existing cloud disk, such as 20Gi.
        storage: "<YOUR-DISK-SIZE>"
      claimRef:
        apiVersion: v1
        kind: PersistentVolumeClaim
        namespace: default
        name: disk-pvc
      accessModes:
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: diskplugin.csi.alibabacloud.com
        # The ID of your existing cloud disk, such as d-uf628m33r5rsbi******
        volumeHandle: "<YOUR-DISK-ID>"
      nodeAffinity:
        required:
          nodeSelectorTerms:
          - matchExpressions:
            - key: topology.diskplugin.csi.alibabacloud.com/zone
              operator: In
              values:
              # The zone where the cloud disk is located, such as cn-shanghai-f.
              - "<YOUR-DISK-ZONE-ID>"
      storageClassName: alicloud-disk-topology-alltype
      volumeMode: Filesystem

    Aşağıdaki tabloda anahtar parametreler açıklanmaktadır.

    Parametre

    Açıklama

    csi.alibabacloud.com/volume-topology

    Bu ek açıklama, cloud disk için düğüm uygunluğu ayarlar ve bu diski kullanan Pod'ların ilgili disk türünü destekleyen düğümlere planlanmasını sağlar. Bu sayede düğüm uyumsuzluğundan kaynaklanan bağlama hataları önlenir.

    Doğru planlamayı sağlamak için disk kategorisini belirtmenizi öneririz. Desteklenen türler aşağıdaki gibidir:

    • ESSD Entry disk: cloud_essd_entry

    • ESSD AutoPL disk: cloud_auto

    • ESSD disk: cloud_essd

    • Standart SSD: cloud_ssd

    • Ultra disk: cloud_efficiency

    • Bölge yedekli disk: cloud_regional_disk_auto (nodeAffinity parametresinde ayarlama gerektirir)

    claimRef

    Bu PV ile eşleşebilecek PVC'yi belirtir. Herhangi bir PVC'nin bu PV ile eşleşmesine izin vermek için bu parametreyi kaldırın.

    accessModes

    Erişim modu. Desteklenen mod, cloud diskler için çoklu ekleme özelliğinin etkin olup olmadığına bağlıdır.

    • Çoklu ekleme devre dışı: Yalnızca ReadWriteOnce (RWO) desteklenir. Cloud disk tek bir düğüme okuma/yazma modunda bağlanabilir.

    • Çoklu ekleme etkin:

      • Standart dosya sistemi olarak (biçimlendirilmiş): ReadWriteOnce (RWO) ve ReadOnlyMany (ROX) desteklenir.

        ext4 gibi dosya sistemlerine birden fazla düğümden eşzamanlı yazılmasının neden olduğu veri bozulmasını önlemek amacıyla ReadWriteMany (RWX) modu desteklenmez.
      • Ham blok cihazı olarak (biçimlendirilmemiş): ReadWriteOnce (RWO), ReadOnlyMany (ROX) ve ReadWriteMany (RWX) desteklenir.

    persistentVolumeReclaimPolicy

    PV'nin geri kazanma ilkesi; eşleştirilmiş PVC silindiğinde PV'nin ve alttaki cloud diskin başına geleceğini belirler.

    • Delete: PVC silindiğinde hem PV hem de cloud disk silinir. Bu ayarı dikkatli kullanın.

      Verilerin yanlışlıkla kaybolmasını önlemek için silme işleminden önce cloud diski yedeklemek üzere otomatik anlık görüntü ilkesi oluşturabilirsiniz.
    • Retain: PVC silindiğinde PV ve cloud disk silinmez. Bunları manuel olarak serbest bırakmanız gerekir.

    driver

    Alibaba Cloud disklerini kullanırken diskplugin.csi.alibabacloud.com olarak ayarlayın.

    nodeAffinity

    Düğüm uygunluğu ayarları. ESSD bölge yedekli diskler hariç, diğer cloud disk türleri yalnızca aynı alandaki Pod'lara bağlanabilir. Bu yapılandırma, Pod'ların cloud disk ile aynı alandaki ECS düğümlerine planlanmasını sağlar.

    Bölge yedekli diskler için diskin bölgedeki herhangi bir alana bağlanmasına izin vermek üzere yapılandırmayı aşağıdaki şekilde değiştirin.

    Bu yapılandırmada <YOUR-DISK-REGION-ID>, cloud diskin bulunduğu bölgedir (örneğin cn-shanghai).
    nodeAffinity:
          required:
            nodeSelectorTerms:
            - matchExpressions:
              - key: topology.kubernetes.io/region
                operator: In
                values:
                - "<YOUR-DISK-REGION-ID>"

    storageClassName

    Bu ayarın statik olarak sağlanan birimler üzerinde etkisi yoktur ve karşılık gelen bir StorageClass oluşturmanız gerekmez. Ancak, bu ayarın değerinin hem PV hem de PVC'de aynı olduğundan emin olmalısınız.

  2. PV'yi oluşturun.

    kubectl create -f disk-pv.yaml
  3. PV'nin durumunu kontrol edin ve Available olduğundan emin olun.

    kubectl get pv

    Beklenen çıktı:

    NAME                     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM              STORAGECLASS                             VOLUMEATTRIBUTESCLASS   REASON   AGE
    d-uf628m33r5rsbi******   20Gi       RWO            Retain           Available   default/disk-pvc   alicloud-disk-topology-alltype           <unset>                          1m36s

Console

  1. ACK Clusters sayfasında kümenizin adına tıklayın. Sol gezinme bölmesinde Volumes > Persistent Volumes seçeneğine tıklayın.

  2. Persistent Volumes sayfasında Create öğesine tıklayın, PV Type değerini Cloud Disk olarak ayarlayın ve PV parametrelerini istemlerde belirtilen şekilde yapılandırın.


    Parametre


    Açıklama


    Access Mode


    Yalnızca ReadWriteOnce desteklenir.


    Disk ID:


    Select Disk seçeneğine tıklayın ve düğümle aynı bölge ve alanda bulunan monte edilmemiş bir cloud disk seçin.


    File System Type:


    Cloud diskte verileri depolamak için dosya sistemi türünü seçin. Desteklenen File System Type: değerleri arasında ext4, ext3, xfs ve vfat bulunur.

Adım 2: PVC oluşturun

Önceki adımda oluşturduğunuz PV ile eşleşmek üzere bir PVC oluşturun.

kubectl

  1. Aşağıdaki içeriğe sahip disk-pvc.yaml adlı bir dosya oluşturun.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: disk-pvc
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          # The requested storage capacity, which must match the PV capacity.
          storage: "<YOUR-DISK-SIZE>"
      # Must match the storageClassName defined in the PV.
      storageClassName: alicloud-disk-topology-alltype
      # Specify the PV to bind to.
      volumeName: "<YOUR-DISK-ID>"

    Aşağıdaki tabloda anahtar parametreler açıklanmaktadır.

    Parametre

    Açıklama

    accessModes

    Erişim modu. PV yapılandırmasıyla tutarlı olmalıdır.

    storage

    Pod'a ayrılan depolama kapasitesi. PV kapasitesiyle tutarlı olmalıdır.

    storageClassName

    Bu ayarın statik olarak sağlanan birimler üzerinde etkisi yoktur ve karşılık gelen bir StorageClass oluşturmanız gerekmez. Ancak, bu ayarın değerinin hem PV hem de PVC'de aynı olduğundan emin olmalısınız.

    volumeName

    Eşleştirilecek PV'yi belirtir. PVC'nin eşleşen herhangi bir PV ile eşleşmesine izin vermek için bu parametreyi kaldırın.

  2. PVC'yi oluşturun.

    kubectl create -f disk-pvc.yaml
  3. PVC'nin durumunu kontrol edin ve Bound olduğundan emin olun.

    kubectl get pvc

    Beklenen çıktı; PVC'nin cloud disk PV'sine bağlandığını gösterir:

    NAME                       STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                     VOLUMEATTRIBUTESCLASS   AGE
    disk-pvc                   Bound    d-bp1ff1mn65jk8s******                     20Gi       RWO            alicloud-disk-topology-alltype   <unset>                 6s

Console

  1. Küme yönetimi sayfasının sol gezinme bölmesinde Storage > PVCs seçeneğini belirleyin.

  2. Persistent Volume Claims sayfasında Create seçeneğine tıklayın, PVC Type değerini Disk olarak ayarlayın ve istemlere göre bir PVC oluşturun.


    Parametre


    Açıklama


    Allocation Mode


    Existing Volumes seçeneğini belirleyin.


    Existing Volumes


    Daha önce oluşturduğunuz PV'yi seçin.


    Capacity


    Pod'a ayrılan depolama kapasitesi; cloud disk kapasitesini aşamaz.

Adım 3: Bir uygulama oluşturun ve cloud diski bağlayın

PVC'yi bağlayarak cloud diski kullanacak bir iş yükü oluşturun.

Önemli

Cloud Disk paylaşılmayan depolama sağlar ve çoklu ekleme etkinleştirilmedikçe aynı anda yalnızca bir Pod'a bağlanabilir. Çok çoğaltmalı bir Dağıtımda (Deployment) bir PVC'yi paylaşmak, Cloud Disk başka bir Pod tarafından zaten kullanılıyorsa yeni Pod'ların başlamasını engelleyebilir.

Bir Dağıtımla (Deployment) birlikte Cloud Disk kullanmanız gerekiyorsa Cloud Disk'i geçici birim olarak kullanmayı değerlendirin. Çoklu eklemeyi etkinleştirmek için bkz. Çoklu ekleme ve rezervasyon özellikli NVMe tabanlı Cloud Diskleri kullanma.

kubectl

  1. Aşağıdaki içeriğe sahip disk-test.yaml adlı bir dosya oluşturun.

    Aşağıdaki örnekte bir çoğaltmaya sahip bir StatefulSet oluşturulur. Pod, disk-pvc adlı bir PVC aracılığıyla depolama kaynaklarını talep eder ve birimi /data yoluna bağlar.
    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
          volumes:
            - name: pvc-disk
              persistentVolumeClaim:
                claimName: disk-pvc
    Önemli
    • securityContext.fsgroup yapılandırırken kubelet, birimi bağlarken dosya izinlerini yinelemeli olarak değiştirir (chmod/chown). Bu durum, çok sayıda dosya içeren birimlerde bağlama süresini önemli ölçüde artırabilir.

      1,20 veya sonraki sürümlere sahip kümeler için fsGroupChangePolicy değerini OnRootMismatch olarak ayarlamanızı öneririz. Bu ayar, yinelemeli izin değişikliğini yalnızca birim ilk kez bağlandığında ve kök dizin izinleri eşleşmediğinde gerçekleştirerek bağlama performansını optimize eder. Performans sorunları devam ederse veya daha ayrıntılı izin denetimi gerekirse uygulama konteyneri başlamadan önce izinleri yönetmek için bir initContainer kullanın.

    • Bir Pod yeniden oluşturulduğunda orijinal cloud diski tekrar bağlar. Diğer kısıtlamalar Pod'un orijinal alana planlanmasını engellerse cloud diski bağlayamadığı için Beklemede (Pending) durumunda kalır.

  2. StatefulSet'i oluşturun ve cloud diski bağlayın.

    kubectl create -f disk-test.yaml
  3. Pod'un durumunu kontrol edin ve Running olduğundan emin olun.

    kubectl get pod -l app=nginx

    Beklenen çıktı:

    NAME          READY   STATUS    RESTARTS   AGE
    disk-test-0   1/1     Running   0          14s
  4. Cloud diskin bağlandığını onaylamak için bağlama yolunu kontrol edin.

    kubectl exec disk-test-0 -- df -h /data

    Beklenen çıktı:

    Filesystem      Size  Used Avail Use% Mounted on
    /dev/vdb         20G   24K   20G   1% /data

Console

  1. Küme yönetimi sayfasının sol gezinme bölmesinde Workload > StatefulSets seçeneğini belirleyin.

  2. StatefulSets sayfasında Create from Image seçeneğine tıklayın ve StatefulSet parametrelerini yapılandırmak için sayfadaki istemleri izleyin.

    Aşağıdaki tabloda ana yapılandırma öğeleri açıklanmaktadır. Ayrıntılı yapılandırma talimatları için bkz. StatefulSet oluşturma.

    Yapılandırma sayfası

    Parametre

    Açıklama

    Basic Information

    Replicas:

    StatefulSet için çoğaltma sayısını yapılandırın.

    Container

    Image Name

    Uygulamayı dağıtmak için kullanılan görüntünün adresini girin (örneğin anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6).

    Required Resources

    Gerekli vCPU, bellek ve geçici depolama kaynaklarını ayarlayın.

    Bu örnekte CPU 0,25 Çekirdek, bellek ise 512 MiB olarak ayarlanmıştır.

    Volume

    Add PVC seçeneğine tıklayın, ardından parametreleri yapılandırın.

    • Mount Source: Daha önce oluşturduğunuz PVC'yi seçin.

    • Container Path: Cloud diskin bağlanacağı konteynerdeki yolu girin (örneğin /data).

  3. Uygulamanın dağıtım durumunu kontrol edin.

    1. StatefulSets sayfasında uygulamanın adına tıklayın.

    2. Pods sekmesinde Pod'un Çalışıyor (Running) durumunda olduğundan emin olun.

Veri kalıcılığını doğrulayın

"veri yaz > Pod'u sil > veriyi kontrol et" sürecini izleyerek Pod yeniden oluşturulduktan sonra cloud diskte depolanan verilerin korunduğunu doğrulayın.

  1. Pod'a test verileri yazın.

    1. Cloud diskteki verileri görüntülemek için bağlama yolunu kontrol edin.

      kubectl exec disk-test-0 -- ls /data

      Beklenen çıktı:

      lost+found
    2. Pod'a test verileri yazın.

      disk-test-0 Pod'unu örnek alalım. Cloud diskin bağlama yolu olan /data dizininde bir test dosyası oluşturun.

      kubectl exec disk-test-0 -- touch /data/test
  2. Pod'u silerek bir Pod hatasını simüle edin.

    kubectl delete pod disk-test-0

    kubectl get pod -l app=nginx komutunu tekrar çalıştırın. Aynı ada sahip bir Pod otomatik olarak oluşturulur.

  3. Yeni Pod'daki verileri doğrulayın.

    Yeni disk-test-0 Pod'undaki /data dizinini tekrar kontrol edin.

    kubectl exec disk-test-0 -- ls /data

    Beklenen çıktıda daha önce oluşturulan test dosyası hala mevcuttur; bu durum, Pod silinip yeniden oluşturulduktan sonra bile verilerin korunduğunu gösterir.

    lost+found  
    test

Üretim ortamı hususları

  • Yüksek kullanılabilirlik

    • Pod planlama ilkesi

      Pod'un başarılı bir şekilde planlanmasını ve yeniden oluşturulduktan sonra cloud diskin tekrar bağlanabilmesini sağlamak için PV'de nodeAffinity ve csi.alibabacloud.com/volume-topology ayarlarını doğru şekilde yapılandırın.

    • Cloud disk seçimi

      Pod'larınızın uyumlu düğümlere planlanmasını sağlamak için performans, faturalama, kullanılabilirlik alanları ve örnek türü aileleri gibi faktörleri değerlendirin.

      Bir cloud disk türü seçerken SSD cloud disklerin ve Ultra cloud disklerin kullanımından kademeli olarak vazgeçildiğini unutmayın. Ultra cloud disklerin yerine ESSD PL0 cloud diskleri veya ESSD Entry cloud diskleri, SSD cloud disklerin yerine ise ESSD AutoPL cloud diskleri kullanmanızı öneririz.

    • Alanlar arası olağanüstü durum kurtarma

      • Uygulama düzeyinde olağanüstü durum kurtarma: Veritabanları gibi kritik iş yükleri için uygulama örneklerini birden fazla kullanılabilirlik alanına dağıtın ve yüksek kullanılabilirlik için uygulamanın yerel veri senkronizasyon mekanizmasını kullanın.

      • Depolama düzeyinde olağanüstü durum kurtarma: Çok AZ'li olağanüstü durum kurtarmayı destekleyen bir cloud disk türü seçin. Bu özellik, verileri aynı bölgedeki farklı kullanılabilirlik alanlarına eşzamanlı olarak yazar ve alanlar arası yük devretmeyi etkinleştirir. Daha fazla bilgi için bkz. ESSD Eş Konumlu Yedekli Diskleri Kullanma.

  • Veri güvenliği

    • Düzenli yedeklemeler: Veri yedekleme ve kurtarma amacıyla cloud diskleriniz için anlık görüntüler oluşturmak üzere bir otomatik anlık görüntü ilkesi kullanın.

  • Performans ve maliyet optimizasyonu

Kaynakları temizleyin

Beklenmeyen ücretlerden kaçınmak ve veri güvenliğini sağlamak için kullanılmayan kaynakları serbest bırakmak üzere bu süreci izleyin.

  1. İş yükünü silin

    • Eylem: İlgili PVC'yi kullanan tüm uygulamaları (Dağıtımlar ve StatefulSet'ler gibi) silin. Bu işlem çalışan Pod'ları durdurur ve birimlerin bağlantısını keser.

      Örnek komut: kubectl delete deployment <YOUR-DEPLOYMENT-NAME>

  2. PVC'yi silin

    • Eylem: Uygulama ile ilişkili PVC'yi silin. Silme işleminden sonra eşleştirilmiş PV'nin başına gelenler persistentVolumeReclaimPolicy değerine bağlıdır.

    • Geri kazanma ilkesi ayrıntıları:

      • Retain: PVC silindikten sonra eşleştirilmiş PV'nin durumu Released olarak değişir ancak PV nesnesi ve arka uç cloud disk korunur. Cloud diske ve üzerindeki tüm verilere artık ihtiyaç duymadığınızı teyit ederseniz diski silmek için bkz. Cloud disk serbest bırakma. Bu işlem geri alınamaz, bu nedenle dikkatli ilerleyin.

      • Delete: PVC silindikten sonra hem PV nesnesi hem de arka uç cloud disk silinir. Cloud diskteki veriler kalıcı olarak kaybolur ve kurtarılamaz. Bu ilkeyi dikkatli kullanın.

        Verilerin yanlışlıkla kaybolmasını önlemek için silme işleminden önce cloud diski yedeklemek üzere otomatik anlık görüntü ilkesi oluşturabilirsiniz.
    • Örnek komut: kubectl delete pvc <YOUR-PVC-NAME>

  3. PV nesnesini silin: Bu işlem yalnızca kaynak tanımını kümeden kaldırır ve arka uç cloud diski silmez.

    • Eylem: Released durumunda olan PV'yi manuel olarak silin.

    • Örnek komut: kubectl delete pv <YOUR-PV-NAME>

İlgili belgeler