All Products
Search
Document Center

Container Service for Kubernetes:Pasang bucket OSS menggunakan volume dinamis ossfs 1.0

Last Updated:Sep 21, 2026

ossfs 1.0 mendukung dynamic provisioning, yang secara otomatis membuat persistent volume (PV) dan memasang OSS Bucket berdasarkan StorageClass dan PersistentVolumeClaim (PVC). Fitur ini menghilangkan kebutuhan konfigurasi PV secara manual, sangat menyederhanakan manajemen penyimpanan, dan ideal untuk lingkungan multi-tenant atau skenario yang memerlukan penyediaan penyimpanan sering dan sesuai permintaan.

Persyaratan

Kluster dan komponen CSI Anda (csi-plugin dan csi-provisioner) harus memenuhi persyaratan berikut:

  • Untuk autentikasi menggunakan RAM Roles for Service Accounts (RRSA): Kluster Anda harus versi 1.26 atau lebih baru, dan versi CSI harus v1.30.4 atau lebih baru.

    Jika Anda menggunakan fitur RRSA pada versi sebelum v1.30.4, lihat [Perubahan Produk] Peningkatan versi CSI ossfs dan optimalisasi proses pemasangan untuk menambahkan konfigurasi otorisasi Peran RAM yang diperlukan.
  • Untuk autentikasi menggunakan AccessKey: Untuk memastikan stabilitas pemasangan, kami merekomendasikan versi CSI v1.18.8.45 atau lebih baru.

Untuk meningkatkan kluster Anda, lihat Tingkatkan kluster secara manual. Untuk meningkatkan komponen CSI, lihat Tingkatkan komponen CSI.

Mulai dari CSI v1.30.4-*, pemasangan volume statis OSS bergantung pada komponen csi-provisioner.

Langkah 1: Pilih metode autentikasi

Untuk memastikan kluster Anda dapat mengakses resource OSS Bucket secara aman dan sesuai kebijakan, Anda harus terlebih dahulu mengonfigurasi metode autentikasi.

  • Autentikasi RRSA: Memberikan peran RAM sementara yang berotasi otomatis kepada Pod secara dinamis untuk mengaktifkan isolasi izin tingkat aplikasi yang detail halus. Metode ini lebih aman.

  • Autentikasi AccessKey: Menyimpan kunci statis jangka panjang dalam Secret. Metode ini lebih mudah dikonfigurasi tetapi kurang aman.

Penting
  • Untuk kluster yang menjalankan versi 1.26 atau lebih baru, kami merekomendasikan autentikasi RRSA untuk mencegah restart workload dan remount ossfs akibat rotasi AccessKey.

  • Contoh ini mengasumsikan bahwa kluster dan OSS Bucket berada dalam Akun Alibaba Cloud yang sama. Untuk memasang OSS Bucket milik akun lain, kami merekomendasikan menggunakan autentikasi RRSA.

RRSA

1. Aktifkan RRSA untuk kluster Anda

  1. Pada halaman ACK Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Cluster Information.

  2. Pada tab Basic Information, di bagian Security and Auditing, klik Enabled di sebelah kanan RRSA OIDC. Ikuti petunjuk di layar untuk mengaktifkan RRSA selama jam sepi.

    Saat status kluster berubah dari Updating menjadi Running, RRSA telah diaktifkan.

    Penting

    Setelah Anda mengaktifkan RRSA, periode validitas maksimum token ServiceAccount yang baru dibuat di kluster dibatasi hingga 12 jam.

2. Buat dan otorisasi peran RAM

Buat peran RAM yang dapat diasumsikan oleh Pod Anda untuk akses ke volume penyimpanan OSS yang diautentikasi RRSA.

