Tüm Ürünler
Search
Belge Merkezi

Container Service for Kubernetes:Mount a static OSS volume using ossfs 1.0

Son Güncelleme:Oct 06, 2026

PV ve PVC ile statik olarak hazırlanmış bir birim oluşturarak bir OSS paketini kalıcı depolama olarak bağlamak için ossfs 1,0 kullanın. Bu yaklaşım; eşzamanlı okuma, seyrek rastgele yazma ve dosya izinlerini değiştirme gerektiren senaryolar için idealdir ve yapılandırma dosyaları, görüntüler veya videolar gibi kaynaklar için yaygın bir gereksinimdir.

Gereksinimler

Kümeniz ve CSI bileşenleriniz (csi-plugin ve csi-provisioner) aşağıdaki gereksinimleri karşılamalıdır:

  • Service Accounts için RAM Rolleri (RRSA) kullanarak kimlik doğrulama yaparken: Kümeniz sürüm 1,26 veya üzeri olmalı ve CSI sürümü v1.30.4 veya üzeri olmalıdır.

    v1.30.4'ten önceki bir sürümde RRSA özelliğini kullandıysanız gerekli RAM Rolü yetkilendirme yapılandırmasını eklemek için [[Ürün Değişikliği] CSI ossfs sürüm yükseltmesi ve bağlama işlemi optimizasyonu](t2763435.xdita#) konusuna bakın.
  • AccessKey kullanarak kimlik doğrulama yaparken: Bağlama kararlılığını sağlamak için CSI sürümü v1.18.8.45 veya üzerini öneririz.

Kümenizi yükseltmek için Bir kümeyi manuel olarak yükseltme konusuna bakın. CSI bileşenlerini yükseltmek için CSI bileşenlerini yükseltme konusuna bakın.

CSI v1.30.4-* sürümünden başlayarak OSS statik birimlerinin bağlanması csi-provisioner bileşenine bağlıdır .

1. Adım: Bir kimlik doğrulama yöntemi seçin

Kümenizin OSS Bucket kaynaklarına güvenli ve uyumlu bir şekilde erişebilmesini sağlamak için öncelikle bir kimlik doğrulama yöntemi yapılandırmalısınız.

  • RRSA kimlik doğrulaması: Uygulama düzeyinde ayrıntılı izin yalıtımı sağlamak amacıyla Pod'lara geçici ve otomatik olarak döndürülen RAM rolleri dinamik olarak atar. Bu yöntem daha güvenlidir.

  • AccessKey kimlik doğrulaması: Statik, uzun vadeli anahtarları bir Secret içinde saklar. Bu yöntem yapılandırması daha basit olmakla birlikte güvenlik açısından daha zayıftır.

Önemli
  • Sürüm 1,26 veya üzerini çalıştıran kümeler için, AccessKey döndürmeden kaynaklanan iş yükü yeniden başlatmalarını ve ossfs yeniden bağlamalarını önlemek amacıyla RRSA kimlik doğrulamasını öneririz.

  • Bu örnekte kümenin ve OSS Paketinin aynı Alibaba Cloud hesabında olduğu varsayılır. Başka bir hesaba ait bir OSS Paketini bağlamak için RRSA kimlik doğrulamasını kullanmanızı öneririz.

RRSA

1. Kümeniz için RRSA'yı etkinleştirin

  1. ACK Kümeleri sayfasında kümenizin adına tıklayın. Sol gezinme bölmesinde Cluster Information öğesine tıklayın.

  2. Basic Information sekmesinde, Security and Auditing bölümünde RRSA OIDC yanındaki Enabled seçeneğine tıklayın. Ekrandaki talimatları izleyerek RRSA'yı yoğun olmayan saatlerde etkinleştirin.

    Küme durumu Updating durumundan Running durumuna geçtiğinde RRSA etkinleştirilmiş olur.

    Önemli

    RRSA'yı etkinleştirdikten sonra kümede yeni oluşturulan ServiceAccount belirteçlerinin maksimum geçerlilik süresi 12 saatle sınırlıdır.

2. Bir RAM rolü oluşturun ve yetkilendirin

Pod'larınızın RRSA ile kimliği doğrulanmış OSS depolama birimine erişmek için üstlenebileceği bir RAM rolü oluşturun.

