Tüm Ürünler
Search
Belge Merkezi

Container Service for Kubernetes:Mount a static OSS persistent volume by using ossfs 2.0 in an ACK cluster

Son Güncelleme:Oct 06, 2026

Object Storage Service (OSS) paketinizi statik olarak sağlanan Kalıcı Birim (PV) olarak bağlayarak Pod'larınız için POSIX dosya sistemi arayüzüne sahip kalıcı, paylaşılan depolama alanı oluşturun. ossfs 2.0, sıralı okuma ve yüksek bant genişliği gerektiren iş yükleri için optimize edilmiştir; bu da onu yapay zeka eğitimi, büyük veri analitiği ve statik içerik sunumu senaryoları için ideal kılar.

Performans karşılaştırmaları için bkz. ossfs 2.0 istemci performans karşılaştırmaları .

Çalışma mantığı

Container Service for Kubernetes (ACK) kümesinde bir OSS paketini statik olarak sağlanan birim olarak bağlamak dört adımdan oluşur:

  1. Bir kimlik doğrulama yöntemi seçin. Üretim ortamları için Hizmet Hesapları için RAM Rolleri (RRSA) kullanın; bu yöntem geçici, otomatik olarak döndürülen kimlik bilgileri sağlar ve Pod düzeyinde izin yalıtımı sunar. Uzun süreli statik anahtara dayandığından AccessKey'i yalnızca test amaçlı kullanın.

  2. PV oluşturun. Mevcut OSS paketinizi kümeye kaydeden, paket adını, uç noktayı, alt dizini ve kimlik doğrulama ayrıntılarını belirten bir PV tanımlayın.

  3. PVC oluşturun. Tanımladığınız PV'ye bağlanan bir Kalıcı Birim Talebi (PVC) oluşturun.

  4. Uygulama dağıtın. OSS paketini konteynere bağlamak için iş yükü manifestinizde PVC'ye başvurun.

Kullanım notları

  • Desteklenen iş yükleri: ossfs 2.0 salt okunur ve sıralı-ekleme yazma iş yüklerini destekler. Rastgele veya eşzamanlı yazma işlemlerinde veri tutarlılığı garanti edilemez; bunun yerine ossfs 1.0 kullanın.

  • Veri güvenliği: Bağlama noktasında yapılan değişiklikler (Pod içinden veya ana düğüm üzerinden olsun) anında OSS paketine senkronize edilir. Yanlışlıkla silinmelere karşı koruma sağlamak için pakette sürüm oluşturmayı etkinleştirin.

  • Durum denetimleri: OSS birimleri kullanan Pod'larda, bağlama noktasının erişilebilir olduğunu doğrulamak için bir canlılık probu yapılandırın. Proba başarısız olursa Kubernetes Pod'u otomatik olarak yeniden başlatır ve yeniden bağlamayı tetikler.

  • Çok parçalı yüklemeler: ossfs, 10 MB'tan büyük dosyalar için otomatik olarak çok parçalı yükleme kullanır. Yükleme kesintiye uğrarsa eksik parçalar pakette kalır. Bu parçaları manuel olarak silin veya otomatik temizlemek için bir yaşam döngüsü kuralı yapılandırın.

Yöntem 1: RRSA kullanarak kimlik doğrulama (önerilen)

RRSA, OpenID Connect (OIDC) ve Security Token Service (STS) aracılığıyla geçici, otomatik olarak döndürülen kimlik bilgilerini kullanarak Pod'ların kimliğini doğrular ve PV düzeyinde izin yalıtımını destekler. Arka plan bilgisi için bkz. Farklı pod'ların farklı cloud hizmetlerine erişimini yetkilendirmek için RRSA kullanma.

Önkoşullar

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

Adım 1: RAM rolü oluşturma

Kümede daha önce RRSA kullanarak bir OSS birimi bağladıysanız bu adımı atlayın.

  1. ACK konsolunda RRSA özelliğini etkinleştirin.

  2. OIDC kimlik sağlayıcısı için RAM rolü oluşturun. Aşağıdaki tabloda örnek demo-role-for-rrsa rolü için temel parametreler listelenmiştir.

    Parametre Değer
    Identity provider type OIDC öğesini seçin.
    Identity provider Kümenizle ilişkili sağlayıcıyı seçin, örneğin ack-rrsa-<cluster_id>.
    oidc:iss Varsayılan değeri koruyun.
    oidc:aud Varsayılan değeri koruyun.
    oidc:sub Koşul ekleyin: Anahtar = oidc:sub, İşleç = StringEquals, Değer = system:serviceaccount:ack-csi-fuse:csi-fuse-ossfs. ack-csi-fuse, ossfs istemcisinin çalıştığı ad alanıdır ve değiştirilemez. csi-fuse-ossfs ServiceAccount adıdır ve özelleştirilebilir.
    Role name demo-role-for-rrsa
    ServiceAccount adını değiştirmek için bkz. ossfs 2.0 birimleri hakkında SSS .