Lihat langkah-langkahnya

  1. Buat peran RAM.

    1. Buka halaman Create Role di Konsol RAM. Untuk Principal Type, pilih IdP. Lalu, klik Switch to Policy Editor untuk membuka Visual Editor.

    2. Untuk Principal, pilih IdP. Klik Edit dan konfigurasikan parameter seperti yang dijelaskan dalam tabel berikut.

      Konfigurasikan parameter utama dan gunakan nilai default untuk parameter lainnya. Untuk informasi lebih lanjut, lihat Buat peran RAM untuk penyedia identitas OIDC.

      Parameter

      Deskripsi

      IdP Type

      OIDC.

      IdP

      Pilih ack-rrsa-<cluster_id>, di mana <cluster_id> adalah ID kluster Anda.

      Condition

      Tambahkan secara manual oidc:sub.

      Role Name

      Misalnya, masukkan demo-role-for-rrsa.

  2. Buat kebijakan akses.

    Contoh ini mengikuti prinsip hak istimewa minimal. Buat kebijakan kustom untuk memberikan akses ke bucket OSS target. Anda dapat memberikan izin read-only atau read/write.

    1. Buka halaman Create Policy di Konsol RAM, alihkan ke JSON Editor, dan konfigurasikan skrip kebijakan.

      Jika Anda sudah memiliki peran RAM dengan izin OSS, Anda dapat menggunakannya kembali dengan memodifikasi kebijakan kepercayaannya. Untuk informasi lebih lanjut, lihat Gunakan peran RAM yang ada dan berikan izin.
      Kebijakan read-only
      Ganti <myBucketName> dengan nama bucket yang sebenarnya.
      {
          "Statement": [
              {
                  "Action": [
                      "oss:Get*",
                      "oss:List*"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                      "acs:oss:*:*:<myBucketName>",
                      "acs:oss:*:*:<myBucketName>/*"
                  ]
              }
          ],
          "Version": "1"
      }
      Kebijakan read/write OSS
      Ganti <myBucketName> dengan nama bucket yang sebenarnya.
      {
          "Statement": [
              {
                  "Action": "oss:*",
                  "Effect": "Allow",
                  "Resource": [
                      "acs:oss:*:*:<myBucketName>",
                      "acs:oss:*:*:<myBucketName>/*"
                  ]
              }
          ],
          "Version": "1"
      }
    2. (Opsional) Jika Anda menggunakan ID CMK tertentu yang dikelola oleh KMS untuk mengenkripsi objek OSS, Anda juga harus memberikan izin KMS kepada peran tersebut. Untuk informasi lebih lanjut, lihat Gunakan ID CMK tertentu yang dikelola oleh KMS untuk mengenkripsi data.

  3. Lampirkan kebijakan akses ke peran RAM.

    1. Buka halaman Roles di Konsol RAM, temukan peran yang telah Anda buat, lalu di kolom Actions, klik Attach Policy.

    2. Di bagian Policies, cari dan pilih kebijakan akses yang telah Anda buat.

AccessKey

Buat pengguna RAM dengan izin untuk mengakses bucket OSS target, lalu peroleh AccessKey untuk pengguna tersebut.

  1. Buat pengguna RAM. Anda dapat melewati langkah ini jika sudah memiliki pengguna RAM.

    Buka halaman Create User di Konsol RAM dan ikuti petunjuk di layar untuk membuat pengguna RAM. Anda harus menentukan parameter seperti nama login dan kata sandi.

  2. Buat kebijakan akses.

    Contoh ini mengikuti prinsip hak istimewa minimal. Buat kebijakan kustom untuk memberikan akses ke bucket OSS target. Anda dapat memberikan izin read-only atau read/write.

    1. Buka halaman Create Policy di Konsol RAM, alihkan ke JSON Editor, dan konfigurasikan skrip kebijakan.

      Kebijakan hanya-baca

      Ganti <myBucketName> dengan nama bucket yang sebenarnya.
      {
          "Statement": [
              {
                  "Action": [
                      "oss:Get*",
                      "oss:List*"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                      "acs:oss:*:*:<myBucketName>",
                      "acs:oss:*:*:<myBucketName>/*"
                  ]
              }
          ],
          "Version": "1"
      }

      OSS Kebijakan baca/tulis

      Ganti <myBucketName> dengan nama bucket yang sebenarnya.
      {
          "Statement": [
              {
                  "Action": "oss:*",
                  "Effect": "Allow",
                  "Resource": [
                      "acs:oss:*:*:<myBucketName>",
                      "acs:oss:*:*:<myBucketName>/*"
                  ]
              }
          ],
          "Version": "1"
      }

      Jika Anda ingin membuat PV di konsol, Anda juga memerlukan izin oss:ListBuckets.

      {
        "Effect": "Allow",
        "Action": "oss:ListBuckets",
        "Resource": "*"
      }
    2. (Opsional) Jika Anda menggunakan ID CMK tertentu yang dikelola oleh KMS untuk mengenkripsi objek OSS, Anda juga harus memberikan izin KMS kepada pengguna RAM. Untuk informasi lebih lanjut, lihat Gunakan ID CMK tertentu yang dikelola oleh KMS untuk mengenkripsi data.

  3. Lampirkan kebijakan akses ke pengguna RAM.

    1. Buka halaman Users di Konsol RAM, temukan pengguna yang telah Anda buat, lalu di kolom Actions, klik Add Permissions.

    2. Di bagian Policies, cari dan pilih kebijakan akses yang telah Anda buat.

  4. AccessKey yang Anda buat akan disimpan sebagai Secret untuk PV.

    1. Buka halaman Users di Konsol RAM, klik nama pengguna RAM Anda, lalu di bagian AccessKey, klik Create AccessKey.

    2. Ikuti petunjuk di layar untuk membuat AccessKey. Salin dan simpan dengan aman ID AccessKey dan Rahasia AccessKey.

Langkah 2: Buat StorageClass

Buat StorageClass untuk menentukan templat penyediaan persistent volume.