Adımları görüntüle

  1. Bir RAM rolü oluşturun.

    1. RAM Konsolu'ndaki Create Role sayfasına gidin. Principal Type için IdP seçin. Ardından Switch to Policy Editor seçeneğine tıklayarak Visual Editor açın.

    2. Principal için IdP seçin. Edit seçeneğine tıklayın ve parametreleri aşağıdaki tabloda açıklandığı gibi yapılandırın.

      Ana parametreleri yapılandırın ve diğer parametreler için varsayılan değerleri koruyun. Daha fazla bilgi için OIDC kimlik sağlayıcısı için RAM rolü oluşturma konusuna bakın.

      Parametre

      Açıklama

      IdP Type

      OIDC.

      IdP

      ack-rrsa-<cluster_id> seçin; burada <cluster_id>, kümenizin kimliğidir.

      Condition

      oidc:sub değerini manuel olarak ekleyin.

      Role Name

      Örneğin demo-role-for-rrsa girin.

  2. Bir erişim ilkesi oluşturun.

    Bu örnekte en az ayrıcalık ilkesi benimsenmiştir. Hedef OSS Paketine erişim izni vermek için özel bir ilke oluşturun. Salt okunur veya okuma/yazma izinleri verebilirsiniz.

    1. RAM Konsolu'ndaki Create Policy sayfasına gidin, JSON Editor moduna geçin ve ilke betiğini yapılandırın.

      Zaten OSS izinlerine sahip bir RAM rolünüz varsa güven ilkesini değiştirerek bu rolü yeniden kullanabilirsiniz. Daha fazla bilgi için Mevcut bir RAM rolünü kullanma ve izin verme konusuna bakın.

      Salt okunur ilke

      <myBucketName> ifadesini gerçek paket adıyla değiştirin.
      {
          "Statement": [
              {
                  "Action": [
                      "oss:Get*",
                      "oss:List*"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                      "acs:oss:*:*:<myBucketName>",
                      "acs:oss:*:*:<myBucketName>/*"
                  ]
              }
          ],
          "Version": "1"
      }

      OSS okuma/yazma ilkesi

      Gerçek paket adıyla <myBucketName> ifadesini değiştirin.
      {
          "Statement": [
              {
                  "Action": "oss:*",
                  "Effect": "Allow",
                  "Resource": [
                      "acs:oss:*:*:<myBucketName>",
                      "acs:oss:*:*:<myBucketName>/*"
                  ]
              }
          ],
          "Version": "1"
      }
    2. (İsteğe bağlı) OSS nesnelerini şifrelemek için KMS tarafından yönetilen belirli bir CMK Kimliği kullanıyorsanız role KMS izinleri de vermeniz gerekir. Daha fazla bilgi için Verileri şifrelemek için KMS tarafından yönetilen belirli bir CMK Kimliği kullanma konusuna bakın.

  3. Erişim ilkesini RAM rolüne ekleyin.

    1. RAM Konsolu'ndaki Roles sayfasına gidin, oluşturduğunuz rolü bulun ve Actions sütununda Attach Policy seçeneğine tıklayın.

    2. Policies bölümünde oluşturduğunuz erişim ilkesini aratıp seçin.

AccessKey

Hedef OSS Paketine erişim izni olan bir RAM kullanıcısı oluşturun ve ardından bu kullanıcı için bir AccessKey edinin.

  1. Bir RAM kullanıcısı oluşturun. Zaten bir RAM kullanıcınız varsa bu adımı atlayabilirsiniz.

    RAM Konsolu'ndaki Create User sayfasına gidin ve ekrandaki talimatları izleyerek bir RAM kullanıcısı oluşturun. Oturum açma adı ve parola gibi parametreleri belirtmeniz gerekir.

  2. Bir erişim ilkesi oluşturun.

    Bu örnekte en az ayrıcalık ilkesi benimsenmiştir. Hedef OSS Paketine erişim izni vermek için özel bir ilke oluşturun. Salt okunur veya okuma/yazma izinleri verebilirsiniz.

    1. RAM Konsolu'ndaki Create Policy sayfasına gidin, JSON Editor moduna geçin ve ilke betiğini yapılandırın.

      Salt okunur ilke

      Gerçek paket adıyla <myBucketName> ifadesini değiştirin.
      {
          "Statement": [
              {
                  "Action": [
                      "oss:Get*",
                      "oss:List*"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                      "acs:oss:*:*:<myBucketName>",
                      "acs:oss:*:*:<myBucketName>/*"
                  ]
              }
          ],
          "Version": "1"
      }

      OSS okuma/yazma ilkesi

      Gerçek paket adıyla <myBucketName> ifadesini değiştirin.
      {
          "Statement": [
              {
                  "Action": "oss:*",
                  "Effect": "Allow",
                  "Resource": [
                      "acs:oss:*:*:<myBucketName>",
                      "acs:oss:*:*:<myBucketName>/*"
                  ]
              }
          ],
          "Version": "1"
      }

      Konsolda bir PV oluşturmak istiyorsanız oss:ListBuckets iznine de ihtiyacınız vardır.

      {
        "Effect": "Allow",
        "Action": "oss:ListBuckets",
        "Resource": "*"
      }
    2. (İsteğe bağlı) OSS nesnelerini şifrelemek için KMS tarafından yönetilen belirli bir CMK Kimliği kullanıyorsanız RAM kullanıcısına KMS izinleri de vermeniz gerekir. Daha fazla bilgi için Verileri şifrelemek için KMS tarafından yönetilen belirli bir CMK Kimliği kullanma konusuna bakın.

  3. Erişim ilkesini RAM kullanıcısına ekleyin.

    1. RAM Konsolu'ndaki Users sayfasına gidin, oluşturduğunuz kullanıcıyı bulun ve Actions sütununda Add Permissions seçeneğine tıklayın.

    2. Policies bölümünde oluşturduğunuz erişim ilkesini aratıp seçin.

  4. Oluşturduğunuz AccessKey, PV için bir Secret olarak saklanır.

    1. RAM Konsolu'ndaki Users sayfasına gidin, RAM kullanıcınızın adına tıklayın ve ardından AccessKey bölümünde Create AccessKey seçeneğine tıklayın.

    2. Ekrandaki talimatları izleyerek bir AccessKey oluşturun. AccessKey Kimliğini ve AccessKey Gizli Anahtarını kopyalayın ve güvenli bir şekilde saklayın.