Adım 2: RAM rolüne izinler verme

  1. OSS erişimi sağlamak için özel bir ilke oluşturun. Ayrıntılar için bkz. Özel ilkeler oluşturma. mybucket ifadesini gerçek paket adınızla değiştirin.

    • Salt okunur ilke

      {
          "Statement": [
              {
                  "Action": [
                      "oss:Get*",
                      "oss:List*"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                      "acs:oss:*:*:mybucket",
                      "acs:oss:*:*:mybucket/*"
                  ]
              }
          ],
          "Version": "1"
      }
    • Okuma-yazma ilkesi

      {
          "Statement": [
              {
                  "Action": "oss:*",
                  "Effect": "Allow",
                  "Resource": [
                      "acs:oss:*:*:mybucket",
                      "acs:oss:*:*:mybucket/*"
                  ]
              }
          ],
          "Version": "1"
      }
  2. (İsteğe bağlı) Paketteki nesneler Key Management Service (KMS) içindeki bir müşteri ana yöneticisi anahtarı (CMK) ile şifreleniyorsa KMS erişim izinleri verin. Ayrıntılar için bkz. Şifreleme.

  3. İlkeyi demo-role-for-rrsa rolüne ekleyin. Bkz. RAM rolüne izinler verme.

    Zaten OSS erişimi olan mevcut bir RAM rolü kullanmak için bunun yerine güven ilkesini değiştirin. Bkz. Mevcut RAM rolü kullanma .

Adım 3: PV oluşturma

  1. Aşağıdaki içeriğe sahip ossfs2-pv.yaml dosyasını oluşturun.

    Aşağıdaki PV, OSS paketini cnfs-oss-test 20 GiB boyutunda salt okunur bir dosya sistemi olarak bağlar.
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-ossfs2                          # PV name
    spec:
      capacity:
        storage: 20Gi                          # Used for PVC matching only; does not cap OSS capacity
      accessModes:
        - ReadOnlyMany
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: ossplugin.csi.alibabacloud.com
        volumeHandle: pv-ossfs2                # Must match metadata.name exactly
        volumeAttributes:
          fuseType: ossfs2                     # Required: specifies the ossfs 2.0 client
          bucket: cnfs-oss-test                # OSS bucket name
          path: /subpath                       # Subdirectory to mount; leave blank to mount the root
          url: oss-cn-hangzhou-internal.aliyuncs.com  # Internal endpoint (same region); use public endpoint for cross-region
          otherOpts: "-o close_to_open=false"  # false (default): cache metadata for better small-file read performance
                                               # true: fetch fresh metadata on every file open (higher latency, useful when another system frequently updates objects)
          authType: "rrsa"                     # Authentication method
          roleName: "demo-role-for-rrsa"       # RAM role created in Step 1

    volumeAttributes içindeki temel parametreler:

    Parametre Gerekli Açıklama
    fuseType Evet ossfs 2.0 istemcisini kullanmak için ossfs2 olmalıdır.
    bucket Evet Bağlanacak OSS paketinin adı.
    path Hayır Paket içindeki alt dizin. Boş bırakılırsa varsayılan olarak kök dizin kullanılır.
    url Evet OSS uç noktası. Küme ve paket aynı bölgedeyse (veya Virtual Private Cloud (VPC) üzerinden bağlıysa) dahili uç nokta kullanın; bölgeler arası erişim için genel uç nokta kullanın. Dahili format: http(s)://oss-{region}-internal.aliyuncs.com. Genel format: http(s)://oss-{region}.aliyuncs.com. vpc100-oss-{region}.aliyuncs.com dahili uç nokta formatı kullanımdan kaldırılmıştır; yeni formata geçiş yapın.
    otherOpts Hayır -o <option> -o <option> formatındaki ek bağlama seçenekleri. Tüm kullanılabilir seçenekler için bkz. ossfs 2.0 bağlama seçenekleri.
    authType Evet rrsa olarak ayarlayın.
    roleName Evet RAM rolünün adı. Farklı PV'lere farklı izinler atamak için her biri için ayrı bir RAM rolü oluşturun ve burada buna başvurun.
    RRSA ile belirtilen ARN'leri veya özel bir ServiceAccount kullanmak için bkz. RRSA kimlik doğrulama yöntemiyle belirtilen ARN'leri veya ServiceAccount'u nasıl kullanırım?
  2. Manifestoyu uygulayın.

    kubectl create -f ossfs2-pv.yaml
  3. PV'nin kullanılabilir olduğunu doğrulayın.

    kubectl get pv pv-ossfs2

    Beklenen çıktı:

    NAME        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   VOLUMEATTRIBUTESCLASS   REASON   AGE
    pv-ossfs2   20Gi       ROX            Retain           Available                          <unset>                          15s