Metode RRSA

  1. Buat file bernama sc-oss.yaml.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: sc-oss
    parameters:
      # Ganti dengan nama bucket OSS Anda.
      bucket: bucket  
      # Ganti dengan wilayah bucket OSS Anda.
      region: cn-hangzhou
      # Jalur pemasangan relatif terhadap direktori root bucket. Anda dapat menentukan subdirektori.
      path: /
      # Titik akhir wilayah tempat bucket berada.
      url: "https://oss-cn-hangzhou-internal.aliyuncs.com"  
      # Gunakan metode RRSA untuk autentikasi.
      authType: rrsa
      # Peran RAM yang telah Anda buat atau modifikasi.
      roleName: demo-role-for-rrsa
      # Parameter kustom.
      otherOpts: "-o umask=022 -o max_stat_cache_size=100000 -o allow_other"
      # Mode akses volume.
      volumeAs: sharepath
      # Versi signature untuk permintaan yang dikirim ke server OSS.
      sigVersion: "v4" 
    # Nilai tetap untuk plug-in CSI OSS Alibaba Cloud.
    provisioner: ossplugin.csi.alibabacloud.com
    # Kebijakan reclaim untuk persistent volume yang diprovisikan secara dinamis.

    Parameter

    Deskripsi

    bucket

    Bucket OSS yang akan dipasang.

    region

    Saat menggunakan signature OSS v4, atur ini ke wilayah OSS tempat bucket berada. Untuk menanyakan wilayah OSS, lihat Tanyakan wilayah bucket.

    Saat parameter ini diatur, v4 secara otomatis digunakan sebagai versi signature OSS.

    path

    Versi komponen CSI harus v1.14.8.32-c77e277b-aliyun atau lebih baru.

    Jalur pemasangan relatif terhadap direktori root bucket. Nilai default adalah /, yang memasang seluruh bucket.

    Jika versi ossfs lebih awal dari 1.91, path yang ditentukan harus ada di bucket OSS. Untuk informasi lebih lanjut, lihat Fitur baru di ossfs 1.91 dan seterusnya.

    url

    Akses endpoint untuk Bucket OSS.

    • Gunakan titik akhir internal jika node pemasangan dan bucket berada di wilayah yang sama, atau jika koneksi VPC telah dibuat.

    • Gunakan titik akhir publik jika node pemasangan dan bucket berada di wilayah berbeda.

    Berikut adalah format umum untuk port akses berbeda:

    • Internal: http://oss-{{regionName}}-internal.aliyuncs.com atau https://oss-{{regionName}}-internal.aliyuncs.com.

      Format titik akhir internal vpc100-oss-{{regionName}}.aliyuncs.com sudah tidak digunakan lagi. Segera beralih ke format baru.
    • Publik: http://oss-{{regionName}}.aliyuncs.com atau https://oss-{{regionName}}.aliyuncs.com.

    Demi keamanan, kami merekomendasikan mengakses OSS melalui HTTPS. Untuk menggunakan HTTP, ganti awalan https:// pada format di atas dengan http://.

    authType

    Atur parameter ini ke rrsa untuk menggunakan RRSA dalam autentikasi.

    roleName

    Peran RAM yang telah Anda buat atau modifikasi.

    Untuk mengonfigurasi izin berbeda untuk StorageClass berbeda, Anda dapat membuat beberapa peran RAM dan menentukan nilai roleName berbeda di setiap StorageClass.

    otherOpts

    Parameter kustom untuk persistent volume OSS, dalam format -o *** -o ***. Contoh: -o umask=022 -o max_stat_cache_size=100000 -o allow_other.

    Perluas untuk detail

    • umask: Mengatur mask izin untuk file dan direktori.

      Misalnya, umask=022 mengubah izin file menjadi 755. Ini menyelesaikan masalah izin untuk file yang diunggah menggunakan metode lain, seperti SDK atau konsol OSS, yang memiliki izin default 640. Kami merekomendasikan mengonfigurasi parameter ini untuk pemisahan baca/tulis atau akses multi-pengguna.

    • max_stat_cache_size: Mengatur batas atas entri cache metadata, misalnya 100000. Metadata di-cache di memori untuk meningkatkan kinerja operasi seperti ls dan stat.

      Namun, cache ini tidak dapat langsung mendeteksi modifikasi file yang dilakukan melalui konsol OSS, SDK, atau ossutil. Hal ini dapat menyebabkan aplikasi membaca data yang tidak konsisten. Jika Anda memiliki persyaratan konsistensi data yang ketat, atur parameter ini ke 0 untuk menonaktifkan cache, atau kurangi waktu kedaluwarsa cache dengan menggunakan parameter stat_cache_expire. Namun, hal ini dapat mengurangi kinerja baca.

    • allow_other: Mengizinkan pengguna selain pengguna yang memasang volume untuk mengakses file dan direktori di jalur pemasangan. Ini cocok untuk lingkungan bersama multi-pengguna di mana pengguna non-pemasang juga perlu mengakses data.

    Untuk informasi lebih lanjut tentang parameter opsional, lihat Opsi pemasangan dan Praktik terbaik untuk mengonfigurasi ossfs 1.0.

    provisioner

    Jenis driver. Nilai ini tetap ossplugin.csi.alibabacloud.com saat menggunakan plug-in CSI OSS Alibaba Cloud.

    reclaimPolicy

    Kebijakan reclaim untuk persistent volume yang diprovisikan secara dinamis. Persistent volume OSS hanya mendukung Retain, yang berarti saat Anda menghapus PVC, persistent volume yang sesuai dan data di bucket OSS tidak dihapus.

    volumeBindingMode

    Mode pengikatan volume.

    Persistent volume OSS tidak memerlukan afinitas node berbasis zona ketersediaan. Anda dapat menggunakan nilai default Immediate.

    volumeAs

    Mode akses volume. Nilai default adalah sharepath. Nilai yang valid:

    • sharepath: Semua persistent volume berbagi jalur pemasangan yang sama. Data disimpan di <bucket>:<path>/.

    • subpath: Membuat subdirektori khusus untuk setiap persistent volume untuk mengisolasi data. Data disimpan di <bucket>:<path>/<pv-name>/.

      Parameter ini hanya berlaku saat versi komponen CSI 1.31.3 atau lebih baru.

    sigVersion

    Versi signature untuk permintaan yang dikirim ke server OSS.

  2. Buat StorageClass.

    kubectl apply -f sc-oss.yaml