2. Adım: Bir PV oluşturun

Mevcut bir OSS paketini kümenize kaydetmek için bir PV oluşturun.

RRSA Kullan

  1. pv-oss-rrsa.yaml adlı bir dosya oluşturun.

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      # The PV name.
      name: pv-oss   
      # The PV labels.
      labels:    
        alicloud-pvname: pv-oss
    spec:
      capacity:
        # The capacity of the persistent volume.
        storage: 10Gi  
      # The access mode.
      accessModes:  
        - ReadOnlyMany
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: ossplugin.csi.alibabacloud.com
        # Must be the same as the PV name (metadata.name).
        volumeHandle: pv-oss  
        volumeAttributes:
          # Replace with your bucket name.
          bucket: "your-bucket-name"  
          # Replace with your bucket region.
          region: cn-hangzhou
          # The root directory or a subdirectory of the bucket to mount.
          path: /  
          # The endpoint of the region where the bucket is located.
          url: "https://oss-cn-hangzhou-internal.aliyuncs.com"  
          otherOpts: "-o umask=022 -o max_stat_cache_size=100000 -o allow_other"
          authType: "rrsa"
          # The RAM role that you previously created or modified.
          roleName: "demo-role-for-rrsa"
          # The signature version for OSS requests.
          sigVersion: "v4"  

    Parametre

    Açıklama

    storage

    OSS kalıcı biriminin kapasitesi. Bu değer yalnızca PV'yi bir PVC ile eşleştirmek için kullanılır.

    accessModes

    Erişim modunu belirtir. Geçerli değerler arasında ReadOnlyMany ve ReadWriteMany bulunur.

    Bu parametreyi ReadOnlyMany olarak ayarlarsanız ossfs, OSS paketini salt okunur modda bağlar.

    persistentVolumeReclaimPolicy

    PV'nin geri kazanma ilkesi. OSS kalıcı birimleri yalnızca Retain değerini destekler. Bu, bir PVC silindiğinde PV'nin ve OSS paketindeki verilerin korunduğu anlamına gelir.

    driver

    Sürücü türü. Alibaba Cloud OSS CSI eklentisini kullanırken bu alanı ossplugin.csi.alibabacloud.com olarak ayarlayın.

    volumeHandle

    metadata.name içinde belirtilen PV adıyla aynı olmalıdır.

    bucket

    Bağlanacak OSS paketi.

    region

    OSS imza v4 kullanırken bunu paketin bulunduğu OSS bölgesine ayarlayın. OSS bölgesini sorgulamak için bkz. Bir paketin bölgesini sorgulama.

    Bu parametre ayarlandığında OSS imza sürümü olarak otomatik olarak v4 kullanılır.

    path

    CSI bileşeni sürümü v1.14.8.32-c77e277b-aliyun veya üzeri olmalıdır.

    Paketin kök dizinine göre bağlama yolu. Varsayılan değer / olup tüm paketi bağlar.

    ossfs sürümü 1,91'den önceyse belirtilen path OSS paketinde mevcut olmalıdır. Daha fazla bilgi için bkz. ossfs 1,91 ve sonraki sürümlerdeki yeni özellikler.

    url

    OSS paketi için erişim uç noktası.

    • Küme düğümleriniz ve paket aynı bölgedeyse veya bir Sanal Özel Cloud (VPC) bağlantısı kurulmuşsa dahili uç nokta kullanın.

    • Bağlama düğümü ve paket farklı bölgelerdeyse genel uç nokta kullanın.

    Farklı erişim uç noktaları için yaygın biçimler şunlardır:

    • Dahili: https://oss-{{regionName}}-internal.aliyuncs.com.

      Not

      vpc100-oss-{{regionName}}.aliyuncs.com dahili erişim uç noktası biçimi kullanımdan kaldırılmıştır. En kısa sürede yeni biçime geçin.

    • Genel: https://oss-{{regionName}}.aliyuncs.com.

    Güvenlik nedeniyle HTTPS üzerinden OSS'ye erişmeyi öneririz. Bunun yerine HTTP kullanmak için yukarıdaki biçimdeki https:// ön ekini http:// ile değiştirin.

    otherOpts

    OSS kalıcı birimi için özel parametreler; biçim -o -o şeklindedir. Örneğin: -o umask=022 -o max_stat_cache_size=100000 -o allow_other.

    Ayrıntılar için genişletin

    • umask: Dosyalar ve dizinler için izin maskesini ayarlar.

      Örneğin umask=022 dosya izinlerini 755 olarak değiştirir. Bu, SDK'lar veya OSS konsolu gibi başka yöntemlerle yüklenen ve varsayılan izni 640 olan dosyaların izin sorununu çözer. Okuma/yazma ayrımı veya çoklu kullanıcı erişimi için bu parametreyi yapılandırmanızı öneririz.

    • max_stat_cache_size: Meta veri önbelleği girdilerinin üst sınırını ayarlar; örneğin 100000. Meta veriler bellekte önbelleğe alınarak ls ve stat gibi işlemlerin performansı artırılır.

      Ancak bu önbellek, OSS konsolu, SDK'lar veya ossutil aracılığıyla yapılan dosya değişikliklerini anında algılayamaz. Bu durum uygulamaların tutarsız verileri okumasına neden olabilir. Sıkı veri tutarlılığı gereksinimleriniz varsa önbelleği devre dışı bırakmak için bu parametreyi 0 olarak ayarlayın veya stat_cache_expire parametresini kullanarak önbellek sona erme süresini azaltın. Ancak bu, okuma performansını düşürebilir.

    • allow_other: Birimi bağlayan kullanıcı dışındaki kullanıcıların bağlama yolundaki dosyalara ve dizinlere erişmesine olanak tanır. Bu, bağlama yapmayan kullanıcıların da verilere erişmesi gereken çoklu kullanıcı paylaşımlı ortamlar için uygundur.

    İsteğe bağlı parametreler hakkında daha fazla bilgi için bkz. Bağlama seçenekleri ve ossfs 1,0 yapılandırması için en iyi uygulamalar.

    authType

    Kimlik doğrulama için RRSA kullanmak üzere bu parametreyi rrsa olarak ayarlayın.

    roleName

    Daha önce oluşturduğunuz veya değiştirdiğiniz RAM rolü.

    Farklı PV'ler için farklı izinler yapılandırmak üzere farklı RAM rolleri oluşturabilir ve PV'lerde farklı roleName değerleri belirtebilirsiniz.

    sigVersion

    OSS sunucusuna gönderilen istekler için imza sürümü.

    Varsayılan RRSA kimlik doğrulaması gereksinimlerinizi karşılamıyorsa (örneğin varsayılan olmayan bir ServiceAccount veya üçüncü taraf OIDC kullanıyorsanız) belirli bir ARN veya ServiceAccount belirtmek için PV yapılandırmasını değiştirebilirsiniz. Daha fazla bilgi için RRSA kimlik doğrulamasıyla belirli ARN'ler veya ServiceAccount'lar nasıl kullanılır? konusuna bakın.
  2. PV'yi oluşturun.

    kubectl create -f pv-oss-rrsa.yaml

