Tüm Ürünler
Search
Belge Merkezi

Container Service for Kubernetes:Use CPFS for Lingjun statically provisioned volumes

Son Güncelleme:Oct 06, 2026

Lingjun için Cloud Parallel File System (CPFS), uçtan uca Remote Direct Memory Access (RDMA) ağ hızlandırmasıyla yüksek aktarım hızı ve yüksek IOPS performansı sunar. Bu özellik, AI-Generated Content (AIGC) ve otonom sürüş gibi yapay zeka ve hesaplama yoğunluklu senaryolar için idealdir. ACK, CPFS for Lingjun dosya sistemlerini statik olarak sağlanan kalıcı birimler (PV'ler) olarak bağlamayı destekler.

Bağlama yöntemini seçin

ACK, Container Storage Interface (CSI) temelinde CPFS for Lingjun dosya sistemlerini statik olarak sağlanan PV'ler ve kalıcı birim talepleri (PVC'ler) olarak bağlamayı destekler. CSI eklentisi, pod'un çalıştığı düğüm türüne göre en uygun bağlama yöntemini otomatik olarak seçer:


Bağlama yöntemi


Desteklenen düğümler


Gereksinimler


Sanal depolama kanalı (VSC)


Yalnızca Lingjun düğümleri


Ek yapılandırma gerekmez.


VPC


Lingjun olmayan düğümler


Küme düğümleriyle aynı VPC içinde bir VPC bağlama hedefi oluşturun.

Başlamadan önce kümeniz için hangi yolun geçerli olduğunu belirleyin:

  • Pod'lar Lingjun düğümlerinde çalışıyorsa — Varsayılan olarak VSC bağlaması kullanılır. VPC bağlama hedefi oluşturmayı atlayın.

  • Pod'lar Lingjun olmayan düğümlerde çalışıyorsa — VPC bağlaması gereklidir. 1. Adımda bir VPC bağlama hedefi oluşturun.

  • Pod'lar her iki düğüm türünde de çalışıyorsa — PV'de hem vpcMountTarget hem de mountpointAutoSwitch: "true" parametrelerini ayarlayın. CSI eklentisi geçişi otomatik olarak yönetir.

Ön koşullar

Başlamadan önce aşağıdaki koşulları karşıladığınızdan emin olun:

  • Lingjun için CPFS sınırlamalarını inceleyin.

  • Kubernetes 1.26 veya üzeri bir sürüm çalışan bir ACK kümesine sahip olun. Gerekirse yükseltin.

  • Alibaba Cloud Linux 3 çalışan düğümlere sahip olun.

  • Gerekli sürümlerde aşağıdaki depolama eklentilerini yükleyin (sürümleri Add-ons sayfasında doğrulayın ve yükseltin):

    • CSI eklentisi (csi-plugin ve csi-provisioner): v1.33.1 veya üzeri (CSI eklentilerini yönetme).

    • cnfs-nas-daemon: 0.1.2 veya üzeri

      cnfs-nas-daemon kaynaklarını yapılandırın

      cnfs-nas-daemon eklentisi Elastic File Client (EFC) işlemlerini yönetir, önemli kaynaklar tüketir ve depolama performansını doğrudan etkiler. Kaynakları Add-ons sayfasından ayarlayın:

      • CPU: Düğümün toplam bant genişliğine bağlıdır. Önerilen değer: Her 1 Gbps bant genişliği için 0,5 çekirdek artı meta veri yönetimi için 1 ek çekirdek.

        Örnek: 100 Gbps bant genişliğine sahip bir düğüm için CPU isteği 100 × 0.5 + 1 = 51 çekirdektir.
      • Bellek: Lingjun için CPFS, Filesystem in USErspace (FUSE) kullandığından okuma/yazma önbellekleri ve meta veriler bellek tüketir. İsteği düğümün toplam belleğinin %15'i olarak ayarlayın.

      İş yükünüze göre gerektiğinde ayarlamaları güncelleyin.

      Önemli
      • Güncelleme davranışı: cnfs-nas-daemon varsayılan olarak OnDelete güncelleme stratejisini kullanır. Add-ons sayfasında CPU veya belleği ayarladıktan sonra, yeni yapılandırmayla yeniden oluşturmak için her düğümdeki cnfs-nas-daemon pod'larını manuel olarak silin. Bu işlemi yoğun saatler dışında gerçekleştirin.

      • Kesinti riski: cnfs-nas-daemon pod'unu silmek veya yeniden başlatmak, ilgili düğümdeki CPFS bağlama hizmetini geçici olarak kesintiye uğratır.

        • Sıcak yükseltmeyi desteklemeyen düğümler için①: Uygulama pod'larının başarısız olmasına neden olan sert kesinti yaşanır. Hizmeti geri yüklemek için uygulama pod'larını manuel olarak silip yeniden başlatın.

        • Sıcak yükseltmeyi destekleyen düğümler için①: cnfs-nas-daemon yeniden başladıktan sonra uygulama pod'ları otomatik olarak kurtarılır.

        ①: Bir düğüm aşağıdaki tüm koşulları karşılıyorsa sıcak yükseltmeyi destekler:

        • Düğümün kernel sürümü 5.10.134-18 veya üzeridir.

        • bmcpfs-csi-controller ve bmcpfs-csi-plugin sürümleri 1.35.1 veya üzeridir.

        • cnfs-nas-daemon sürümü 0.1.9-compatible.1 veya üzeridir.

    • bmcpfs-csi: bmcpfs-csi-controller (ACK tarafından yönetilen kontrol düzlemi eklentisi) ve bmcpfs-csi-node (düğüm tarafı DaemonSet) bileşenlerini içerir.