Metode AccessKey

kubectl

1. Buat StorageClass

  1. Buat Secret di namespace yang sama dengan aplikasi Anda.

    Ganti akId dan akSecret dengan ID AccessKey dan Rahasia AccessKey Anda.

    kubectl create secret generic oss-secret --from-literal='akId=<yourAccessKey ID>' --from-literal='akSecret=<yourAccessKey Secret>'
  2. Buat StorageClass.

    1. Buat file bernama sc-oss.yaml.

      apiVersion: storage.k8s.io/v1
      kind: StorageClass
      metadata:
        name: sc-oss
      parameters:
        # Ganti dengan nama bucket OSS Anda.
        bucket: bucket
        # Ganti dengan wilayah bucket OSS Anda.
        region: cn-hangzhou
        # Jalur pemasangan relatif terhadap direktori root bucket. Anda dapat menentukan subdirektori.
        path: /
        # Titik akhir wilayah tempat bucket berada.
        url: "https://oss-cn-hangzhou-internal.aliyuncs.com" 
        # Nama Secret yang menyimpan informasi AccessKey.
        csi.storage.k8s.io/node-publish-secret-name: oss-secret
        # Namespace tempat Secret yang menyimpan informasi AccessKey berada.
        csi.storage.k8s.io/node-publish-secret-namespace: default
        # Parameter kustom.
        otherOpts: "-o umask=022 -o max_stat_cache_size=100000 -o allow_other"
        # Versi signature untuk permintaan yang dikirim ke server OSS.
        sigVersion: "v4"
      # Nilai tetap untuk plug-in CSI OSS Alibaba Cloud.
      provisioner: ossplugin.csi.alibabacloud.com
      # Kebijakan reclaim untuk persistent volume yang diprovisikan secara dinamis.
      reclaimPolicy: Retain
      # Mode pengikatan volume.
      volumeBindingMode: Immediate
      

      Parameter

      Deskripsi

      name

      Nama StorageClass.

      bucket

      Bucket OSS yang akan dipasang.

      region

      Saat menggunakan signature OSS v4, atur ini ke wilayah OSS tempat bucket berada. Untuk menanyakan wilayah OSS, lihat Tanyakan wilayah bucket.

      Saat parameter ini diatur, v4 secara otomatis digunakan sebagai versi signature OSS.

      path

      Versi komponen CSI harus v1.14.8.32-c77e277b-aliyun atau lebih baru.

      Jalur pemasangan relatif terhadap direktori root bucket. Nilai default adalah /, yang memasang seluruh bucket.

      Jika versi ossfs lebih awal dari 1.91, path yang ditentukan harus ada di bucket OSS. Untuk informasi lebih lanjut, lihat Fitur baru di ossfs 1.91 dan seterusnya.

      url

      Titik akhir bucket OSS yang akan dipasang.

      • Gunakan titik akhir internal jika node pemasangan dan bucket berada di wilayah yang sama, atau jika koneksi VPC telah dibuat.

      • Gunakan titik akhir publik jika node pemasangan dan bucket berada di wilayah berbeda.

      Berikut adalah format umum untuk port akses berbeda:

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

        Format titik akhir internal vpc100-oss-{{regionName}}.aliyuncs.com sudah tidak digunakan lagi. Segera beralih ke format baru.
      • Jaringan publik: https://oss-{{regionName}}.aliyuncs.com.

      Demi keamanan, kami merekomendasikan mengakses OSS melalui HTTPS. Untuk menggunakan HTTP, ganti awalan https:// pada format di atas dengan http://.

      csi.storage.k8s.io/node-publish-secret-name

      Nama Secret yang menyimpan informasi AccessKey.

      csi.storage.k8s.io/node-publish-secret-namespace

      Namespace tempat Secret yang menyimpan informasi AccessKey berada.

      otherOpts

      Parameter kustom untuk persistent volume OSS, dalam format -o *** -o ***. Contoh: -o umask=022 -o max_stat_cache_size=100000 -o allow_other.

      Perluas untuk detail

      • umask: Mengatur mask izin untuk file dan direktori.

        Misalnya, umask=022 mengubah izin file menjadi 755. Ini menyelesaikan masalah izin untuk file yang diunggah menggunakan metode lain, seperti SDK atau konsol OSS, yang memiliki izin default 640. Kami merekomendasikan mengonfigurasi parameter ini untuk pemisahan baca/tulis atau akses multi-pengguna.

      • max_stat_cache_size: Mengatur batas atas entri cache metadata, misalnya 100000. Metadata di-cache di memori untuk meningkatkan kinerja operasi seperti ls dan stat.

        Namun, cache ini tidak dapat langsung mendeteksi modifikasi file yang dilakukan melalui konsol OSS, SDK, atau ossutil. Hal ini dapat menyebabkan aplikasi membaca data yang tidak konsisten. Jika Anda memiliki persyaratan konsistensi data yang ketat, atur parameter ini ke 0 untuk menonaktifkan cache, atau kurangi waktu kedaluwarsa cache dengan menggunakan parameter stat_cache_expire. Namun, hal ini dapat mengurangi kinerja baca.

      • allow_other: Mengizinkan pengguna selain pengguna yang memasang volume untuk mengakses file dan direktori di jalur pemasangan. Ini cocok untuk lingkungan bersama multi-pengguna di mana pengguna non-pemasang juga perlu mengakses data.

      Untuk informasi lebih lanjut tentang parameter opsional, lihat Opsi pemasangan dan Praktik terbaik untuk mengonfigurasi ossfs 1.0.

      provisioner

      Jenis driver. Nilai ini tetap ossplugin.csi.alibabacloud.com saat menggunakan plug-in CSI OSS Alibaba Cloud.

      reclaimPolicy

      Kebijakan reclaim untuk persistent volume yang diprovisikan secara dinamis. Persistent volume OSS hanya mendukung Retain, yang berarti saat Anda menghapus PVC, persistent volume yang sesuai dan data di bucket OSS tidak dihapus.

      volumeBindingMode

      Mode pengikatan volume.

      Persistent volume OSS tidak memerlukan afinitas node berbasis zona ketersediaan. Anda dapat menggunakan nilai default Immediate.

      volumeAs

      Mode akses volume. Nilai default adalah sharepath. Nilai yang valid:

      • sharepath: Semua persistent volume berbagi jalur pemasangan yang sama. Data disimpan di <bucket>:<path>/.

      • subpath: Membuat subdirektori khusus untuk setiap persistent volume untuk mengisolasi data. Data disimpan di <bucket>:<path>/<pv-name>/.

        Parameter ini hanya berlaku saat versi komponen CSI 1.31.3 atau lebih baru.

      sigVersion

      Versi signature untuk permintaan yang dikirim ke server OSS.

    2. Buat StorageClass.

      kubectl apply -f sc-oss.yaml