AccessKey Kullan

kubectl Kullan

  1. 1. Adım adresindeki AccessKey'i PV için bir Kubernetes Secret'ı olarak depolamak üzere oss-secret.yaml adlı bir dosya oluşturun.

    apiVersion: v1
    kind: Secret
    metadata:
      name: oss-secret
      # Must match the namespace of the application.
      namespace: default
    stringData:
      # Replace with your AccessKey ID.
      akId: <your AccessKey ID>
      # Replace with your AccessKey secret.
      akSecret: <your AccessKey Secret>
  2. Secret'ı oluşturun.

    kubectl create -f  oss-secret.yaml
  3. pv-oss-ram.yaml adlı bir dosya oluşturun.

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      # The PV name.
      name: pv-oss
      # The PV labels.
      labels:
        alicloud-pvname: pv-oss
    spec:
      capacity:
        storage: 10Gi
      accessModes:
        - ReadOnlyMany
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: ossplugin.csi.alibabacloud.com
        # Must be the same as the PV name (metadata.name).
        volumeHandle: pv-oss  
        # Specifies the Secret object that provides the AccessKey credentials.
        nodePublishSecretRef:
          name: oss-secret
          namespace: default
        volumeAttributes:
          # Replace with your bucket name.
          bucket: "your-bucket-name" 
          # Replace with your bucket region.
          region: cn-hangzhou 
          # The signature version for OSS requests. "v4" is recommended.
          sigVersion: "v4"
          url: "http://oss-cn-hangzhou-internal.aliyuncs.com"
          otherOpts: "-o umask=022 -o max_stat_cache_size=100000 -o allow_other"
          path: "/"

    Parametre

    Açıklama

    storage

    OSS kalıcı biriminin kapasitesi. Bu değer yalnızca PV'yi bir PVC ile eşleştirmek için kullanılır.

    accessModes

    Erişim modunu belirtir. Geçerli değerler arasında ReadOnlyMany ve ReadWriteMany bulunur.

    Bu parametreyi ReadOnlyMany olarak ayarlarsanız ossfs, OSS paketini salt okunur modda bağlar.

    persistentVolumeReclaimPolicy

    PV'nin geri kazanma ilkesi. OSS kalıcı birimleri yalnızca Retain değerini destekler. Bu, bir PVC silindiğinde PV'nin ve OSS paketindeki verilerin korunduğu anlamına gelir.

    driver

    Sürücü türü. Alibaba Cloud OSS CSI eklentisini kullanırken bu alanı ossplugin.csi.alibabacloud.com olarak ayarlayın.

    nodePublishSecretRef

    PV'yi bağlamak için AccessKey kimlik bilgilerini içeren Secret.

    volumeHandle

    metadata.name içinde belirtilen PV adıyla aynı olmalıdır.

    bucket

    Bağlanacak OSS paketi.

    region

    OSS imza v4 kullanırken bunu paketin bulunduğu OSS bölgesine ayarlayın. OSS bölgesini sorgulamak için bkz. Bir paketin bölgesini sorgulama.

    Bu parametre ayarlandığında OSS imza sürümü olarak otomatik olarak v4 kullanılır.

    url

    OSS paketi için erişim uç noktası.

    • Küme düğümleriniz ve paket aynı bölgedeyse veya bir Sanal Özel Cloud (VPC) bağlantısı kurulmuşsa dahili uç nokta kullanın.

    • Bağlama düğümü ve paket farklı bölgelerdeyse genel uç nokta kullanın.

    Farklı erişim uç noktaları için yaygın biçimler şunlardır:

    • Dahili: http://oss-{{regionName}}-internal.aliyuncs.com veya https://oss-{{regionName}}-internal.aliyuncs.com.

      Not

      vpc100-oss-{{regionName}}.aliyuncs.com dahili erişim uç noktası biçimi kullanımdan kaldırılmıştır. En kısa sürede yeni biçime geçin.

    • Genel: http://oss-{{regionName}}.aliyuncs.com veya https://oss-{{regionName}}.aliyuncs.com.

    otherOpts

    OSS kalıcı birimi için özel parametreler; biçim -o -o şeklindedir. Örneğin: -o umask=022 -o max_stat_cache_size=100000 -o allow_other.

    Ayrıntılar için genişletin

    • umask: Dosyalar ve dizinler için izin maskesini ayarlar.

      Örneğin umask=022 dosya izinlerini 755 olarak değiştirir. Bu, SDK'lar veya OSS konsolu gibi başka yöntemlerle yüklenen ve varsayılan izni 640 olan dosyaların izin sorununu çözer. Okuma/yazma ayrımı veya çoklu kullanıcı erişimi için bu parametreyi yapılandırmanızı öneririz.

    • max_stat_cache_size: Meta veri önbelleği girdilerinin üst sınırını ayarlar; örneğin 100000. Meta veriler bellekte önbelleğe alınarak ls ve stat gibi işlemlerin performansı artırılır.

      Ancak bu önbellek, OSS konsolu, SDK'lar veya ossutil aracılığıyla yapılan dosya değişikliklerini anında algılayamaz. Bu durum uygulamaların tutarsız verileri okumasına neden olabilir. Sıkı veri tutarlılığı gereksinimleriniz varsa önbelleği devre dışı bırakmak için bu parametreyi 0 olarak ayarlayın veya stat_cache_expire parametresini kullanarak önbellek sona erme süresini azaltın. Ancak bu, okuma performansını düşürebilir.

    • allow_other: Birimi bağlayan kullanıcı dışındaki kullanıcıların bağlama yolundaki dosyalara ve dizinlere erişmesine olanak tanır. Bu, bağlama yapmayan kullanıcıların da verilere erişmesi gereken çoklu kullanıcı paylaşımlı ortamlar için uygundur.

    İsteğe bağlı parametreler hakkında daha fazla bilgi için bkz. Bağlama seçenekleri ve ossfs 1,0 yapılandırması için en iyi uygulamalar.

    path

    CSI bileşeni sürümü v1.14.8.32-c77e277b-aliyun veya üzeri olmalıdır.

    Paketin kök dizinine göre bağlama yolu. Varsayılan değer / olup tüm paketi bağlar.

    ossfs sürümü 1,91'den önceyse belirtilen path OSS paketinde mevcut olmalıdır. Daha fazla bilgi için bkz. ossfs 1,91 ve sonraki sürümlerdeki yeni özellikler.

    sigVersion

    OSS sunucusuna gönderilen istekler için imza sürümü.

  4. PV'yi oluşturun.

    kubectl create -f pv-oss-ram.yaml