Adım 4: PVC oluşturma

  1. Aşağıdaki içeriğe sahip ossfs2-pvc-static.yaml dosyasını oluşturun.

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: pvc-ossfs2       # PVC name
      namespace: default
    spec:
      accessModes:
        - ReadOnlyMany        # Must match the PV
      resources:
        requests:
          storage: 20Gi       # Must match the PV
      volumeName: pv-ossfs2   # Bind to this specific PV
  2. PVC'yi oluşturun.

    kubectl create -f ossfs2-pvc-static.yaml
  3. PVC'nin bağlandığını doğrulayın.

    kubectl get pvc pvc-ossfs2

    Beklenen çıktı:

    NAME         STATUS   VOLUME      CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
    pvc-ossfs2   Bound    pv-ossfs2   20Gi       ROX                           <unset>                 6s

Adım 5: Uygulama dağıtma

  1. PVC'yi /data konumuna bağlayan bir StatefulSet tanımlamak için ossfs2-test.yaml dosyasını oluşturun.

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: ossfs2-test
      namespace: default
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: ossfs2-test
      template:
        metadata:
          labels:
            app: ossfs2-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-ossfs2
              mountPath: /data
          volumes:
            - name: pvc-ossfs2
              persistentVolumeClaim:
                claimName: pvc-ossfs2
  2. Uygulamayı dağıtın.

    kubectl create -f ossfs2-test.yaml
  3. Pod'un çalışır duruma gelmesini bekleyin.

    kubectl get pod -l app=ossfs2-test

    Beklenen çıktı:

    NAME            READY   STATUS    RESTARTS   AGE
    ossfs2-test-0   1/1     Running   0          12m
  4. OSS paketinin bağlandığını doğrulayın.

    kubectl exec -it ossfs2-test-0 -- ls /data

    Çıktı, OSS bağlama yolundaki verileri göstermelidir.

Yöntem 2: AccessKey kullanarak kimlik doğrulama

AccessKey çiftini bir Kubernetes Secret içinde saklayın ve PV'den buna başvurun. Bu yaklaşım yapılandırması basittir ancak uzun süreli statik bir anahtar kullanır.

Önemli

AccessKey iptal edilirse veya izinleri değişirse, birimi kullanan tüm Pod'lar hemen erişimi kaybeder. Erişimi geri yüklemek için Secret'ı yeni kimlik bilgileriyle güncelleyin ve etkilenen Pod'ları yeniden başlatın; bu işlem kısa süreli bir hizmet kesintisine neden olur. Üretim ortamlarında bu operasyonel yükü önlemek için Yöntem 1: RRSA kullanarak kimlik doğrulama kullanın.

Önkoşullar

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

Adım 1: RAM kullanıcı oluşturma ve AccessKey saklama

  1. RAM kullanıcı oluşturun. Zaten bir tane varsa bu adımı atlayın. Bkz. RAM kullanıcı oluşturma.

  2. OSS erişimi sağlamak için özel bir ilke oluşturun. Bkz. Özel ilkeler oluşturma. mybucket ifadesini gerçek paket adınızla değiştirin.

    • Salt okunur ilke

      {
          "Statement": [
              {
                  "Action": [
                      "oss:Get*",
                      "oss:List*"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                      "acs:oss:*:*:mybucket",
                      "acs:oss:*:*:mybucket/*"
                  ]
              }
          ],
          "Version": "1"
      }
    • Okuma-yazma ilkesi

      {
          "Statement": [
              {
                  "Action": "oss:*",
                  "Effect": "Allow",
                  "Resource": [
                      "acs:oss:*:*:mybucket",
                      "acs:oss:*:*:mybucket/*"
                  ]
              }
          ],
          "Version": "1"
      }
  3. (İsteğe bağlı) Paketteki nesneler KMS içindeki bir CMK ile şifreleniyorsa KMS erişimi verin. Bkz. Şifreleme.

  4. İlkeyi RAM kullanıcıya ekleyin. Bkz. RAM kullanıcıya izinler verme.

  5. RAM kullanıcı için AccessKey çifti oluşturun. Bkz. AccessKey çifti oluşturma.

  6. AccessKey çiftini Kubernetes Secret olarak saklayın. xxxxxx ifadelerini gerçek değerlerle değiştirin.

    kubectl create -n default secret generic oss-secret \
      --from-literal='akId=xxxxxx' \
      --from-literal='akSecret=xxxxxx'

