Tüm Ürünler
Search
Belge Merkezi

Container Service for Kubernetes:Use NAS dynamic volumes

Son Güncelleme:Oct 06, 2026

File Storage NAS için dinamik hazırlama özelliği sayesinde, iş yükleri için depolamayı talep üzerine otomatik olarak sağlayabilir ve PV'leri önceden oluşturma ihtiyacını ortadan kaldırabilirsiniz. Bu özellik veri kalıcılığı ve paylaşımı sunar; birden fazla Pod'un aynı anda okuma ve yazma işlemi yapmasına olanak tanır. Web uygulamaları ve günlük saklama gibi kullanım senaryolarında depolama yönetimini basitleştirir.

Çalışma şekli

Dinamik birimlerle, bir uygulama PVC oluşturduğunda sistem talebe bağlı olarak yeni bir depolama birimi ve buna karşılık gelen bir PV'yi otomatik olarak oluşturur. Bu hazırlama işlemi, PVC'de belirtilen StorageClass tarafından belirlenir. Bu mod daha fazla esneklik sunar ve depolama biriminin otomatik olarak genişletilmesini destekler.

Bağlama modu

StorageClass içindeki volumeAs parametresiyle bağlama modunu belirtebilirsiniz. Bu parametre, bir PV ile NAS dosya sistemi arasındaki ilişkiyi tanımlar.

Bağlama modu

Açıklama

Senaryo

subpath

Subpath modunda, her PV bir NAS dosya sistemi içindeki benzersiz bir alt dizine eşlenir. Bu mod veri yalıtımını kolaylaştırır.

  • Birden fazla Pod, bir NAS dosya sisteminin aynı alt dizinini bağlar.

  • Veri yalıtımı sağlamak amacıyla birden fazla Pod, aynı NAS dosya sisteminin farklı alt dizinlerini bağlar.

sharepath

Sharepath modunda, tüm PV'ler StorageClass'ta tanımlanan aynı NAS dizinine eşlenir. Dolayısıyla, bu StorageClass'ı kullanan tüm PVC'ler aynı paylaşılan dizine erişir.

Farklı ad alanlarındaki birden fazla Pod'un aynı NAS alt dizinini bağlaması gerekir.

filesystem (Önerilmez)

Dosya sistemi modunda, her PV için yeni, özel bir NAS dosya sistemi örneği dinamik olarak oluşturulur.

Bu mod, performans ve güvenlik açısından katı yalıtım gerektiren uygulamalar için uygundur. Her uygulama için bağımsız NAS dosya sistemlerinin ve bağlama hedeflerinin dinamik olarak oluşturulmasını ve silinmesini sağlar ancak daha yüksek maliyete neden olur.

İş akışı

NAS dinamik birimini bağlama iş akışı aşağıdaki gibidir.

image
  1. StorageClass oluşturun: Bir depolama şablonu tanımlayın, NAS bağlama hedefini belirtin ve iş gereksinimlerinize göre bir bağlama modu (subpath veya sharepath gibi) seçin.

  2. PVC oluşturun: Bir uygulama, depolama kaynaklarını talep etmek için PVC kullanır. Sistem, belirtilen StorageClass'a göre otomatik olarak bir PV oluşturur ve bunu PVC'ye bağlar.

  3. Birim uygulamanıza bağlayın: Bağlanan PVC'yi bir uygulama Pod'una bağlayın. Birim, konteyner içinde kalıcı bir dizin olarak kullanılabilir hale gelir.

Ön koşullar

  • csi-plugin ve csi-provisioner bileşenleri yüklüdür.

    CSI bileşenleri varsayılan olarak yüklenir. Yüklü kaldıklarını doğrulayın. Yükleme durumunu Add-ons sayfasında kontrol edebilirsiniz. CSI bileşenlerini en son sürüme yükseltmenizi öneririz.
  • Subpath ve sharepath kullanmak için aşağıdaki gereksinimleri karşılayan bir Apsara File Storage NAS dosya sistemine ihtiyacınız vardır. Aksi takdirde bir dosya sistemi oluşturun.

    NAS'in bağlama bağlantısı, dosya sistemi sayısı ve protokol türleri konusunda sınırlamaları bulunmaktadır.
    • Protocol: Yalnızca NFS desteklenir.

    • VPC: Apsara File Storage NAS dosya sistemi, kümenizle aynı VPC'de olmalıdır. Apsara File Storage NAS, alanlar arası bağlamayı destekler ancak VPC'ler arası bağlamayı desteklemez.

    • Mount Target: Kümenizle aynı VPC'de bulunan ve etkin durumda olan bir bağlama hedefi ekleyin. Daha fazla bilgi için bkz. Bağlama hedeflerini yönetme. Bağlama hedefi adresini not edin.

    • (İsteğe bağlı) Encryption Type: Bir birimdeki verileri şifrelemek için Apsara File Storage NAS dosya sistemini oluştururken şifreleme türünü yapılandırın.

Kullanım notları

  • Bağlama hedeflerini silmeyin: Düğüm G/Ç hatalarını önlemek için, ilgili birim kullanımda iken NAS konsolunda bir bağlama hedefini silmeyin.

  • Eş zamanlı yazma işlemleri: NAS paylaşılan depolama sağlar. Birden fazla Pod aynı birimi bağladığında, uygulamanız eş zamanlı yazmalardan kaynaklanan potansiyel veri tutarlılığı sorunlarını ele almalıdır.

    NAS'e eş zamanlı yazma işlemlerine ilişkin sınırlamalar hakkında daha fazla bilgi için bkz. Aynı günlük dosyasına birden fazla işlem yazma ve ECS örneklerinde güncellenmiş dosya içeriğini okumada gecikme süresi .
  • Bağlama performansı: Uygulamanızda securityContext.fsgroup parametresini yapılandırırsanız, kubelet birim bağlandıktan sonra yinelemeli olarak chmod veya chown çalıştırır ve bu durum Pod başlatma süresini önemli ölçüde artırır.

    Bağlama performansını optimize etmek için bkz. NAS birimi SSS .

Yöntem 1: Subpath kullanarak bir birim bağlama

Bu yöntemde, CSI sağlayıcısı her PersistentVolumeClaim (PVC) için NAS dosya sisteminde özel bir subpath otomatik olarak oluşturur. Bu subpath, PersistentVolume (PV) olarak işlev görür.

1. StorageClass oluşturun

StorageClass, dinamik birimleri hazırlamak için bir şablon görevi görür ve depolama kaynaklarının kaynağını ve davranışını tanımlar.