Konsol

  1. Simpan AccessKey dari Langkah 1 sebagai Secret untuk persistent volume.

    1. Pada halaman ACK Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Configurations > Secrets.

    2. Klik Create from YAML dan ikuti petunjuk di layar untuk membuat Secret.

      apiVersion: v1
      kind: Secret
      metadata:
        name: oss-secret
        # Harus sesuai dengan namespace aplikasi.
        namespace: default
      stringData:
        # Ganti dengan ID AccessKey Anda.
        akId: <your AccessKey ID>
        # Ganti dengan rahasia AccessKey Anda.
        akSecret: <your AccessKey Secret>
  2. Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Volumes > StorageClasses.

  3. Pada halaman StorageClasses, klik Create, atur PV Type ke OSS, dan ikuti petunjuk di layar untuk mengonfigurasi StorageClass.

    Parameter

    Deskripsi

    Access certificate

    Secret yang digunakan untuk mengakses OSS, yang berisi ID AccessKey dan Rahasia AccessKey.

    Bucket ID:

    Bucket OSS yang akan digunakan.

    Konsol hanya menampilkan bucket yang dapat diakses oleh AccessKey yang dikonfigurasi.

    OSS path

    Versi komponen CSI harus v1.14.8.32-c77e277b-aliyun atau lebih baru.

    Jalur pemasangan relatif terhadap direktori root bucket. Nilai default adalah /, yang memasang seluruh bucket.

    Jika versi ossfs lebih awal dari 1.91, path yang ditentukan harus ada di bucket OSS. Untuk informasi lebih lanjut, lihat Fitur baru di ossfs 1.91 dan seterusnya.

    Volume Mode

    Mode akses volume. Default adalah Shared Directory. Nilai yang valid:

    Mode Subdirectory hanya berlaku saat versi komponen CSI 1.31.3 atau lebih baru. Jika tidak, mode Shared Directory yang digunakan.
    • Shared Directory (sharepath): Semua persistent volume berbagi jalur pemasangan yang sama. Data disimpan di <bucket>:<path>/.

    • Subdirectory (subpath): Membuat subdirektori khusus untuk setiap persistent volume untuk mengisolasi data. Data disimpan di <bucket>:<path>/<pv-name>/.

    Endpoint

    Titik akhir akses untuk bucket OSS.

    • Gunakan titik akhir internal jika node kluster dan bucket berada di wilayah yang sama, atau jika koneksi Virtual Private Cloud (VPC) telah dibuat.

    • Gunakan titik akhir publik jika node pemasangan dan bucket berada di wilayah berbeda.

    Berikut adalah format umum untuk titik akhir akses berbeda:

    • Internal: http://oss-{{regionName}}-internal.aliyuncs.com atau https://oss-{{regionName}}-internal.aliyuncs.com.

      Catatan

      Format titik akhir akses internal vpc100-oss-{{regionName}}.aliyuncs.com sudah tidak digunakan lagi. Segera beralih ke format baru.

    • Publik: http://oss-{{regionName}}.aliyuncs.com atau https://oss-{{regionName}}.aliyuncs.com.

    Secara default, konsol menggunakan HTTP untuk mengakses OSS melalui jaringan internal. Untuk menggunakan HTTPS, Anda harus membuat PV menggunakan kubectl.

    Reclaim policy

    Kebijakan reclaim untuk persistent volume yang diprovisikan secara dinamis. Persistent volume OSS hanya mendukung Retain, yang berarti saat Anda menghapus PVC, persistent volume yang sesuai dan data di bucket OSS tidak dihapus.

    Optional Parameters:

    Parameter kustom untuk persistent volume OSS, dalam format -o *** -o ***. Contoh: -o umask=022 -o max_stat_cache_size=100000 -o allow_other.

    Perluas untuk detail

    • umask: Mengatur mask izin untuk file dan direktori.

      Misalnya, umask=022 mengubah izin file menjadi 755. Ini menyelesaikan masalah izin untuk file yang diunggah menggunakan metode lain, seperti SDK atau konsol OSS, yang memiliki izin default 640. Kami merekomendasikan mengonfigurasi parameter ini untuk pemisahan baca/tulis atau akses multi-pengguna.

    • max_stat_cache_size: Mengatur batas atas entri cache metadata, misalnya 100000. Metadata di-cache di memori untuk meningkatkan kinerja operasi seperti ls dan stat.

      Namun, cache ini tidak dapat langsung mendeteksi modifikasi file yang dilakukan melalui konsol OSS, SDK, atau ossutil. Hal ini dapat menyebabkan aplikasi membaca data yang tidak konsisten. Jika Anda memiliki persyaratan konsistensi data yang ketat, atur parameter ini ke 0 untuk menonaktifkan cache, atau kurangi waktu kedaluwarsa cache dengan menggunakan parameter stat_cache_expire. Namun, hal ini dapat mengurangi kinerja baca.

    • allow_other: Mengizinkan pengguna selain pengguna yang memasang volume untuk mengakses file dan direktori di jalur pemasangan. Ini cocok untuk lingkungan bersama multi-pengguna di mana pengguna non-pemasang juga perlu mengakses data.

    Untuk informasi lebih lanjut tentang parameter opsional, lihat Opsi pemasangan dan Praktik terbaik untuk mengonfigurasi ossfs 1.0.