Adım 2: PV oluşturma

  1. Aşağıdaki içeriğe sahip ossfs2-pv-ak.yaml dosyasını oluşturun.

    Aşağıdaki PV, OSS paketini cnfs-oss-test 20 GiB boyutunda salt okunur bir dosya sistemi olarak bağlar.
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-ossfs2                          # PV name
    spec:
      capacity:
        storage: 20Gi                          # Used for PVC matching only
      accessModes:
        - ReadOnlyMany
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: ossplugin.csi.alibabacloud.com
        volumeHandle: pv-ossfs2                # Must match metadata.name exactly
        nodePublishSecretRef:
          name: oss-secret                     # Secret created in Step 1
          namespace: default
        volumeAttributes:
          fuseType: ossfs2                     # Required: specifies the ossfs 2.0 client
          bucket: cnfs-oss-test                # OSS bucket name
          path: /subpath                       # Subdirectory to mount; leave blank to mount the root
          url: oss-cn-hangzhou-internal.aliyuncs.com  # Internal endpoint (same region); use public endpoint for cross-region
          otherOpts: "-o close_to_open=false"  # false (default): cache metadata for better small-file read performance
                                               # true: fetch fresh metadata on every file open (higher latency)

    nodePublishSecretRef içindeki parametreler:

    Parametre Gerekli Açıklama
    name Evet AccessKey çiftini saklayan Secret'ın adı.
    namespace Evet Secret'ın bulunduğu ad alanı.

    volumeAttributes içindeki parametreler: authType ve roleName kullanılmadığı dışında Yöntem 1, Adım 3 ile aynıdır.

  2. Manifestoyu uygulayın.

    kubectl create -f ossfs2-pv-ak.yaml
  3. PV'nin kullanılabilir olduğunu doğrulayın.

    kubectl get pv pv-ossfs2

    Beklenen çıktı:

    NAME        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   VOLUMEATTRIBUTESCLASS   REASON   AGE
    pv-ossfs2   20Gi       ROX            Retain           Available                          <unset>                          15s

Adım 3: PVC oluşturma

  1. ossfs2-pvc-static.yaml dosyasını oluşturun.

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: pvc-ossfs2
      namespace: default
    spec:
      accessModes:
        - ReadOnlyMany
      resources:
        requests:
          storage: 20Gi
      volumeName: pv-ossfs2
  2. PVC'yi oluşturun.

    kubectl create -f ossfs2-pvc-static.yaml
  3. PVC'nin bağlandığını doğrulayın.

    kubectl get pvc pvc-ossfs2

    Beklenen çıktı:

    NAME         STATUS   VOLUME      CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
    pvc-ossfs2   Bound    pv-ossfs2   20Gi       ROX                           <unset>                 6s

Adım 4: Uygulama dağıtma

Yöntem 1, Adım 5 ile aynı adımları izleyin.

Üretimde uygulama

Kategori Öneri
Güvenlik Tüm üretim iş yükleri için RRSA kullanın. OIDC ve STS aracılığıyla geçici, otomatik olarak döndürülen kimlik bilgileri sağlar ve hassas, Pod düzeyinde izin yalıtımını etkinleştirir.
En az ayrıcalık Uygulamanın ihtiyaç duyduğu izinleri yalnızca gerekli kapsamda (salt okunur veya okuma-yazma) ve belirli paketle sınırlı olarak verin.
Uç nokta Küme ve paket aynı bölgedeyse genel veri aktarım maliyetlerinden kaçınmak ve gecikme süresini azaltmak için dahili uç nokta kullanın.
Bağlama seçenekleri Meta verileri önbelleğe almak ve küçük dosya okumaları için gecikme süresini azaltmak amacıyla -o close_to_open=false (varsayılan) kullanın. Pod'ların başka bir yazarın güncellemelerini anında görmesi gerektiğinde yalnızca -o close_to_open=true seçeneğine geçin.
İş yükü uyumu ossfs 2.0, yapay zeka eğitimi, çıkarım, büyük veri işleme ve otonom sürüş iş yükleri için uygundur. Veritabanları veya ortak düzenleme araçları gibi rastgele yazma gerektiren iş yükleri için uygun değildir.
Tamamlanmamış yüklemeler Gereksiz depolama maliyetlerinden kaçınmak için pakette tamamlanmamış çok parçalı yükleme parçalarını otomatik olarak silen bir yaşam döngüsü kuralı yapılandırın.
Durum denetimleri Her Pod'da bağlama noktası kullanılabilirliğini kontrol etmek için bir canlılık probu yapılandırın. Bağlama başarısız olursa Kubernetes Pod'u yeniden başlatır ve yeniden bağlamayı tetikler.
İzleme Birim performansını takip etmek ve sorunları erken tespit etmek için konteyner depolama izlemeyi kullanın ve uyarılar ayarlayın.

SSS

Başvurular