kubectl

  1. Aşağıdaki içerikle alicloud-nas-subpath.yaml adlı bir dosya oluşturun:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      # The name of the StorageClass, which must be unique within the cluster.
      name: alicloud-nas-subpath  
    mountOptions:
    - nolock,tcp,noresvport
    - vers=3
    parameters:
      # Set to subpath.
      volumeAs: subpath
      # The format of the server field is <nas-server-address>:/<path>.
      server: "0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com:/k8s"
      archiveOnDelete: "true"
    provisioner: nasplugin.csi.alibabacloud.com
    reclaimPolicy: Retain
    allowVolumeExpansion: true

    Parametre

    Açıklama

    mountOptions

    NFS protokol sürümü dahil olmak üzere NAS için bağlama seçenekleri. Varsayılan olarak birimler NFSv3 kullanılarak bağlanır. vers=4.0 gibi bir seçenekle farklı bir sürüm belirtebilirsiniz. Farklı NAS türleri tarafından desteklenen NFS protokolleri hakkında bilgi için bkz. NFS protokolleri.

    parameters.volumeAs

    Birim hazırlama modu. subpath olarak ayarlayın.

    parameters.server

    NAS bağlama hedefi ve bağlanacak subpath, <nas-server-address>:/<path> biçimindedir.

    • <nas-server-address>: NAS dosya sisteminin bağlama hedefi. Daha fazla bilgi için bkz. Bağlama hedeflerini yönetme.

    • :/<path>: Bağlanacak NAS subpath'i. Bu parametre ayarlanmazsa veya belirtilen subpath mevcut değilse, varsayılan olarak kök dizin bağlanır.

      • Genel amaçlı NAS: Kök dizin / şeklindedir.

      • Extreme NAS: Kök dizin /share şeklindedir. Bir subpath bağlarken path değeri /share ile başlamalıdır, örneğin /share/data.

    parameters.archiveOnDelete

    Bir PVC silindiğinde ve reclaimPolicy değeri Delete olarak ayarlandığında, arka uç depolamadaki verilerin silinip silinmeyeceğini belirtir.

    Bu seçenek, paylaşılan NAS depolamasında yanlışlıkla veri kaybını önlemek için bir koruma önlemi olarak işlev görür.
    • true (varsayılan): Dizin ve dosyaları silinmez. Bunun yerine, archived-{pvName}.{timestamp} biçiminde arşivlenir ve yeniden adlandırılır.

    • false: İlgili dizin ve verileri kalıcı olarak silinir.

      Bu işlem, NAS dosya sisteminin kendisini değil, NAS subpath'ini ve dosyalarını siler.

      Bir NAS dosya sistemini silmek için bkz. Dosya sistemi silme.

    PV'lerin sıkça oluşturulup silindiği senaryolarda, bu parametrenin false olarak ayarlanması CSI denetleyicisinin görev kuyruğunun tıkanmasına ve yeni PV'lerin oluşturulamamasına neden olabilir. Daha fazla bilgi için bkz. Dinamik NAS birimi kullanırken denetleyicinin görev kuyruğu dolu olduğundan yeni PV'ler oluşturulamıyor.

    provisioner

    Sürücü. Alibaba Cloud NAS CSI eklentisini kullanırken bu parametreyi nasplugin.csi.alibabacloud.com olarak ayarlayın.

    reclaimPolicy

    PV'nin geri alma ilkesi.

    • Delete (varsayılan): PVC silindiğinde, arka uç depolama verileri archiveOnDelete ayarına göre işlenir.

    • Retain: PVC silindiğinde, PV ve NAS dosya sistemindeki veriler silinmez ve manuel olarak silinmesi gerekir. Yanlışlıkla veri kaybını önlemek amacıyla yüksek veri güvenliği gerektiren senaryolar için bu ilke önerilir.

    allowVolumeExpansion

    Yalnızca Genel amaçlı NAS tarafından desteklenir.

    PVC kapasitesini değiştirerek bu StorageClass tarafından oluşturulan PV'lerin dinamik olarak genişletilmesine olanak tanır.

    Bu StorageClass, PV kapasitesini yönetmek ve hassas boyut kontrolü sağlamak için NAS dizin kotası özelliğini kullanır. PVC'nin spec.resources.requests.storage alanını düzenleyerek birimi çevrimiçi olarak genişletebilirsiniz. Daha fazla bilgi için bkz. Dinamik NAS birimleri için dizin kotaları ayarlama.

    NAS dizin kotaları eşzamansız olarak uygulanır. Bir PV oluşturulduktan veya genişletildikten hemen sonra yüksek hızlı, büyük hacimli veri yazma işlemleri gerçekleştirirseniz, kota henüz tam olarak uygulanmadığından belirtilen kapasiteyi aşabilirsiniz. Daha fazla bilgi için bkz. Kullanım sınırlamaları.
  2. StorageClass'ı oluşturun.

    kubectl create -f alicloud-nas-subpath.yaml

Console

  1. ACK konsolu oturumunu açın. Sol gezinme bölmesinde Clusters öğesine tıklayın.

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

  3. Create öğesine tıklayın, küme içinde benzersiz bir StorageClass adı belirtin, PV Type olarak NAS'i seçin ve ardından ekrandaki talimatları izleyerek StorageClass'ı oluşturun.

    Anahtar parametreler aşağıdaki tabloda açıklanmıştır.

    Parametre

    Açıklama

    Select Mount Target

    NAS dosya sisteminin bağlama hedefi.

    Volume Mode

    Birim hazırlama modu. Subdirectory seçeneğini belirleyin. Belirtilen bağlama yolu altında otomatik olarak bir subpath oluşturulur. Veriler <NAS mount target>:<mount path>/<pv-name>/ konumunda depolanır.

    Mount Path

    Bağlanacak NAS alt dizini. Bu parametre belirtilmezse, varsayılan olarak kök dizin bağlanır.

    Dizin NAS dosya sisteminde mevcut değilse, otomatik olarak oluşturulur ve ardından bağlanır.
    • Genel amaçlı NAS: Kök dizin / şeklindedir.

    • Extreme NAS: Kök dizin /share şeklindedir. Bir alt dizin bağlarken path değeri /share ile başlamalıdır, örneğin /share/data.

    Reclaim Policy

    PV'nin geri alma ilkesi.

    • Delete (varsayılan): PVC silindiğinde, arka uç depolama verileri archiveOnDelete ayarına göre işlenir.

    • Retain: PVC silindiğinde, PV ve NAS dosya sistemindeki veriler silinmez ve manuel olarak silinmesi gerekir. Yanlışlıkla veri kaybını önlemek amacıyla yüksek veri güvenliği gerektiren senaryolar için bu ilke önerilir.

    Mount Options

    NFS protokol sürümü dahil olmak üzere NAS için bağlama seçenekleri. Varsayılan olarak birimler NFSv3 kullanılarak bağlanır. vers=4.0 gibi bir seçenekle farklı bir sürüm belirtebilirsiniz. Farklı NAS türleri tarafından desteklenen NFS protokolleri hakkında bilgi için bkz. NFS protokolleri.

    StorageClass oluşturulduktan sonra, StorageClasses listesinde görüntüleyebilirsiniz.