Langkah 3: Buat PVC

Buat PVC untuk meminta resource penyimpanan secara dinamis. Plug-in CSI secara otomatis membuat PV berdasarkan StorageClass.

kubectl

  1. Buat file bernama pvc-oss.yaml:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      # Nama PVC
      name: pvc-oss
    spec:
      # Konfigurasikan mode akses. ReadOnlyMany berarti ossfs memasang bucket OSS dalam mode read-only.
      accessModes:
      - ReadOnlyMany
      volumeMode: Filesystem
      resources:
        requests:
          # Nyatakan kapasitas penyimpanan yang diminta. Nilai ini tidak membatasi kapasitas aktual volume OSS.
          storage: 20Gi
      # Tentukan StorageClass yang akan digunakan.
      storageClassName: sc-oss

    Parameter

    Deskripsi

    accessModes

    Menentukan mode akses. Nilai yang didukung adalah ReadOnlyMany dan ReadWriteMany.

    Jika diatur ke ReadOnlyMany, ossfs memasang bucket OSS dalam mode read-only.

    storage

    Kapasitas yang diminta untuk volume. Nilai ini tidak membatasi kapasitas aktual volume OSS.

    storageClassName

    Nama StorageClass.

  2. Buat PVC:

    kubectl apply -f pvc-oss.yaml
  3. Verifikasi bahwa PVC telah dibuat dan berada dalam status Bound:

    kubectl get pvc pvc-oss

    Output yang diharapkan:

    NAME           STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS         VOLUMEATTRIBUTESCLASS   AGE
    pvc-oss        Bound    oss-251d111d-3b0b-4879-81a0-eb5a19xxxxxx   20Gi       ROX            sc-oss             <unset>                 4d20h