Konsol

  1. 1. Adım adresindeki AccessKey'i PV için bir Kubernetes Secret'ı olarak depolayın.

    1. ACK Kümeleri sayfasında kümenizin adına tıklayın. Sol gezinme bölmesinde Configurations > Secrets yolunu izleyin.

    2. Create from YAML seçeneğine tıklayın ve ekrandaki talimatları izleyerek Secret'ı oluşturun.

      apiVersion: v1
      kind: Secret
      metadata:
        name: oss-secret
        # Must match the namespace of the application.
        namespace: default
      stringData:
        # Replace with your AccessKey ID.
        akId: <your AccessKey ID>
        # Replace with your AccessKey secret.
        akSecret: <your AccessKey Secret>
  2. ACK Kümeleri sayfasında kümenizin adına tıklayın. Sol gezinme bölmesinde Volumes > Persistent Volumes yolunu izleyin.

  3. Persistent Volumes sayfasında Create seçeneğine tıklayın. PV Type değerini OSS olarak ayarlayın, istendiği gibi parametreleri yapılandırın ve yapılandırmayı gönderin.

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

    Parametre

    Açıklama

    Toplam kapasite

    Kalıcı birimin kapasitesi.

    Access Mode

    Erişim modunu belirtir. Geçerli değerler arasında ReadOnlyMany ve ReadWriteMany bulunur.

    Bu parametreyi ReadOnlyMany olarak ayarlarsanız ossfs, OSS paketini salt okunur modda bağlar.

    Erişim kimlik bilgisi

    1. Adım adresindeki AccessKey Kimliğini ve AccessKey gizli anahtarını içeren Secret.

    Optional Parameters:

    OSS kalıcı birimi için özel parametreler; biçim -o -o şeklindedir. Örneğin: -o umask=022 -o max_stat_cache_size=100000 -o allow_other.

    Ayrıntılar için genişletin

    • umask: Dosyalar ve dizinler için izin maskesini ayarlar.

      Örneğin umask=022 dosya izinlerini 755 olarak değiştirir. Bu, SDK'lar veya OSS konsolu gibi başka yöntemlerle yüklenen ve varsayılan izni 640 olan dosyaların izin sorununu çözer. Okuma/yazma ayrımı veya çoklu kullanıcı erişimi için bu parametreyi yapılandırmanızı öneririz.

    • max_stat_cache_size: Meta veri önbelleği girdilerinin üst sınırını ayarlar; örneğin 100000. Meta veriler bellekte önbelleğe alınarak ls ve stat gibi işlemlerin performansı artırılır.

      Ancak bu önbellek, OSS konsolu, SDK'lar veya ossutil aracılığıyla yapılan dosya değişikliklerini anında algılayamaz. Bu durum uygulamaların tutarsız verileri okumasına neden olabilir. Sıkı veri tutarlılığı gereksinimleriniz varsa önbelleği devre dışı bırakmak için bu parametreyi 0 olarak ayarlayın veya stat_cache_expire parametresini kullanarak önbellek sona erme süresini azaltın. Ancak bu, okuma performansını düşürebilir.

    • allow_other: Birimi bağlayan kullanıcı dışındaki kullanıcıların bağlama yolundaki dosyalara ve dizinlere erişmesine olanak tanır. Bu, bağlama yapmayan kullanıcıların da verilere erişmesi gereken çoklu kullanıcı paylaşımlı ortamlar için uygundur.

    İsteğe bağlı parametreler hakkında daha fazla bilgi için bkz. Bağlama seçenekleri ve ossfs 1,0 yapılandırması için en iyi uygulamalar.

    Bucket ID:

    Kullanılacak OSS paketi.

    Konsol yalnızca yapılandırılan AccessKey'in erişebileceği paketleri görüntüler.

    OSS yolu

    CSI bileşeni sürümü v1.14.8.32-c77e277b-aliyun veya üzeri olmalıdır.

    Paketin kök dizinine göre bağlama yolu. Varsayılan değer / olup tüm paketi bağlar.

    ossfs sürümü 1,91'den önceyse belirtilen path OSS paketinde mevcut olmalıdır. Daha fazla bilgi için bkz. ossfs 1,91 ve sonraki sürümlerdeki yeni özellikler.

    Uç Nokta

    OSS paketi için erişim uç noktası.

    • Küme düğümleriniz ve paket aynı bölgedeyse veya bir Sanal Özel Cloud (VPC) bağlantısı kurulmuşsa dahili uç nokta kullanın.

    • Bağlama düğümü ve paket farklı bölgelerdeyse genel uç nokta kullanın.

    Farklı erişim uç noktaları için yaygın biçimler şunlardır:

    • Dahili: http://oss-{{regionName}}-internal.aliyuncs.com veya https://oss-{{regionName}}-internal.aliyuncs.com.

      Not

      vpc100-oss-{{regionName}}.aliyuncs.com dahili erişim uç noktası biçimi kullanımdan kaldırılmıştır. En kısa sürede yeni biçime geçin.

    • Genel: http://oss-{{regionName}}.aliyuncs.com veya https://oss-{{regionName}}.aliyuncs.com.

    Konsol varsayılan olarak dahili ağ üzerinden HTTP kullanarak OSS'ye erişir. HTTPS kullanmak için PV'yi kubectl kullanarak oluşturmanız gerekir.