2. PVC oluşturun

PersistentVolumeClaim (PVC), ilişkili bir StorageClass'ı eşleşen bir PersistentVolume (PV) dinamik olarak hazırlamaya ve bağlamaya tetikleyen bir uygulamanın depolama talebidir.

kubectl

  1. Aşağıdaki içerikle nas-pvc.yaml adlı bir dosya oluşturun:

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata: 
      name: nas-csi-pvc
    spec:
      accessModes:
      - ReadWriteMany 
      # Specify the StorageClass to use.
      storageClassName: alicloud-nas-subpath  
      resources: 
        requests:
          # Declare the required capacity of the storage volume.
          storage: 20Gi  

    Parametre

    Açıklama

    accessModes

    Erişim modu. Geçerli değerler:

    • ReadWriteMany (varsayılan): Birim, birçok düğüm tarafından okuma-yazma olarak bağlanabilir.

    • ReadWriteOnce: Birim, tek bir düğüm tarafından okuma-yazma olarak bağlanabilir.

    • ReadOnlyMany: Birim, birçok düğüm tarafından salt okunur olarak bağlanabilir.

    storageClassName

    Kullanılacak StorageClass'ın adı.

    storage

    Gerekli depolama birimi kapasitesi. Varsayılan olarak, bu bildirim bir kaynak isteği olarak işlev görür ve pod için kullanılabilen gerçek depolama alanını sınırlamaz.

    Bir NAS dosya sisteminin kapasite sınırı, teknik özellikleri tarafından belirlenir. Daha fazla bilgi için bkz. General-purpose NAS ve Extreme NAS.

    Ancak, StorageClass'taki allowVolumeExpansion değeri true olarak ayarlandığında, bu değer kesin olarak uygulanan sabit bir sınır haline gelir. CSI eklentisi, PV'nin kullanılabilir kapasitesini sınırlamak için bu yapılandırmaya göre NAS dizin kotasını ayarlar.

  2. PVC'yi oluşturun.

    kubectl create -f nas-pvc.yaml
  3. PV'yi kontrol edin.

    kubectl get pv

    Beklenen çıktı aşağıdakine benzerdir; bu, StorageClass'ın otomatik olarak bir PersistentVolume (PV) hazırladığını ve bunu PVC'ye bağladığını gösterir.

    NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                 STORAGECLASS             VOLUMEATTRIBUTESCLASS   REASON   AGE
    nas-a7540d97-0f53-4e05-b7d9-557309******   20Gi       RWX            Retain           Bound    default/nas-csi-pvc   alicloud-nas-subpath     <unset>                          5m

Console

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

  2. Persistent Volume Claims sayfasında Create öğesine tıklayın, PVC parametrelerini yapılandırın ve ardından Create öğesine tıklayın.

    Parametre

    Açıklama

    PVC Type

    NAS seçin.

    Name

    PVC'nin adı. Ad, ad alanı içinde benzersiz olmalıdır.

    Allocation Mode

    Use StorageClass seçeneğini belirleyin.

    Existing Storage Class

    Select Storage Class seçeneğine tıklayın ve oluşturduğunuz StorageClass'ı seçin.

    Total Capacity

    Gerekli depolama birimi kapasitesi. Varsayılan olarak, bu bildirim bir kaynak isteği olarak işlev görür ve pod için kullanılabilen gerçek depolama alanını sınırlamaz.

    Bir NAS dosya sisteminin kapasite sınırı, teknik özellikleri tarafından belirlenir. Daha fazla bilgi için bkz. General-purpose NAS ve Extreme NAS.

    Ancak, StorageClass'taki allowVolumeExpansion değeri true olarak ayarlandığında, bu değer kesin olarak uygulanan sabit bir sınır haline gelir. CSI eklentisi, PV'nin kullanılabilir kapasitesini sınırlamak için bu yapılandırmaya göre NAS dizin kotasını ayarlar.

    Access Mode

    Erişim modu. Geçerli değerler:

    • ReadWriteMany (varsayılan): Birim, birçok düğüm tarafından okuma-yazma olarak bağlanabilir.

    • ReadWriteOnce: Birim, tek bir düğüm tarafından okuma-yazma olarak bağlanabilir.

    • ReadOnlyMany: Birim, birçok düğüm tarafından salt okunur olarak bağlanabilir.

3. Uygulama oluşturma ve NAS bağlama

PVC oluşturulduktan sonra birimi bir uygulamaya bağlayabilirsiniz. Bu bölümde, aynı PVC'yi referans alan iki Dağıtım (Deployment) nasıl oluşturulacağı gösterilir; bu sayede birden fazla pod aynı NAS alt yolunu paylaşabilir.

kubectl

Aynı NAS dosya sisteminin alt yolunu paylaşmalarını sağlamak için aynı PVC'yi referans alan iki Dağıtım oluşturun.

Aynı NAS dosya sisteminden farklı alt yolları farklı pod'lara bağlamak için her alt yol adına benzersiz bir StorageClass ve buna karşılık gelen bir PVC oluşturmanız gerekir.
  1. Aşağıdaki içeriğe sahip nginx-1.yaml ve nginx-2.yaml adında iki dosya oluşturun.

    Her iki uygulamanın yapılandırmaları neredeyse aynıdır. Her ikisi de aynı PVC'yi referans alır.
    • nginx-1.yaml

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: nas-test-1     
        labels:
          app: nginx
      spec:
        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: nas-pvc
                  # The mount path for the NAS volume inside the container.
                  mountPath: "/data"          
            volumes:
              - name: nas-pvc                 
                persistentVolumeClaim:
                  # Reference the previously created PVC.
                  claimName: nas-csi-pvc      
    • nginx-2.yaml

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: nas-test-2     
        labels:
          app: nginx
      spec:
        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: nas-pvc
                  # The mount path for the NAS volume inside the container.
                  mountPath: "/data"           
            volumes:
              - name: nas-pvc                 
                persistentVolumeClaim:
                  # Reference the previously created PVC.
                  claimName: nas-csi-pvc       
  2. İki Dağıtımı oluşturun.

    kubectl create -f nginx-1.yaml -f nginx-2.yaml
  3. Pod durumlarını kontrol edin.

    kubectl get pod -l app=nginx

    Beklenen çıktı:

    NAME                         READY   STATUS    RESTARTS   AGE
    nas-test-1-b75d5b6bc-*****   1/1     Running   0          51s
    nas-test-2-b75d5b6bc-*****   1/1     Running   0          44s
  4. Her pod'un doğru Kalıcı Birim Talebini (PVC) kullandığını doğrulamak için pod'u inceleyin.

    <podName> değerini her bir pod'un gerçek adıyla değiştirin.
    kubectl describe pod <podName> | grep "ClaimName:"

    Beklenen çıktıda, her iki pod da aynı PVC'yi kullanır; bu durum, NAS dosya sisteminin aynı alt yolunu paylaştıklarını doğrular.