Kullanım notları

  • VSC bağlama alanı: Pod'un çalıştığı düğüm, CPFS for Lingjun dosya sistemi örneğiyle aynı hpn-zone içinde olmalıdır.

  • Düğüm başlatma: Lingjun düğümü, başlatma sırasında bir CPFS for Lingjun dosya sistemiyle ilişkilendirilmelidir. Aksi takdirde CSI bağlaması başarısız olur.

  • Düğüm boşaltma: Arızalı bir Lingjun düğümünü devre dışı bırakmadan önce üzerindeki tüm pod'ları boşaltın. Bu adım atlanırsa küme meta verileri tutarsız hale gelir ve temizlenemeyen artık pod kaynakları oluşur.

  • CPFS örneği başına tek PV: Aynı CPFS dosya sistemindeki birden fazla alt dizini ayrı PV'ler olarak tek bir poda bağlamak desteklenmez. Sürücü sınırlamaları nedeniyle bu durum pod başlatma hatasına neden olur. Tek bir PV/PVC oluşturun ve alt dizinleri bağlamak için volumeMounts.subPath kullanın. subPath herhangi bir performans ek yükü oluşturmayan hafif bir bind mount kullanır.

1. Adım: Bir CPFS dosya sistemi oluşturun

  1. Bir Lingjun için CPFS dosya sistemi oluşturun ve dosya sistemi kimliğini kaydedin.

  2. (İsteğe bağlı) Lingjun olmayan düğümler için, küme düğümlerinizle aynı VPC içinde bir VPC bağlama hedefi oluşturun ve bağlama hedefi alan adını kaydedin. Format: cpfs--vpc-.<Region>.cpfs.aliyuncs.com.

    Pod'lar Lingjun düğümlerinde çalışıyorsa gerekli değildir (varsayılan olarak VSC bağlaması kullanılır).