3. Adım: Bir PVC oluşturun

Uygulamanız için depolama kapasitesi talep etmek amacıyla bir Kalıcı Birim Talebi (PVC) oluşturun.

kubectl

  1. pvc-oss.yaml adlı bir dosya oluşturun.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      # The name of the PVC.
      name: pvc-oss
      namespace: default
    spec:
      # Configure the access mode. ReadOnlyMany indicates that ossfs mounts the OSS bucket in read-only mode.
      accessModes:
        - ReadOnlyMany
      resources:
        requests:
          # The requested storage capacity. This value cannot exceed the capacity of the PersistentVolume.
          storage: 10Gi
      # Add this line to explicitly specify that no StorageClass is used.
      storageClassName: ""   
      selector:
        matchLabels:
          # Match the PV by its label.
          alicloud-pvname: pv-oss
  2. PVC'yi oluşturun.

    kubectl create -f pvc-oss.yaml
  3. PVC'nin durumunu kontrol edin.

    kubectl get pvc pvc-oss

    Çıktı, PVC'nin PV'ye bağlı olduğunu onaylar.

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

Konsol

  1. ACK Kümeleri sayfasında kümenizin adına tıklayın. Sol gezinme bölmesinde Volumes > Persistent Volume Claims yolunu izleyin.

  2. Persistent Volume Claims sayfasında Create seçeneğine tıklayın, PVC Type olarak OSS'i seçin ve ekrandaki talimatları izleyerek parametreleri yapılandırıp isteği gönderin.

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

    Parametre

    Açıklama

    Allocation Mode

    Use Existing PersistentVolume seçeneğini belirleyin.

    Henüz bir kalıcı birim oluşturmadıysanız Allocation Mode değerini Create PV olarak ayarlayabilir ve yeni birim için parametreleri yapılandırabilirsiniz.

    Toplam kapasite

    PVC'nin depolama kapasitesi; bu değer Kalıcı Birimin kapasitesini aşamaz.