Console

NAS dosya sisteminin aynı alt yolunu paylaşmalarını sağlayan, aynı PVC'yi kullanan iki Dağıtım oluşturmak için aşağıdaki adımları tekrarlayın.

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

  2. öğesine tıklayın ve ekrandaki talimatları izleyerek uygulamayı yapılandırıp oluşturun.

    Temel parametreler aşağıda açıklanmıştır. Diğer parametreler için varsayılan değerleri koruyabilirsiniz. Daha fazla bilgi için bkz. Durumsuz uygulama oluşturma (Dağıtım).

    Bölüm

    Parametre

    Açıklama

    Basic Information

    Replicas:

    Dağıtım için çoğaltma sayısı.

    Container

    Görüntü

    Uygulamayı dağıtmak için kullanılan görüntünün adresi.

    Required Resources

    Konteyner tarafından gereken vCPU ve bellek kaynakları.

    Volumes

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

    • Mount Source: Oluşturduğunuz PVC'yi seçin.

    • : NAS dosya sisteminin konteyner içinde bağlanacağı yolu girin.

    Dağıtım tamamlandığında Deployments sayfasında uygulama adına tıklayabilir ve pod'ların düzgün çalıştığını (durumlarının Running olduğunu) onaylamak için Pods sekmesini kontrol edebilirsiniz.

Depolamanın paylaşımlı ve kalıcı olduğunu doğrulamak için bkz. Paylaşımlı ve kalıcı depolamayı doğrulama.

Yöntem 2: sharepath modunu kullanarak bağlama

Bu modda, bu StorageClass'ı kullanan PVC'ler için PV'ler oluşturulduğunda provisioner yeni dizinler oluşturmaz. Bunun yerine, tüm PV'ler StorageClass'ta tanımlanan yolu kullanır ve her PV'yi aynı NAS dizinine eşler.

1. StorageClass oluşturma

StorageClass, dinamik birimleri sağlama için bir şablon görevi görür ve depolama kaynaklarının kaynağını ve davranışını tanımlar.

kubectl

  1. Aşağıdaki içeriğe sahip alicloud-nas-sharepath.yaml adında bir dosya oluşturun.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alicloud-nas-sharepath
    mountOptions:
    - nolock,tcp,noresvport
    - vers=3
    parameters:
      volumeAs: sharepath
      # The format of the server field is <nas-server-address>:/<path>
      server: "0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com:/k8s"
    provisioner: nasplugin.csi.alibabacloud.com
    reclaimPolicy: Retain

    Parametre

    Açıklama

    mountOptions

    NFS protokol sürümü dahil olmak üzere NAS için bağlama seçenekleri. Varsayılan olarak birimler NFSv3 kullanılarak bağlanır. vers=4.0 gibi bir seçenekle farklı bir sürüm belirtebilirsiniz. Farklı NAS türlerinin desteklediği NFS protokolleri hakkında bilgi için bkz. NFS protokolleri.

    parameters.volumeAs

    Birim sağlama modu. sharepath olarak ayarlayın.

    parameters.server

    NAS bağlama hedefi ve bağlanacak alt yol, biçim: <nas-server-address>:/<path>.

    • <nas-server-address>: NAS dosya sisteminin bağlama hedefi. Daha fazla bilgi için bkz. Bağlama hedeflerini yönetme.

    • :/<path>: Bağlanacak NAS alt yolu. Bu parametre ayarlanmazsa veya belirtilen alt yol yoksa varsayılan olarak kök dizin bağlanır.

      • Genel amaçlı NAS: Kök dizin / şeklindedir.

      • Extreme NAS: Kök dizin /share şeklindedir. Bir alt yol bağlarken path değeri /share ile başlamalıdır, örneğin /share/data.

    provisioner

    Sürücü. Alibaba Cloud NAS CSI eklentisini kullanırken bu parametreyi nasplugin.csi.alibabacloud.com olarak ayarlayın.

    reclaimPolicy

    PV için geri kazanma ilkesi. sharepath modu için bu değer Retain olmalıdır.

  2. StorageClass'ı oluşturun.

    kubectl create -f alicloud-nas-sharepath.yaml

Console

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

  2. Create öğesine tıklayın, StorageClass için benzersiz bir ad belirtin ve PV Type olarak NAS'ı seçin.

    Parametre

    Açıklama

    Select Mount Target

    NAS dosya sisteminin bağlama hedefi.

    Volume Mode

    Birim sağlama modu. Bu örnekte, sharepath modunu etkinleştiren Shared Directory seçeneğini belirleyin.

    Mount Path

    Bağlanacak NAS alt dizini. Bu parametre belirtilmezse varsayılan olarak kök dizin bağlanır.

    Dizin NAS dosya sisteminde yoksa otomatik olarak oluşturulur ve ardından bağlanır.
    • Genel amaçlı NAS: Kök dizin / şeklindedir.

    • Extreme NAS: Kök dizin /share şeklindedir. Bir alt dizin bağlarken path değeri /share ile başlamalıdır, örneğin /share/data.

    Geri kazanma ilkesi

    sharepath modu için bu değer Retain olmalıdır.

    Bağlama seçenekleri

    NFS protokol sürümü dahil olmak üzere NAS için bağlama seçenekleri. Varsayılan olarak birimler NFSv3 kullanılarak bağlanır. vers=4.0 gibi bir seçenekle farklı bir sürüm belirtebilirsiniz. Farklı NAS türlerinin desteklediği NFS protokolleri hakkında bilgi için bkz. NFS protokolleri.

2. PVC oluşturma

Kalıcı Birim Talebi (PVC), bir uygulamanın depolama talebidir; bu talep, ilişkili StorageClass'ın eşleşen bir Kalıcı Birimi (PV) dinamik olarak sağlamasına ve bağlamasına tetikleyici olur.

Ad alanları arasında veri paylaşımını etkinleştirmek için iki farklı ad alanında aynı ada sahip bir PVC oluşturacaksınız. PVC'ler aynı adı paylaşsa da farklı ad alanlarında bulundukları için ayrı kaynaklardır. StorageClass, her PVC için ayrı bir PV sağlar ve her iki PV de NAS dosya sistemindeki aynı paylaşılan dizine işaret eder.