2. Adım: Bir PV ve PVC oluşturun

  1. Aşağıdaki şablonu bmcpfs-pv-pvc.yaml olarak kaydedin ve yer tutucuları dosya sistemi kimliğinizle ve (gerekirse) VPC bağlama hedefinizle değiştirin.

    PV parametreleri


    Parametre


    Açıklama


    Zorunlu


    accessModes


    PV için erişim modu.


    Evet


    capacity.storage


    Bildirilen depolama kapasitesi. Gerçek kapasiteyi etkilemez.


    Evet


    csi.driver


    Sürücü türü. Lingjun için CPFS için bmcpfsplugin.csi.alibabacloud.com kullanın.


    Evet


    csi.volumeHandle


    Lingjun için CPFS dosya sisteminin kimliği.


    Evet


    csi.volumeAttributes.vpcMountTarget


    VPC bağlama hedefi alan adı. Lingjun olmayan düğümler için gereklidir; pod'lar yalnızca Lingjun düğümlerine zamanlanıyorsa atlayın.


    Koşullu


    csi.volumeAttributes.mountpointAutoSwitch


    VSC ve VPC bağlama noktaları arasında otomatik geçişi etkinleştirir. vpcMountTarget ile birlikte kullanın.


    Hayır


    mountOptions


    Bağlama seçenekleri.


    Hayır

    PVC parametreleri


    Parametre


    Açıklama


    Zorunlu


    accessModes


    PVC tarafından istenen erişim modu. PV ile eşleşmelidir.


    Evet


    resources.requests.storage


    Poda tahsis edilen depolama kapasitesi. PV kapasitesini aşmamalıdır.


    Evet


    volumeMode


    Bağlama modu. Filesystem olarak ayarlayın.


    Evet


    volumeName


    Bu PVC'ye bağlanacak PV'nin adı.


    Evet

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: bmcpfs
    spec:
      accessModes:
      - ReadWriteMany
      capacity:
        storage: 10Ti
      claimRef:
        name: bmcpfs
        namespace: default
      csi:
        driver: bmcpfsplugin.csi.alibabacloud.com
        volumeAttributes:
          # Required if pods schedule to non-Lingjun nodes or cross-zone automatic VPC switching is enabled.
          # Omit if pods schedule only to Lingjun nodes.
          vpcMountTarget: cpfs-***-vpc-***.<Region>.cpfs.aliyuncs.com
          # Enables automatic switching between VSC and VPC mount points.
          # Use together with vpcMountTarget.
          mountpointAutoSwitch: "true"
        # Replace with your CPFS for Lingjun file system ID.
        volumeHandle: bmcpfs-*****
      mountOptions: []
    
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: bmcpfs
      namespace: default
    spec:
      accessModes:
      - ReadWriteMany
      resources:
        requests:
          storage: 10Ti
      volumeMode: Filesystem
      volumeName: bmcpfs
  2. Yapılandırmayı uygulayın.

    kubectl apply -f bmcpfs-pv-pvc.yaml
  3. PVC'nin PV'ye bağlı olduğunu doğrulayın.

    kubectl get pvc bmcpfs

    Beklenen çıktı:

    NAME     STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
    bmcpfs   Bound    bmcpfs   10Ti       RWX                           <unset>                 51s

    STATUS değeri Bound olarak görüntülenir; bu da PVC'nin PV'ye bağlı olduğunu onaylar.

3. Adım: Bir iş yükü dağıtın

Senaryo 1: Tüm CPFS dosya sistemini bağlayın

Tüm konteynerlerin CPFS dosya sistemine tam erişime ihtiyacı duyduğu durumlarda bu yaklaşımı kullanın.

  1. Aşağıdaki YAML şablonunu cpfs-test.yaml olarak kaydedin.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: cpfs-test
      labels:
        app: cpfs-test
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: cpfs-test
      template:
        metadata:
          labels:
            app: cpfs-test
        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-cpfs
                mountPath: /data
          volumes:
            - name: pvc-cpfs
              persistentVolumeClaim:
                claimName: bmcpfs
  2. Deployment'ı oluşturun.

    kubectl create -f cpfs-test.yaml
  3. Her iki pod'un da çalıştığını doğrulayın.

    kubectl get pod -l app=cpfs-test

    Beklenen çıktı:

    NAME                         READY   STATUS    RESTARTS   AGE
    cpfs-test-76b77d64b5-2hw96   1/1     Running   0          42s
    cpfs-test-76b77d64b5-dnwdx   1/1     Running   0          42s
  4. Bir pod içindeki CPFS birim bağlantısını doğrulayın.

    kubectl exec -it <pod-name> -- mount | grep /data

    Beklenen çıktı:

    bindroot-f0a5c-******:cpfs-*******-vpc-****.cn-shanghai.cpfs.aliyuncs.com:/ on /data type fuse.aliyun-alinas-efc (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=1048576)

    /data konumundaki fuse.aliyun-alinas-efc bağlama türü, CPFS biriminin bağlandığını onaylar.