4. Adım: Bir uygulama oluşturun ve bir birim bağlayın

Birimi bağlamak için uygulamanızda PVC'ye başvurun.

kubectl

  1. Bir oss-workload.yaml dosyası oluşturun.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: oss-workload
      labels:
        app: nginx
    spec:
      replicas: 2
      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:
              # The mount path in the container.
              - name: pvc-oss
                mountPath: "/data"
            # Configure a health check.
            livenessProbe:
              exec:
                command:
                - ls
                - /data
              initialDelaySeconds: 30
              periodSeconds: 30
          volumes:
            - name: pvc-oss
              persistentVolumeClaim:
                # Reference the PVC that you created.
                claimName: pvc-oss
  2. Uygulamayı oluşturun.

    kubectl create -f oss-workload.yaml
  3. Bağlamayı doğrulayın.

    • Pod'ların çalıştığını onaylayın.

      kubectl get pod -l app=nginx
    • Bir Pod'a erişin ve bağlama noktasını kontrol edin.

      kubectl exec -it <pod-name> -- ls /data

      Çıktıda OSS bağlama yolundaki dosyalar listelenmelidir.

Konsol

  1. ACK Kümeleri sayfasında kümenizin adına tıklayın. Sol gezinme bölmesinde Workloads > Deployments yolunu izleyin.

  2. Deployments sayfasının sağ üst köşesinde Create from Image seçeneğine tıklayın.

  3. Create from Image seçeneğine tıklayın ve ekrandaki talimatları izleyerek uygulama parametrelerini yapılandırın.

    Ana parametreler aşağıdaki tabloda açıklanmıştır. Diğer parametreler için varsayılan değerleri kullanabilirsiniz. Daha fazla bilgi için Dağıtım oluşturma konusuna bakın.

    Yapılandırma sayfası

    Parametre

    Açıklama

    Basic Information

    Replicas:

    Dağıtım için Pod kopya sayısı.

    Container

    Görüntü adı

    Uygulama için konteyner görüntüsünün adresi; örneğin anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6.

    Required Resources

    Her konteynere tahsis edilecek vCPU ve bellek miktarı.

    Volumes

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

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

    • Container Path: Birimin bağlanacağı konteyner içindeki yol; örneğin /data.

    Labels and Annotations

    Pod etiketi

    Örneğin anahtarı 'app' ve değeri 'nginx' olarak ayarlayın.

  4. Uygulama dağıtım durumunu kontrol edin.

    Deployments sayfasında uygulamanızın adına tıklayın. Pods sekmesinde Pod'ların Running durumunda olduğunu doğrulayın.

5. Adım: Paylaşılan ve kalıcı depolamayı doğrulayın

Paylaşılan depolamayı doğrulayın

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

  1. Uygulama Pod'larının adlarını alın.

    kubectl get pod -l app=nginx
  2. Bu örnekte oss-workload-66fbb85b67-d**** Pod'u kullanılmaktadır:

    • ReadWriteMany: /data yolunda tmpfile dosyasını oluşturun.

      kubectl exec oss-workload-66fbb85b67-d**** -- touch /data/tmpfile
    • ReadOnlyMany: OSS konsolunu kullanarak veya cp ile dosya yükleyerek tmpfile dosyasını OSS paketindeki ilgili yola yükleyin.

  3. Dosyayı başka bir Pod'un bağlama yolunda kontrol edin.

    Örnek olarak bağlama yolu data olan oss-workload-66fbb85b67-l**** adlı bir Pod alın.

    kubectl exec oss-workload-66fbb85b67-l**** -- ls /data | grep tmpfile

    Dosyanın çıktıda görünmesi Pod'ların verileri paylaşabileceğini onaylar.

    tmpfile
    Beklenen çıktıyı görmezseniz CSI bileşeni sürümünüzün v1.20.7 veya üzeri olduğundan emin olun.

Kalıcı depolamayı doğrulayın

Kalıcı depolamayı doğrulamak için bir Pod'u silin ve ardından Pod otomatik olarak yeniden oluşturulduktan sonra dosyanın kaldığını kontrol edin.

  1. Bir uygulama Pod'unu silin. Dağıtım denetleyicisi onu otomatik olarak yeniden oluşturur.

    kubectl delete pod oss-workload-66fbb85b67-d****
  2. Pod'ların durumunu kontrol edin. Yeni Pod'un başlamasını ve Running durumuna gelmesini bekleyin.

    kubectl get pod -l app=nginx
  3. /data yolundaki dosyaları görüntüleyin.

    Bu örnekte bağlama yolu data olan oss-workload-66fbb85b67-z**** adlı bir Pod kullanılmaktadır.

    kubectl exec oss-workload-66fbb85b67-z**** -- ls /data | grep tmpfile

    Çıktıda tmpfile dosyasının hâlâ var olduğu görülür; bu da Pod yeniden oluşturulduktan sonra bile verilerin kalıcı olduğunu onaylar.

    tmpfile