kubectl

  1. ns1 ve ns2 olmak üzere iki ad alanı oluşturun.

    kubectl create ns ns1
    kubectl create ns ns2
  2. Hem ns1 hem de ns2 ad alanlarında aynı ada sahip bir PVC oluşturmak için aşağıdaki içeriğe sahip pvc.yaml adında bir dosya oluşturun.

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata: 
      name: nas-csi-pvc
      namespace: ns1
    spec:
      accessModes:
      - ReadWriteMany 
      storageClassName: alicloud-nas-sharepath
      resources: 
        requests:
          storage: 20Gi
    ---
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata: 
      name: nas-csi-pvc
      namespace: ns2
    spec:
      accessModes:
      - ReadWriteMany 
      storageClassName: alicloud-nas-sharepath
      resources: 
        requests:
          storage: 20Gi

    Parametre

    Açıklama

    accessModes

    Erişim modu. Geçerli değerler:

    • ReadWriteMany (varsayılan): Birim, birçok düğüm tarafından okuma-yazma olarak bağlanabilir.

    • ReadWriteOnce: Birim, tek bir düğüm tarafından okuma-yazma olarak bağlanabilir.

    • ReadOnlyMany: Birim, birçok düğüm tarafından salt okunur olarak bağlanabilir.

    storageClassName

    Kullanılacak StorageClass'ın adı.

    storage

    Depolama biriminin gerekli kapasitesi. Varsayılan olarak bu bildirim bir kaynak talebi olarak işlev görür ve pod için kullanılabilir gerçek depolama alanını sınırlamaz.

    NAS dosya sisteminin kapasite limiti teknik özelliklerine göre belirlenir. Daha fazla bilgi için bkz. Genel amaçlı NAS ve Extreme NAS.

    Ancak StorageClass'taki allowVolumeExpansion değeri true olarak ayarlandığında bu değer kesin olarak uygulanan sabit bir limite dönüşür. CSI eklentisi, PV'nin kullanılabilir kapasitesini sınırlamak için bu yapılandırmaya göre NAS dizin kotasını ayarlar.

  3. PVC'leri oluşturun.

    kubectl create -f pvc.yaml
  4. PV'lerin otomatik olarak oluşturulduğunu ve PVC'lere bağlandığını onaylamak için PV durumunu kontrol edin.

    kubectl get pv

    Beklenen çıktı aşağıdakine benzer olacaktır. Her iki PV'nin durumu Bound şeklindedir ve CLAIM sütunu her bir PV'nin farklı bir ad alanındaki bir PVC'ye (ns1/nas-csi-pvc ve ns2/nas-csi-pvc) bağlı olduğunu gösterir.

    NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                 STORAGECLASS             VOLUMEATTRIBUTESCLASS   REASON   AGE
    nas-0b448885-6226-4d22-8a5b-d0768c******   20Gi       RWX            Retain           Bound    ns1/nas-csi-pvc       alicloud-nas-sharepath   <unset>                          74s
    nas-bcd21c93-8219-4a11-986b-fd934a******   20Gi       RWX            Retain           Bound    ns2/nas-csi-pvc       alicloud-nas-sharepath   <unset>                          74s

Console

  1. Ad alanları oluşturun.

    • Clusters sayfasında kümenizin adına tıklayın. Sol gezinme bölmesinde Namespaces and Quotas seçeneğine tıklayın.

    • Launch öğesine tıklayın ve ekrandaki talimatları izleyerek ns1 ve ns2 ad alanlarını oluşturun.

  2. Küme yönetimi sayfasının sol gezinme bölmesinde Storage > PVCs seçeneğine gidin.

  3. ns1 ad alanında bir depolama talebi oluşturun.

    Persistent Volume Claims sayfasında Namespace açılır listesinden ns1 seçeneğini belirleyin ve ekrandaki talimatları izleyerek PVC'yi oluşturun.

    Parametre

    Açıklama

    PVC Type

    NAS seçin.

    Ad

    PVC'nin adı. Ad, ad alanı içinde benzersiz olmalıdır.

    Allocation Mode

    Use StorageClass seçeneğini belirleyin.

    Existing Storage Class

    Select Storage Class seçeneğine tıklayın ve oluşturduğunuz StorageClass'ı seçin.

    Kapasite

    Depolama biriminin gerekli kapasitesi. Varsayılan olarak bu bildirim bir kaynak talebi olarak işlev görür ve pod için kullanılabilir gerçek depolama alanını sınırlamaz.

    NAS dosya sisteminin kapasite limiti teknik özelliklerine göre belirlenir. Daha fazla bilgi için bkz. Genel amaçlı NAS ve Extreme NAS.

    Ancak StorageClass'taki allowVolumeExpansion değeri true olarak ayarlandığında bu değer kesin olarak uygulanan sabit bir limite dönüşür. CSI eklentisi, PV'nin kullanılabilir kapasitesini sınırlamak için bu yapılandırmaya göre NAS dizin kotasını ayarlar.

    Access Mode

    Erişim modu. Geçerli değerler:

    • ReadWriteMany (varsayılan): Birim, birçok düğüm tarafından okuma-yazma olarak bağlanabilir.

    • ReadWriteOnce: Birim, tek bir düğüm tarafından okuma-yazma olarak bağlanabilir.

    • ReadOnlyMany: Birim, birçok düğüm tarafından salt okunur olarak bağlanabilir.

  4. ns2 ad alanında başka bir PVC oluşturmak için önceki adımı izleyin.

    Oluşturma işleminden sonra Persistent Volume Claims sayfasına dönün. Hem ns1 hem de ns2 ad alanlarında her iki PVC'nin otomatik olarak oluşturulan PV'lerine bağlı olduğunu onaylayın.

3. Uygulama oluşturma ve NAS bağlama

PVC'ler oluşturulduktan sonra bunlara bağlı PV'leri uygulamalarınıza bağlayabilirsiniz. Bu bölümde, iki ad alanının her birinde bir uygulama oluşturacak ve ilgili PVC'yi bağlayacaksınız. Bu yapılandırma, her iki uygulamanın da StorageClass'ta tanımlanan NAS alt dizinini paylaşmasını sağlar.

kubectl

  1. Aşağıdaki içeriğe sahip nginx-ns1.yaml ve nginx-ns2.yaml adında iki dosya oluşturun.

    Her iki uygulamanın yapılandırmaları neredeyse aynıdır. Her biri kendi ad alanındaki PVC'ye bağlanır.
    • nginx-ns1.yaml

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: nas-test
        namespace: ns1   
      spec:
        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: nas-pvc
                  mountPath: "/data"
            volumes:
              - name: nas-pvc
                persistentVolumeClaim:
                  claimName: nas-csi-pvc
    • nginx-ns2.yaml

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: nas-test
        namespace: ns2   
      spec:
        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: nas-pvc
                  mountPath: "/data"
            volumes:
              - name: nas-pvc
                persistentVolumeClaim:
                  claimName: nas-csi-pvc
  2. İki Dağıtımı oluşturun.

    kubectl create -f nginx-ns1.yaml -f nginx-ns2.yaml
  3. Pod durumunu kontrol edin.

    kubectl get pod -A -l app=nginx

    Beklenen çıktı:

    NAMESPACE   NAME                         READY   STATUS    RESTARTS   AGE
    ns1         nas-test-b75d5b6bc-*****     1/1     Running   0          2m19s
    ns2         nas-test-b75d5b6bc-*****     1/1     Running   0          2m11s
  4. PVC bağlantısını onaylamak için bir Pod'un ayrıntılı yapılandırmasını kontrol edin.

    <namespace-name> ve <pod-name> değerlerini gerçek ad alanı ve Pod adıyla değiştirin.
    kubectl describe pod -n <namespace-name> <pod-name> | grep "ClaimName:"

    Beklenen çıktıda, iki Pod sırasıyla ns1/nas-csi-pvc ve ns2/nas-csi-pvc birimlerini bağlar.