Konsol

  1. Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Volumes > Persistent Volume Claims.

  2. Pada halaman Persistent Volume Claims, klik Create. Atur PVC Type ke OSS dan konfigurasikan parameter.

    Parameter

    Deskripsi

    Allocation Mode

    Pilih Use StorageClass.

    Existing Storage Class

    Klik Select Storage Class dan pilih StorageClass yang telah dibuat sebelumnya.

    Capacity

    Kapasitas yang diminta untuk volume. Nilai ini tidak membatasi kapasitas aktual volume OSS.

    Access Mode

    Menentukan mode akses. Nilai yang didukung adalah ReadOnlyMany dan ReadWriteMany.

    Jika diatur ke ReadOnlyMany, ossfs memasang bucket OSS dalam mode read-only.

Langkah 4: Buat aplikasi dan pasang volume

Untuk memasang volume, referensikan PVC dalam aplikasi Anda.

kubectl

  1. Buat file oss-workload.yaml.

    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:
              # Jalur pemasangan di kontainer.
              - name: pvc-oss
                mountPath: "/data"
            # Konfigurasikan pemeriksaan kesehatan.
            livenessProbe:
              exec:
                command:
                - ls
                - /data
              initialDelaySeconds: 30
              periodSeconds: 30
          volumes:
            - name: pvc-oss
              persistentVolumeClaim:
                # Referensikan PVC yang telah Anda buat.
                claimName: pvc-oss
  2. Buat aplikasi.

    kubectl create -f oss-workload.yaml
  3. Verifikasi pemasangan.

    • Konfirmasi bahwa Pod sedang berjalan.

      kubectl get pod -l app=nginx
    • Akses Pod dan periksa titik pemasangan.

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

      Output harus mencantumkan file di jalur pemasangan OSS.

Konsol

  1. Pada halaman ACK Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Workloads > Deployments.

  2. Di pojok kanan atas halaman Deployments, klik Create from Image.

  3. Klik Create from Image dan ikuti petunjuk di layar untuk mengonfigurasi parameter aplikasi.

    Parameter utama dijelaskan dalam tabel berikut. Untuk parameter lain, Anda dapat menggunakan nilai default. Untuk informasi lebih lanjut, lihat Buat Deployment.

    Halaman konfigurasi

    Parameter

    Deskripsi

    Basic Information

    Replicas:

    Jumlah replika Pod untuk Deployment.

    Container

    Nama gambar

    Alamat gambar kontainer untuk aplikasi, seperti anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6.

    Required Resources

    Jumlah vCPU dan memori yang dialokasikan untuk setiap kontainer.

    Volumes

    Klik Add PVC lalu konfigurasikan parameter.

    • Mount Source: Pilih PVC yang telah Anda buat sebelumnya.

    • Container Path: Jalur dalam kontainer tempat volume akan dipasang, seperti /data.

    Labels and Annotations

    Pod label

    Misalnya, atur kunci ke 'app' dan nilai ke 'nginx'.

  4. Periksa status deployment aplikasi.

    Pada halaman Deployments, klik nama aplikasi Anda. Pada tab Pods, verifikasi bahwa Pod memiliki status Running.

Langkah 5: Verifikasi penyimpanan bersama dan persisten

Verifikasi penyimpanan bersama

Untuk memverifikasi penyimpanan bersama, buat file di satu Pod lalu lihat di Pod lain.

  1. Dapatkan nama Pod aplikasi.

    kubectl get pod -l app=nginx
  2. Contoh ini menggunakan Pod oss-workload-66fbb85b67-d****:

    • ReadWriteMany: Buat file tmpfile di jalur /data.

      kubectl exec oss-workload-66fbb85b67-d**** -- touch /data/tmpfile
    • ReadOnlyMany: Unggah file tmpfile ke jalur yang sesuai di bucket OSS menggunakan konsol OSS atau dengan mengunggah file dengan cp.

  3. Periksa keberadaan file di jalur pemasangan Pod lain.

    Ambil contoh Pod bernama oss-workload-66fbb85b67-l**** dengan jalur pemasangan data.

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

    Kehadiran file dalam output mengonfirmasi bahwa Pod dapat berbagi data.

    tmpfile
    Jika Anda tidak melihat output yang diharapkan, pastikan versi komponen CSI Anda adalah v1.20.7 atau lebih baru.

Verifikasi penyimpanan persisten

Untuk memverifikasi penyimpanan persisten, hapus Pod lalu periksa apakah file tetap ada setelah Pod dibuat ulang secara otomatis.

  1. Hapus Pod aplikasi. Pengontrol Deployment secara otomatis membuat ulang Pod tersebut.

    kubectl delete pod oss-workload-66fbb85b67-d****
  2. Periksa status Pod. Tunggu hingga Pod baru mulai dan menjadi Running.

    kubectl get pod -l app=nginx
  3. Lihat file di jalur /data.

    Contoh ini menggunakan Pod bernama oss-workload-66fbb85b67-z**** dengan jalur pemasangan data.

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

    Output menunjukkan file tmpfile masih ada, yang mengonfirmasi bahwa data tetap ada meskipun Pod dibuat ulang.

    tmpfile