Senaryo 2: Veri yalıtımı için alt dizinleri bağlayın

Çok kiracılı veya çok görevli kurulumlar gibi paylaşılan depolama senaryolarında, birden fazla konteyner tek bir CPFS birimini paylaşırken verileri ayrı dizinlerde yalıtabilir. Aynı PVC'den farklı alt dizinleri farklı konteynerlere bağlamak için volumeMounts.subPath kullanın.

Bir subPath dizini (örneğin workspace/alpha ) yoksa otomatik olarak oluşturulur.
  1. Aşağıdaki YAML şablonunu pod.yaml olarak kaydedin. Bu pod, aynı PVC'nin (bmcpfs) farklı alt dizinlerini bağlayan iki konteyner çalıştırır.

    apiVersion: v1
    kind: Pod
    metadata:
      name: cpfs-subpath-demo-pod
    spec:
      containers:
        - name: task-alpha-container
          image: busybox:1.35
          command: ["/bin/sh", "-c", "sleep 3600"]
          volumeMounts:
            - name: cpfs-storage
              mountPath: /data/workspace        # Mount path inside the container
              subPath: workspace/alpha          # Mount the workspace/alpha subdirectory only
    
        - name: task-beta-container
          image: busybox:1.35
          command: ["/bin/sh", "-c", "sleep 3600"]
          volumeMounts:
            - name: cpfs-storage
              mountPath: /data/workspace        # Mount paths can be identical across containers
              subPath: workspace/beta           # Mount the workspace/beta subdirectory only
      volumes:
        - name: cpfs-storage
          persistentVolumeClaim:
            claimName: bmcpfs                  # Reference the PVC created earlier
  2. Pod'u dağıtın.

    kubectl apply -f pod.yaml
  3. task-alpha-container için bağlamayı ve yazma izinlerini doğrulayın.

    1. Konteynere bağlanın.

      kubectl exec -it cpfs-subpath-demo-pod -c task-alpha-container -- /bin/sh
    2. CPFS biriminin bağlandığını onaylayın.

      df -h

      Beklenen çıktı (paylaşılan dizin /data/workspace konumuna bağlanır):

      Filesystem                Size      Used Available Use% Mounted on
      ...
      192.XX.XX.0:/share          10.0T     1.0G     10.0T   0% /data/workspace
      ...

      /data/workspace konumundaki dosya sistemi girişi, CPFS alt dizininin bağlandığını onaylar.

    3. Üst dizin yapısını kontrol edin.

      ls -l /data/

      Beklenen çıktı:

      total 4
      drwxr-xr-x    2 root     root          4096 Aug 15 10:00 workspace
    4. Bir test dosyası yazın ve çıkış yapın.

      echo "hello from alpha" > /data/workspace/alpha.log
      exit
  4. task-beta-container bağlamasını ve veri yalıtımını doğrulayın.

    1. Konteynere bağlanın.

      kubectl exec -it cpfs-subpath-demo-pod -c task-beta-container -- /bin/sh
    2. Bir test dosyası yazın.

      echo "hello from beta" > /data/workspace/beta.log
    3. Bağlama noktasındaki dosyaları listeleyin.

      ls -l /data/workspace/

      Beklenen çıktı:

      total 4
      -rw-r--r--    1 root     root            16 Aug 15 10:05 beta.log

      beta.log mevcutken alpha.log yoktur; bu da konteynerler arasındaki veri yalıtımını onaylar.

<