Console

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

  2. ns1 ad alanında bir Dağıtım oluşturun ve ilgili PVC'yi bağlayın.

    1. Namespace açılır listesinden Namespace seçeneğini belirleyin ve Create from Image seçeneğine tıklayın.

    2. Uygulamayı oluşturmak için ekrandaki talimatları izleyin.

      Temel parametreler aşağıda açıklanmıştır. Diğer parametreleri varsayılan değerlerinde bırakın. Daha fazla bilgi için bkz. Durumsuz iş yükü oluşturma (Dağıtım).

      Bölüm

      Parametre

      Açıklama

      Basic Information

      Replicas:

      Dağıtımın çoğaltma sayısı.

      Container

      Görüntü

      Uygulamayı dağıtmak için kullanılan görüntünün adresi.

      Required Resources

      Gerekli vCPU ve bellek kaynakları.

      Volumes

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

      • Mount Source: Oluşturduğunuz PVC'yi seçin.

      • : NAS dosya sisteminin konteyner içinde bağlanacağı yolu girin, örneğin /data.

  3. ns2 ad alanında başka bir Dağıtım oluşturmak ve ilgili PVC'yi bağlamak için önceki adımı izleyin.

    Deployments sayfasına dönün. ns1 ve ns2 ad alanlarında her bir Dağıtımın durumunu kontrol ederek Pod'ların çalıştığını ve doğru PVC'leri bağladığını onaylayın.

Sonuçları doğrulamak için bkz. Paylaşımlı ve kalıcı depolamayı doğrulama.

Yöntem 3: Dosya sistemi modunda birim bağlama

Dosya sistemi modu, bir uygulama için özel bir NAS dosya sistemi ve bağlantı noktasının dinamik olarak oluşturulmasını ve yönetilmesini sağlar. Paylaşılan yol (sharepath) modundan farklı olarak, dosya sistemi modunda oluşturulan her PV ayrı bir NAS dosya sistemi örneğine karşılık gelir.

Her filesystem türündeki PV, özel bir NAS dosya sistemine ve bir bağlantı noktasına karşılık gelir.
  • Varsayılan olarak, filesystem türündeki bir PV'yi sildiğinizde ilgili NAS dosya sistemi ve bağlantı noktası korunur. PV silindiğinde NAS dosya sisteminin ve bağlantı noktasının otomatik olarak silinmesini sağlamak için StorageClass'a aşağıdaki parametreleri ekleyin:

    • reclaimPolicy: Delete

    • parameters.deleteVolume: "true"

  • Bir ACK dedicated cluster kullanırken csi-provisioner bileşenine gerekli izinleri verin.

    Yetkilendirme işlemi

    filesystem türündeki NAS birimlerinin kullanılması, NAS dosya sistemlerinin ve bağlantı noktalarının dinamik olarak oluşturulmasını ve silinmesini içerir. Bu nedenle, ACK dedicated cluster içindeki csi-provisioner bileşeninin ilgili izinlere sahip olması gerekir.

    Aşağıda, RAM ilkesi için gereken minimum izin kümesi verilmiştir.

    {
        "Action": [
            "nas:DescribeMountTargets",
            "nas:CreateMountTarget",
            "nas:DeleteFileSystem",
            "nas:DeleteMountTarget",
            "nas:CreateFileSystem"
        ],
        "Resource": [
            "*"
        ],
        "Effect": "Allow"
    }

    İzinleri aşağıdaki yöntemlerden birini kullanarak verebilirsiniz:

    • Önceki NAS izinlerini, ACK dedicated cluster için master RAM role özel ilkesine ekleyin. Daha fazla bilgi için Özel ilkenin içeriğini ve açıklamasını değiştirme konusuna bakın. Küme ayrıntıları sayfasında Cluster Resources sekmesine tıklayın, Master RAM Role öğesini (örneğin KubernetesMasterRole-xxx) bulun ve ilkeyi bu role ekleyin.

    • Bir RAM kullanıcı oluşturun, önceki RAM ilkesini ekleyin ve bir erişim anahtarı oluşturun. Ardından, erişim anahtarını csi-provisioner için env değişkenlerinde yapılandırın.

      env:
      - name: CSI_ENDPOINT
        value: unix://socketDir/csi.sock
      - name: ACCESS_KEY_ID
        value: ""
      - name: ACCESS_KEY_SECRET
        value: ""

1. StorageClass oluşturma