Dampak yang diketahui

  • Risiko integritas data

    • Risiko konsistensi tulis konkuren: Untuk meningkatkan stabilitas tulis, kami merekomendasikan meningkatkan komponen CSI ke v1.28 atau lebih baru. Namun, dalam skenario tulis konkuren file tunggal, fitur "overwrite upload" OSS masih dapat menimpa data. Anda harus memastikan konsistensi data di lapisan aplikasi.

    • Risiko sinkronisasi dan penghapusan tidak sengaja: Saat volume dipasang, menghapus atau memodifikasi file di jalur pemasangan pada Pod aplikasi atau node host secara langsung menyinkronkan perubahan tersebut dengan file sumber di Bucket OSS. Untuk mencegah penghapusan data tidak sengaja, kami merekomendasikan mengaktifkan versioning untuk Bucket OSS Anda.

  • Risiko stabilitas aplikasi

    • Risiko OOM: Saat Anda melakukan operasi readdir (seperti perintah ls dalam skrip shell) pada sejumlah besar file (misalnya, lebih dari 100.000, tergantung pada memori node) untuk pertama kalinya, ossfs memuat semua metadata sekaligus dan mengonsumsi banyak memori. Hal ini dapat menyebabkan proses di-OOM Killed dan membuat titik pemasangan tidak tersedia.

      Untuk mengurangi risiko ini, kami merekomendasikan memasang subdirektori bucket OSS atau mengoptimalkan struktur direktori Anda.

    • Waktu pemasangan yang lama: Mengonfigurasi securityContext.fsgroup dalam aplikasi menyebabkan kubelet secara rekursif memodifikasi izin file (chmod/chown) saat memasang volume. Jika volume berisi banyak file, waktu pemasangan akan sangat lama, yang dapat menyebabkan penundaan startup Pod yang parah.

      Jika Anda harus mengonfigurasi parameter ini tetapi ingin mengurangi waktu pemasangan, lihat Waktu pemasangan yang meningkat untuk volume OSS.

    • Risiko invalidasi kunci (autentikasi AccessKey): Jika AccessKey yang dirujuk oleh PV menjadi tidak valid atau izinnya berubah, aplikasi yang terkait langsung kehilangan akses.

      Untuk memulihkan akses, Anda harus memperbarui kredensial di Secret dan memulai ulang Pod aplikasi untuk memaksa pemasangan ulang. Hal ini menyebabkan gangguan layanan, sehingga operasi ini harus dilakukan selama jendela pemeliharaan. Untuk informasi selengkapnya, lihat Solusi.

  • Risiko biaya

Pelepasan resource

  1. Hapus workload

    • Tindakan: Hapus semua workload, seperti Deployments dan StatefulSets, yang menggunakan PVC. Hal ini menghentikan Pod dan melepas pemasangan volume.

    • Perintah contoh: kubectl delete deployment <your-deployment-name>

  2. Hapus PVC

    • Tindakan: Hapus PVC. Kebijakan reclaim (reclaimPolicy) untuk volume OSS yang disediakan secara dinamis hanya mendukung Retain. Saat Anda menghapus PVC, PV yang terikat akan memasuki status Released, dan bucket OSS backend mempertahankan subdirektori serta data yang sesuai.

    • Perintah contoh: kubectl delete pvc <your-pvc-name>

  3. Hapus PV

    • Tindakan: Hapus PV dalam status Released. Operasi ini hanya menghapus objek resource PV dari Kubernetes dan tidak menghapus data apa pun di bucket OSS backend.

    • Perintah contoh: kubectl delete pv <your-pv-name>

  4. Hapus StorageClass dan Secret (opsional)

    • Tindakan: Hapus StorageClass dan Secret terkait jika tidak lagi diperlukan. Operasi ini hanya menghapus objek resource dari Kubernetes dan tidak memengaruhi bucket OSS backend.

    • Perintah contoh: kubectl delete sc <your-storageclass-name>, kubectl delete secret <your-secret-name>

Dokumen terkait

  • Atur volume OSS menggunakan CNFS untuk meningkatkan kinerja dan QoS-nya. Untuk informasi lebih lanjut, lihat Atur siklus hidup volume OSS.

  • Aktifkan enkripsi sisi server untuk melindungi data sensitif yang disimpan di OSS. Untuk informasi lebih lanjut, lihat Enkripsi volume ossfs 1.0.

  • Untuk pertanyaan umum tentang ossfs dan OSS, lihat ossfs 1.0 (default) dan FAQ volume ossfs 1.0.

  • Aktifkan pemantauan penyimpanan kontainer dan konfigurasikan alert untuk segera mendeteksi anomali volume atau bottleneck kinerja.

  • ossfs 1.0 memberikan konsistensi data yang lebih kuat untuk tulis acak dan konkuren dibandingkan ossfs 2.0. Namun, ossfs 2.0 menawarkan kinerja yang lebih baik untuk baca dan tulis berurutan.