Bilinen etkiler

  • Veri bütünlüğü riskleri

    • Eşzamanlı yazma tutarlılığı riski: Yazma kararlılığını artırmak için CSI bileşenini v1.28 veya üzeri bir sürüme yükseltmenizi öneririz. Ancak tek dosyalı eşzamanlı yazma senaryolarında OSS "üzerine yazarak yükleme" özelliği yine de verilerin üzerine yazabilir. Veri tutarlılığını uygulama katmanında sağlamalısınız.

    • Veri senkronizasyonu ve yanlışlıkla silme riski: Bir birim bağlandığında bir uygulama Pod'unda veya ana bilgisayar düğümünde bağlama yolundaki dosyaların silinmesi veya değiştirilmesi bu değişiklikleri doğrudan OSS Paketindeki kaynak dosyalarla senkronize eder. Yanlışlıkla veri silinmesini önlemek için OSS Paketinizde sürüm oluşturmayı etkinleştirmenizi öneririz.

  • Uygulama kararlılığı riskleri

    • OOM riski: Çok sayıda dosyada (örneğin düğüm belleğine bağlı olarak 100.000'den fazla) ilk kez readdir işlemi (örneğin kabuk betiğindeki ls komutu) gerçekleştirdiğinizde ossfs tüm meta verileri bir kerede yükler ve büyük miktarda bellek tüketir. Bu durum işlemin OOM Killed olmasına ve bağlama noktasının kullanılamaz hale gelmesine neden olabilir.

      Bu riski azaltmak için OSS Paketinin bir alt dizinini bağlamanızı veya dizin yapınızı optimize etmenizi öneririz.

    • Uzatılmış bağlama süresi: Bir uygulamada securityContext.fsgroup yapılandırılması kubelet'in bir birim bağlarken dosya izinlerini özyinelemeli olarak değiştirmesine (chmod/chown) neden olur. Birimde çok sayıda dosya varsa bağlama süresi önemli ölçüde uzar ve bu da ciddi Pod başlatma gecikmelerine yol açabilir.

      Bu parametreyi yapılandırmanız gerekirse ancak bağlama süresini azaltmak istiyorsanız OSS birimleri için artan bağlama süresi konusuna bakın.

    • Anahtar geçersiz kılma riski (AccessKey kimlik doğrulaması): Bir PV tarafından başvurulan bir AccessKey geçersiz hale gelirse veya izinleri değişirse ilişkili uygulama hemen erişimi kaybeder.

      Erişimi geri yüklemek için Secret'taki kimlik bilgilerini güncellemeniz ve yeniden bağlamayı zorlamak için uygulama Pod'unu yeniden başlatmanız gerekir. Bu durum bir hizmet kesintisine neden olur; bu nedenle işlemi bir bakım penceresi sırasında gerçekleştirin. Daha fazla bilgi için Çözümler konusuna bakın.

  • Maliyet riskleri

Kaynak temizleme

Beklenmeyen ücretlerden kaçınmak ve veri güvenliğini sağlamak için kullanılmayan kaynakları serbest bırakmak üzere aşağıdaki adımları izleyin.

  1. İş yükünü silin

    • Eylem: PVC'yi kullanan Dağıtımlar ve StatefulSet'ler gibi tüm uygulamaları silin. Bu eylem Pod'ları durdurur ve birimin bağlantısını kaldırır.

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

  2. PVC'yi silin

    • Eylem: Uygulamanızla ilişkili PVC'yi silin. OSS statik PV için geri kazanma ilkesi (persistentVolumeReclaimPolicy) yalnızca Retain değerini destekler. Bu nedenle PVC'yi sildiğinizde buna bağlı PV Released durumuna geçer ancak arka plandaki OSS Paketi ve verileri korunur.

    • Örnek komut: kubectl delete pvc <YOUR-PVC-NAME>

  3. PV'yi silin

    • Eylem: Released PV'yi silin. Bu eylem yalnızca PV kaynağını Kubernetes'ten kaldırır ve arka plandaki OSS Paketindeki verileri silmez.

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

  4. Secret'ı silin (İsteğe bağlı)

    • Eylem: OSS birimini bağlamak için kullanılan Secret'ı silin. Bu eylem yalnızca Secret'ı Kubernetes'ten kaldırır ve arka plandaki OSS Paketinden herhangi bir veri silmez.

    • Örnek komut: kubectl delete secret <YOUR-SECRET-NAME>

İlgili belgeler

  • Performanslarını ve QoS'larını iyileştirmek için CNFS kullanarak OSS birimlerini yönetin. Daha fazla bilgi için OSS birimlerinin yaşam döngüsünü yönetme konusuna bakın.

  • OSS'deki hassas verileri hareketsiz halde korumak için sunucu taraflı şifrelemeyi etkinleştirin. Daha fazla bilgi için ossfs 1,0 birimlerini şifreleme konusuna bakın.

  • ossfs ve OSS ile ilgili sık sorulan sorular için ossfs 1,0 (varsayılan) ve ossfs 1,0 birimi SSS konularına bakın.

  • Birim anormalliklerini veya performans darboğazlarını zamanında tespit etmek için konteyner depolama izlemeyi etkinleştirin ve uyarıları yapılandırın.

  • ossfs 1,0, rastgele ve eşzamanlı yazmalar için ossfs 2.0 sürümünden daha güçlü veri tutarlılığı sağlar. Ancak ossfs 2.0 sıralı okuma ve yazma işlemleri için daha iyi performans sunar.