StorageClass, dinamik birimin sağlama şablonudur. Depolama kaynaklarının kaynağını ve davranışını tanımlar.

  1. Dosya sistemi modunda bir StorageClass tanımlamak için aşağıdaki içeriğe sahip alicloud-nas-fs.yaml adlı bir dosya oluşturun:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alicloud-nas-fs
    mountOptions:
    - nolock,tcp,noresvport
    - vers=3
    parameters:
      volumeAs: filesystem
      fileSystemType: standard
      storageType: Performance
      regionId: cn-beijing
      zoneId: cn-beijing-e
      vpcId: "vpc-2ze2fxn6popm8c2mzm****"
      vSwitchId: "vsw-2zwdg25a2b4y5juy****"
      accessGroupName: DEFAULT_VPC_GROUP_NAME
      deleteVolume: "false"
    provisioner: nasplugin.csi.alibabacloud.com
    reclaimPolicy: Retain

    Parametre

    Açıklama

    mountOptions

    NFS protokolü sürümü dahil olmak üzere NAS için bağlantı seçenekleri. Varsayılan olarak birimler NFSv3 kullanılarak bağlanır. vers=4.0 gibi bir seçenekle farklı bir sürüm belirtebilirsiniz. Farklı NAS türleri tarafından desteklenen NFS protokolleri hakkında bilgi için NFS protokolleri konusuna bakın.

    parameters.volumeAs

    Bağlantı türünü filesystem olarak ayarlayın.

    parameters.fileSystemType

    NAS dosya sisteminin türü. Geçerli değerler:

    • standard (varsayılan): Genel amaçlı NAS.

    • extreme: Extreme NAS.

    parameters.storageType

    NAS dosya sisteminin depolama sınıfı.

    • Genel amaçlı NAS için geçerli değerler:

      • Performance (varsayılan): Performans

      • Capacity: Kapasite

    • Extreme NAS için geçerli değerler:

      • standard (varsayılan): Standart

      • advance: Gelişmiş

    parameters.regionId

    NAS dosya sisteminin bölgesi. Bu, küme ile aynı bölge olmalıdır.

    parameters.zoneId

    NAS dosya sisteminin kullanılabilirlik alanı. Aynı VPC içinde NAS, alanlar arası bağlantıları destekler.

    parameters.vpcId

    Dosya sisteminin bağlantı noktası için VPC. Bu, küme ile aynı VPC olmalıdır.

    parameters.vSwitchId

    Dosya sisteminin bağlantı noktası için vSwitch ID'si.

    parameters.accessGroupName

    NAS dosya sisteminin bağlantı noktasının erişim grubu. Varsayılan değer DEFAULT_VPC_GROUP_NAME değeridir.

    parameters.deleteVolume

    PVC silindiğinde PV'nin ve ilgili NAS dosya sistemi ile bağlantı noktasının silinip silinmeyeceğini belirtir. NAS paylaşılan bir dosya sistemi olduğundan, güvenlik amacıyla hem deleteVolume hem de reclaimPolicy parametrelerini yapılandırmanız gerekir.

    provisioner

    Sürücü. Alibaba Cloud NAS CSI eklentisini kullanırken bu parametreyi nasplugin.csi.alibabacloud.com olarak ayarlayın.

    reclaimPolicy

    PV geri alma ilkesi Delete olarak ayarlandığında ve deleteVolume parametresi true olarak ayarlandığında, PV, ilgili NAS dosya sistemi ve bağlantı noktası PVC ile birlikte silinir.

  2. StorageClass'ı oluşturmak için aşağıdaki komutu çalıştırın.

    kubectl create -f alicloud-nas-fs.yaml

2. PVC oluşturma

  1. Depolama kaynaklarını talep etmek için aşağıdaki içeriğe sahip nas-pvc-fs.yaml adlı bir dosya oluşturun:

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: nas-csi-pvc-fs
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: alicloud-nas-fs
      resources:
        requests:
          storage: 20Gi

    Parametrelerin açıklamaları aşağıdadır:

    Parametre

    Açıklama

    accessModes

    Erişim modu. Geçerli değerler:

    • ReadWriteMany (varsayılan): Birim, birçok düğüm tarafından okuma-yazma olarak bağlanabilir.

    • ReadWriteOnce: Birim, tek bir düğüm tarafından okuma-yazma olarak bağlanabilir.

    • ReadOnlyMany: Birim, birçok düğüm tarafından salt okunur olarak bağlanabilir.

    storage

    Oluşturulacak NAS biriminin kapasitesi.

    Extreme NAS için minimum kapasite 100 GiB'dir. StorageClass'ta Extreme NAS tanımlanmışsa storage değeri ≥ 100 GiB olmalıdır.

    storageClassName

    Bu talebin istediği StorageClass'ın adı.

  2. PVC'yi oluşturun.

    kubectl create -f nas-pvc-fs.yaml

3. Uygulama oluşturma ve NAS bağlama

  1. nas-fs.yaml dosyasını oluşturmak için aşağıdaki örneği referans alın.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: deployment-nas-fs
      labels:
        app: nginx-test
    spec:
      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: nas-pvc
                mountPath: "/data"
          volumes:
            - name: nas-pvc
              persistentVolumeClaim:
                claimName: nas-csi-pvc-fs
  2. Deployment'ı oluşturun.

    kubectl create -f nas-fs.yaml
  3. PVC durumunu kontrol edin.

    kubectl get pvc nas-csi-pvc-fs

    Aşağıdaki çıktı, PVC'nin PV'ye başarıyla bağlandığını gösterir:

    NAME             STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS      VOLUMEATTRIBUTESCLASS   AGE
    nas-csi-pvc-fs   Bound    nas-8338540d-34a1-4796-89cf-be2a7*******   20Gi       RWX            alicloud-nas-fs   <unset>                 13m
  4. PV ayrıntılarında yeni oluşturulan NAS dosya sisteminin ID'sini kontrol edin.

    Gerçek PV adıyla nas-8338540d-34a1-4796-89cf-be2a7******* ifadesini değiştirin.
    kubectl describe pv nas-8338540d-34a1-4796-89cf-be2a7******* | grep "fileSystemId"

    Çıktı, yeni oluşturulan NAS dosya sisteminin ID'sini gösterir. Bu dosya sistemini NAS konsolu üzerindeki File System List sayfasında görüntüleyebilirsiniz.

Paylaşılan ve kalıcı depolamayı doğrulama

Uygulamayı başarıyla dağıttıktan sonra, depolama biriminin beklendiği gibi çalıştığını doğrulayabilirsiniz. Bu bölümde, doğrulama örneği olarak subpath modu kullanılarak nas-test-1 ve nas-test-2 oluşturulmuştur.

Paylaşılan depolama

Kalıcı depolama

Paylaşılan depolamayı doğrulamak için bir Pod'da dosya oluşturun ve ardından diğerinde görüntüleyin.

  1. Pod'ların adlarını almak için Pod'ları listeleyin.

    kubectl get pod | grep nas-test

    Beklenen çıktı:

    nas-test-1-b75d5b6bc-*****           1/1     Running   0          50s
        nas-test-2-b75d5b6bc-*****           1/1     Running   0          60s
  2. Pod'lardan birinde dosya oluşturun.

    Örnek olarak nas-test-1-b75d5b6bc-* adlı Pod'u ele alalım:

    kubectl exec nas-test-1-b75d5b6bc-***** -- touch /data/test.txt
  3. Dosyanın diğer Pod'da var olup olmadığını kontrol edin.

    Örnek olarak nas-test-2-b75d5b6bc-* adlı Pod'u ele alalım.

    kubectl exec nas-test-2-b75d5b6bc-***** -- ls /data

    Beklenen çıktı:

    test.txt

    Çıktı yeni dosyayı gösterir ve bu da verilerin Pod'lar arasında paylaşılabileceğini doğrular.

Kalıcı depolamayı doğrulamak için Deployment'ı yeniden başlatın ve verilerin yeni Pod'un dosya sisteminde hala mevcut olup olmadığını kontrol edin.

  1. Pod yeniden oluşturmayı tetiklemek için Deployment'ı yeniden başlatın.

    kubectl rollout restart deploy nas-test-1
  2. Pod'ları kontrol edin ve yeni Pod'un durumu Running olana kadar bekleyin.

    kubectl get pod | grep nas-test

    Beklenen çıktı:

    nas-test-1-5bb845b795-*****           1/1     Running   0          115m
        nas-test-2-5b6bccb75d-*****           1/1     Running   0          103m
  3. Daha önce oluşturulan dosyanın yeni Pod'da var olup olmadığını kontrol edin.

    Örnek olarak nas-test-1-5bb845b795-* adlı Pod'u ele alalım.

    kubectl exec nas-test-1-5bb845b795-***** -- ls /data

    Beklenen çıktı:

    test.txt

    Çıktı daha önce yazılan dosyayı gösterir ve bu da verilerin kalıcı olduğunu doğrular.

Üretim ortamları için

  • Güvenlik ve veri koruma

    • Retain geri alma ilkesini kullanın: StorageClass'ınızın reclaimPolicy değerini Retain olarak ayarlayın. Bu, bir PVC yanlışlıkla silindiğinde veri kaybını önler.

    • Erişim kontrolü için izin gruplarını kullanın: NAS, ağ erişimini yönetmek için izin gruplarını kullanır. En az ayrıcalık ilkesini izleyin: İzin grubuna yalnızca küme düğümlerinin özel IP adreslerini veya vSwitch CIDR bloklarını ekleyin. 0.0.0.0/0 gibi aşırı geniş izinlerden kaçının.

  • Performans ve maliyet optimizasyonu

    • Uygun NAS türünü seçin: Uygulamanızın IOPS ve aktarım hızı gereksinimlerini karşılayan bir NAS türü seçmek için Dosya sistemi seçimi konusuna bakın.

    • Bağlantı seçeneklerini optimize edin (mountOptions): İş yükü özelliklerinize göre NFS bağlantı parametrelerini ayarlayın. Örneğin, vers=4.0 veya vers=4.1 gibi protokol sürümlerini kullanmak bazı senaryolarda performansı ve dosya kilitleme yeteneklerini artırabilir. Büyük ölçekli dosya G/Ç içeren iş yükleri için okuma ve yazma aktarım hızını optimize etmek üzere farklı rsize ve wsize değerlerini test edin.

  • İşlemler ve güvenilirlik

    • Sağlık kontrollerini yapılandırın: Bağlantı noktasının sağlıklı olduğunu doğrulamak için uygulama pod'larınız için bir liveness probe yapılandırın. Bir bağlantı noktası yanıt vermemeye başlarsa ACK pod'u otomatik olarak yeniden başlatarak depolama biriminin yeniden bağlanmasını tetikler.

    • İzleme ve uyarıları ayarlayın: Depolama birimi sorunlarını veya performans darboğazlarını hızlı bir şekilde tespit etmek için konteyner depolama izlemeyi kullanarak uyarılar yapılandırın.

Kaynakların serbest bırakılması

Beklenmeyen ücretlerden kaçınmak için NAS depolama birimine artık ihtiyaç duyulmadığında ilişkili kaynakları aşağıdaki sırayla serbest bırakın.

  1. İş yükünü silin

    • İşlem: NAS depolama birimini kullanan tüm iş yüklerini (Deployment'lar ve StatefulSet'ler gibi) silin. Bu, uygulama Pod'larının birimi bağlamasını, okumasını veya üzerine yazmasını engeller.

    • Örnek komut: kubectl delete deployment <your-deployment-name>

  2. PVC'yi silin

    • İşlem: İş yüküyle ilişkili PVC'yi silin. PVC silindikten sonra, bağlı PV'nin ve arka uç NAS'ın davranışı ilgili StorageClass'ta tanımlanan reclaimPolicy değerine bağlıdır.

      • Alt yol (Subpath) modu

        • reclaimPolicy değeri Retain ise: PVC silindikten sonra bağlı PV Released durumuna geçer. PV nesnesi ve arka uç NAS'taki ilgili alt dizin ile veriler korunur ve manuel olarak silinmelidir.

        • reclaimPolicy değeri Delete ise: PVC silindikten sonra bağlı PV otomatik olarak silinir. Arka uç NAS alt dizininin işlenmesi archiveOnDelete parametresine bağlıdır:

          • archiveOnDelete değeri "true" ise: Arka uç verileri silinmez ancak archived-{pvName}.{timestamp} olarak yeniden adlandırılır ve arşivlenir.

          • archiveOnDelete değeri "false" ise: PV'nin arka uç NAS'taki karşılık gelen alt dizini ve tüm verileri kalıcı olarak silinir. Dikkatli olun.

          Bir ACK Serverless kümesinde, izin kısıtlamaları nedeniyle reclaimPolicy: Delete yapılandırılmış olsa bile arka uç NAS dizini ve verileri silinmez veya arşivlenmez. Yalnızca PV nesnesi silinir.
      • Paylaşılan yol (Sharepath) modu

        Bu mod yalnızca reclaimPolicy değeri Retain olan durumu destekler. PVC silindikten sonra bağlı PV Released durumuna geçer. PV nesnesi, arka uç paylaşılan dizini ve tüm veriler korunur.

      • Dosya sistemi modu

        • reclaimPolicy değeri Retain ise: PVC silindikten sonra bağlı PV Released durumuna geçer. PV nesnesi, dinamik olarak oluşturulan arka uç NAS dosya sistemi ve bağlantı noktası korunur.

        • reclaimPolicy değeri Delete ise: PVC silindikten sonra bağlı PV otomatik olarak silinir. Arka uç NAS dosya sisteminin işlenmesi deleteVolume parametresine bağlıdır:

          • deleteVolume değeri "false" ise: Arka uç NAS dosya sistemi ve bağlantı noktası korunur ve manuel olarak silinmelidir.

          • deleteVolume değeri "true" ise: Arka uç NAS dosya sistemi ve bağlantı noktası otomatik olarak silinir. Dikkatli olun.

    • Örnek komut: kubectl delete pvc <your-pvc-name>

  3. PV'yi silin

    • İşlem: PV Available veya Released durumundayken silinebilir. Bu işlem yalnızca PV tanımını Kubernetes kümesinden kaldırır ve arka uç NAS dosya sisteminden herhangi bir veriyi silmez.

    • Örnek komut: kubectl delete pv <your-pv-name>

  4. Arka uç NAS dosya sistemini silin (isteğe bağlı)

    • subpath ve sharepath modları: Dosya sistemi silme konusuna bakın. Bu işlem NAS'taki tüm verileri kalıcı olarak siler ve veriler kurtarılamaz. Dikkatli olun. Bu işlemi gerçekleştirmeden önce NAS'ın iş bağımlılığı olmadığını onaylamanız gerekir.

    • filesystem modu: Bir PVC sildiğinizde arka uç NAS dosya sistemi otomatik olarak silinmezse, ilgili dosya sistemini bulmak ve manuel olarak silmek için Dosya sistemi silme konusuna bakın.

İlgili belgeler