全部产品
Search
文档中心

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

更新时间:Dec 04, 2025

ossfs 1.0 mendukung volume penyediaan dinamis. Anda dapat menggunakan StorageClass dan PersistentVolumeClaim (PVC) untuk secara otomatis membuat persistent volume (PV) serta memasang Bucket OSS. Fitur ini menyederhanakan manajemen penyimpanan dengan menghilangkan kebutuhan konfigurasi PV secara manual, sehingga ideal untuk lingkungan multi-tenant dan skenario yang memerlukan pembuatan penyimpanan secara sering dan sesuai permintaan.

Prasyarat

Pastikan kluster dan komponen Container Storage Interface (CSI) Anda (csi-plugin dan csi-provisioner) memenuhi persyaratan versi berikut:

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

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

Langkah 1: Pilih metode autentikasi dan siapkan kredensial

Untuk mengakses sumber daya Bucket OSS secara aman, pertama-tama konfigurasikan mekanisme autentikasi.

  • Autentikasi RRSA: Memberikan peran RAM sementara yang secara otomatis berputar kepada Pod untuk 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
  • Pada kluster versi 1.26 dan lebih baru, kami merekomendasikan menggunakan autentikasi RRSA untuk menghindari gangguan layanan yang disebabkan oleh remount ossfs saat AccessKey diputar.

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

Gunakan RRSA

1. Aktifkan RRSA di kluster Anda

  1. Pada halaman ACK Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel kiri, klik Cluster Information.

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

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

    Penting

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

2. Buat dan otorisasi peran RAM

Buat peran RAM yang dapat diasumsikan oleh Pod Anda untuk mengakses volume OSS.

Lihat langkah-langkahnya

  1. Buat peran RAM.

    1. Buka halaman Create Role di Konsol RAM. Pilih Identity Provider sebagai Principal Type, lalu klik Switch to Policy Editor untuk membuka halaman Visual editor.

    2. Pilih Identity Provider sebagai Principal dan klik Edit. Konfigurasikan pengaturan seperti dijelaskan di bawah ini.

      Konfigurasikan pengaturan utama di bawah ini. Anda dapat menggunakan nilai default untuk parameter lainnya. Untuk detailnya, lihat Buat peran RAM untuk OIDC IdP.

      Parameter

      Deskripsi

      Identity Provider Type

      Pilih OIDC.

      Identity Provider

      Pilih ack-rrsa-<cluster_id>, dengan <cluster_id> sebagai ID kluster Anda.

      Condition

      Tambahkan secara manual oidc:sub.

      Role Name

      Dalam contoh ini, namanya adalah demo-role-for-rrsa.

  2. Buat Kebijakan Akses.

    Mengikuti prinsip hak istimewa minimal, buat kebijakan kustom yang memberikan akses ke Bucket OSS target (izin read-only atau read-write).

    1. Buka halaman Create Policy di konsol RAM, alihkan ke tab JSON, dan masukkan skrip kebijakan berikut.

      Jika Anda sudah memiliki peran RAM dengan izin OSS, Anda dapat menggunakannya kembali dengan memodifikasi kebijakan kepercayaannya. Untuk detailnya, lihat Isolasi izin Pod berdasarkan RRSA.

      Kebijakan read-only OSS

      Ganti <myBucketName> dengan nama bucket aktual Anda.
      {
          "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 aktual Anda.
      {
          "Statement": [
              {
                  "Action": "oss:*",
                  "Effect": "Allow",
                  "Resource": [
                      "acs:oss:*:*:<myBucketName>",
                      "acs:oss:*:*:<myBucketName>/*"
                  ]
              }
          ],
          "Version": "1"
      }
    2. (Opsional) Jika Anda mengenkripsi objek OSS dengan ID CMK tertentu yang dikelola oleh KMS, Anda juga harus memberikan izin KMS kepada peran tersebut. Untuk detailnya, lihat Gunakan ID CMK tertentu yang dikelola oleh KMS untuk enkripsi.

  3. Lampirkan kebijakan ke peran RAM.

    1. Buka halaman Roles di konsol RAM. Di kolom Actions untuk peran target, klik Grant Permissions.

    2. Di bagian Policy, cari dan pilih kebijakan yang telah Anda buat, lalu berikan izin tersebut.

Gunakan AccessKey

Buat pengguna RAM dengan izin akses OSS dan peroleh AccessKey-nya. Ini memberikan izin kepada pengguna untuk melakukan operasi pada Bucket OSS.

  1. Buat pengguna RAM (lewati langkah ini jika Anda sudah memilikinya).

    Buka halaman Create User di konsol RAM. Ikuti petunjuk di layar untuk membuat pengguna RAM. Anda harus menetapkan nama login dan password.

  2. Buat kebijakan akses.

    Contoh ini mengikuti prinsip hak istimewa minimal. Buat kebijakan kustom untuk memberikan izin mengakses Bucket OSS target (izin read-only atau read/write).

    1. Buka halaman Create Policy di konsol RAM. Alihkan ke tab JSON dan masukkan skrip kebijakan.

      Kebijakan read-only OSS

      Ganti <myBucketName> dengan nama bucket aktual.
      {
          "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 aktual.
      {
          "Statement": [
              {
                  "Action": "oss:*",
                  "Effect": "Allow",
                  "Resource": [
                      "acs:oss:*:*:<myBucketName>",
                      "acs:oss:*:*:<myBucketName>/*"
                  ]
              }
          ],
          "Version": "1"
      }

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

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

  3. Berikan kebijakan kepada pengguna RAM.

    1. Buka halaman Users di konsol RAM. Di kolom Actions untuk pengguna target, klik Add Permissions.

    2. Di bagian Policy, cari dan pilih kebijakan yang Anda buat pada langkah sebelumnya, lalu tambahkan ke izin.

  4. Buat AccessKey untuk pengguna RAM. Anda akan menyimpannya sebagai secret agar digunakan oleh PV.

    1. Buka halaman Users di konsol RAM. Klik pengguna target. Lalu, di bagian AccessKey, klik Create AccessKey.

    2. Pada kotak dialog yang muncul, ikuti petunjuk di layar untuk membuat AccessKey. Anda harus memperoleh dan menyimpan secara aman ID AccessKey dan Rahasia AccessKey.

Langkah 1: Buat StorageClass

Buat StorageClass untuk menentukan templat pembuatan volume persisten.

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 aktual Anda.
      bucket: bucket  
      # Direktori root atau subdirektori tertentu dari bucket yang akan dipasang.
      path: /
      # Titik akhir wilayah tempat bucket berada.
      url:  "http://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
    # Nilai ini tetap ketika Anda menggunakan plug-in CSI OSS Alibaba Cloud.
    provisioner: ossplugin.csi.alibabacloud.com
    # Kebijakan reclaim untuk PV yang disediakan secara dinamis.
    reclaimPolicy: Retain
    # Mode pengikatan.
    volumeBindingMode: Immediate

    Parameter

    Deskripsi

    bucket

    Bucket OSS yang akan dipasang.

    path

    Memerlukan versi komponen CSI v1.14.8.32-c77e277b-aliyun atau lebih baru.

    Menentukan jalur pemasangan relatif terhadap direktori root bucket. Default-nya adalah /, yang memasang seluruh bucket.

    Jika versi ossfs lebih awal dari 1.91, path yang ditentukan harus sudah ada di Bucket OSS. Untuk detailnya, lihat Fitur baru di ossfs 1.91 dan versi selanjutnya.

    url

    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 berbagai titik akhir akses:

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

      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.

    authType

    Atur ke rrsa untuk menggunakan autentikasi RRSA.

    roleName

    Atur ke peran RAM yang telah Anda buat atau modifikasi.

    Untuk mengonfigurasi izin berbeda untuk StorageClass berbeda, buat peran RAM berbeda dan tentukan nilai roleName berbeda di StorageClass.

    otherOpts

    Masukkan parameter kustom untuk volume OSS dalam format -o *** -o ***, seperti -o umask=022 -o max_stat_cache_size=100000 -o allow_other.

    Lihat deskripsi

    • umask: Mengubah izin baca untuk file ossfs.

      Misalnya, umask=022 mengubah izin file ossfs menjadi 755. Ini menyelesaikan masalah izin untuk file yang diunggah melalui 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: Menetapkan batas atas untuk entri cache metadata (misalnya, 100000). Ini menyimpan cache metadata objek di memori untuk meningkatkan kinerja operasi seperti ls dan stat.

      Namun, cache ini tidak dapat segera 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 turunkan waktu kedaluwarsa cache dengan parameter stat_cache_expire. Hal ini akan mengurangi kinerja baca.

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

    Untuk parameter opsional lainnya, lihat Opsi pemasangan dan Praktik terbaik konfigurasi ossfs 1.0.

    provisioner

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

    reclaimPolicy

    Kebijakan reclaim untuk PV yang disediakan secara dinamis. Volume persisten OSS saat ini hanya mendukung Retain. Artinya, saat Anda menghapus PVC, PV dan data di Bucket OSS tidak dihapus.

    volumeBindingMode

    Mode asosiasi.

    Volume persisten OSS tidak memerlukan afinitas node berbasis zona. Anda dapat menggunakan nilai default Immediate.

    volumeAs

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

    subpath hanya berlaku jika versi komponen CSI 1.31.3 atau lebih baru. Jika tidak, sharepath yang digunakan.
    • sharepath: Memasang dalam mode bersama. Semua volume berbagi jalur pemasangan. Data disimpan di <bucket>:<path>/.

    • subpath: Memasang dalam mode subdirektori. Subdirektori dibuat otomatis di bawah jalur pemasangan saat volume dibuat. Data disimpan di <bucket>:<path>/<pv-name>/.

    sigVersion

    Versi signature untuk permintaan ke server OSS.

  2. Buat StorageClass.

    kubectl apply -f sc-oss.yaml

Metode AccessKey

kubectl

1. Buat StorageClass

  1. Buat secret. Namespace secret harus sama dengan namespace aplikasi Anda.

    Ganti <yourAccessKey ID> dan <yourAccessKey Secret> dengan ID AccessKey dan Rahasia AccessKey yang telah Anda peroleh.

    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 aktual Anda.
        bucket: bucket
        # Direktori root atau subdirektori tertentu dari bucket yang akan dipasang.
        path: /
        # Titik akhir wilayah tempat bucket berada.
        url: "http://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"
      # Nilai ini tetap ketika Anda menggunakan plug-in CSI OSS Alibaba Cloud.
      provisioner: ossplugin.csi.alibabacloud.com
      # Kebijakan reclaim untuk PV yang disediakan secara dinamis.
      reclaimPolicy: Retain
      # Mode pengikatan.
      volumeBindingMode: Immediate
      

      Parameter

      Deskripsi

      name

      Nama StorageClass.

      bucket

      Bucket OSS yang akan dipasang.

      path

      Memerlukan versi komponen CSI v1.14.8.32-c77e277b-aliyun atau lebih baru.

      Menentukan jalur pemasangan relatif terhadap direktori root bucket. Default-nya adalah /, yang memasang seluruh bucket.

      Jika versi ossfs lebih awal dari 1.91, path yang ditentukan harus sudah ada di Bucket OSS. Untuk detailnya, lihat Fitur baru di ossfs 1.91 dan versi selanjutnya.

      url

      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 berbagai titik akhir akses:

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

        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.

      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

      Masukkan parameter kustom untuk volume OSS dalam format -o *** -o ***, seperti -o umask=022 -o max_stat_cache_size=100000 -o allow_other.

      Lihat deskripsi

      • umask: Mengubah izin baca untuk file ossfs.

        Misalnya, umask=022 mengubah izin file ossfs menjadi 755. Ini menyelesaikan masalah izin untuk file yang diunggah melalui 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: Menetapkan batas atas untuk entri cache metadata (misalnya, 100000). Ini menyimpan cache metadata objek di memori untuk meningkatkan kinerja operasi seperti ls dan stat.

        Namun, cache ini tidak dapat segera 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 turunkan waktu kedaluwarsa cache dengan parameter stat_cache_expire. Hal ini akan mengurangi kinerja baca.

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

      Untuk parameter opsional lainnya, lihat Opsi pemasangan dan Praktik terbaik konfigurasi ossfs 1.0.

      provisioner

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

      reclaimPolicy

      Kebijakan reclaim untuk PV yang disediakan secara dinamis. Volume persisten OSS saat ini hanya mendukung Retain. Artinya, saat Anda menghapus PVC, PV dan data di Bucket OSS tidak dihapus.

      volumeBindingMode

      Mode asosiasi.

      Volume persisten OSS tidak memerlukan afinitas node berbasis zona. Anda dapat menggunakan nilai default Immediate.

      volumeAs

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

      subpath hanya berlaku jika versi komponen CSI 1.31.3 atau lebih baru. Jika tidak, sharepath yang digunakan.
      • sharepath: Memasang dalam mode bersama. Semua volume berbagi jalur pemasangan. Data disimpan di <bucket>:<path>/.

      • subpath: Memasang dalam mode subdirektori. Subdirektori dibuat otomatis di bawah jalur pemasangan saat volume dibuat. Data disimpan di <bucket>:<path>/<pv-name>/.

      sigVersion

      Versi signature untuk permintaan ke server OSS.

    2. Buat StorageClass.

      kubectl apply -f sc-oss.yaml

Konsol

  1. Simpan AccessKey yang Anda peroleh di Langkah 1 sebagai secret untuk digunakan oleh PV.

    1. Pada halaman Clusters, klik nama kluster yang ingin diubah. Di panel navigasi kiri, pilih Configurations > Secrets.

    2. Klik Create from YAML, ikuti petunjuk di layar untuk membuat secret.

      apiVersion: v1
      kind: Secret
      metadata:
        name: oss-secret
        # Harus sama dengan namespace tempat aplikasi berada
        namespace: default
      stringData:
        # Ganti dengan ID AccessKey yang Anda peroleh
        akId: <your AccessKey ID>
        # Ganti dengan Rahasia AccessKey yang Anda peroleh
        akSecret: <your AccessKey Secret>
  2. Pada halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel kiri, pilih Volumes > StorageClasses.

  3. Pada halaman StorageClasses, klik Create. Atur PV Type ke OSS dan konfigurasikan parameter StorageClass sesuai petunjuk.

    Item Konfigurasi

    Deskripsi

    Access Certificate

    Konfigurasikan secret yang diperlukan untuk mengakses OSS. Ini adalah ID AccessKey dan Rahasia AccessKey yang telah Anda peroleh.

    Bucket ID

    Bucket OSS yang akan digunakan.

    Hanya bucket yang dapat diakses dengan AccessKey yang dikonfigurasi yang ditampilkan di sini.

    OSS Path

    Memerlukan versi komponen CSI v1.14.8.32-c77e277b-aliyun atau lebih baru.

    Menentukan jalur pemasangan relatif terhadap direktori root bucket. Default-nya adalah /, yang memasang seluruh bucket.

    Jika versi ossfs lebih awal dari 1.91, path yang ditentukan harus sudah ada di Bucket OSS. Untuk detailnya, lihat Fitur baru di ossfs 1.91 dan versi selanjutnya.

    Volume Mode

    Mode akses volume. Mode default-nya adalah Shared Directory. Nilai yang valid:

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

    • Subdirectory (subpath): Subdirektori dibuat otomatis di bawah jalur pemasangan saat volume dibuat. 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 berbagai titik akhir akses:

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

      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.

    Saat Anda mengakses melalui jaringan internal, protokol HTTP digunakan secara default. Untuk menggunakan HTTPS, gunakan metode kubectl.

    Reclaim Policy

    Kebijakan reclaim untuk PV yang disediakan secara dinamis. Volume persisten OSS saat ini hanya mendukung Retain. Artinya, saat Anda menghapus PVC, PV dan data di Bucket OSS tidak dihapus.

    Optional Parameters

    Masukkan parameter kustom untuk volume OSS dalam format -o *** -o ***, seperti -o umask=022 -o max_stat_cache_size=100000 -o allow_other.

    Lihat deskripsi

    • umask: Mengubah izin baca untuk file ossfs.

      Misalnya, umask=022 mengubah izin file ossfs menjadi 755. Ini menyelesaikan masalah izin untuk file yang diunggah melalui 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: Menetapkan batas atas untuk entri cache metadata (misalnya, 100000). Ini menyimpan cache metadata objek di memori untuk meningkatkan kinerja operasi seperti ls dan stat.

      Namun, cache ini tidak dapat segera 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 turunkan waktu kedaluwarsa cache dengan parameter stat_cache_expire. Hal ini akan mengurangi kinerja baca.

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

    Untuk parameter opsional lainnya, lihat Opsi pemasangan dan Praktik terbaik konfigurasi ossfs 1.0.

Langkah 2: Buat PVC

Buat PVC untuk meminta sumber daya 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 menunjukkan bahwa ossfs memasang Bucket OSS dalam mode read-only.
      accessModes:
      - ReadOnlyMany
      volumeMode: Filesystem
      resources:
        requests:
          # Nyatakan kapasitas penyimpanan. Nilai ini tidak boleh lebih besar dari ukuran total volume.
          storage: 20Gi
      # Nyatakan StorageClass yang direferensikan.
      storageClassName: sc-oss

    Parameter

    Deskripsi

    accessModes

    Konfigurasikan mode akses. ReadOnlyMany dan ReadWriteMany didukung.

    Jika Anda memilih ReadOnlyMany, ossfs memasang Bucket OSS dalam mode read-only.

    storage

    Nyatakan kapasitas penyimpanan yang diminta untuk volume. Nilai ini tidak membatasi kapasitas aktual volume persisten OSS.

    storageClassName

    StorageClass yang direferensikan.

  2. Buat PVC.

    kubectl apply -f pvc-oss.yaml
  3. Konfirmasi 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, temukan kluster yang diinginkan dan klik namanya. Di panel navigasi kiri, pilih Volumes > Persistent Volume Claims.

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

    Parameter

    Deskripsi

    Allocation Mode

    Pilih Use StorageClass.

    Existing StorageClass

    Klik Select dan pilih StorageClass yang telah Anda buat.

    Capacity

    Nyatakan kapasitas penyimpanan yang diminta untuk volume. Nilai ini tidak membatasi kapasitas aktual volume persisten OSS.

    Access Mode

    Konfigurasikan mode akses. ReadOnlyMany dan ReadWriteMany didukung.

    Jika Anda memilih ReadOnlyMany, ossfs memasang Bucket OSS dalam mode read-only.

Langkah 4: Buat aplikasi dan pasang volume

Referensikan PVC di aplikasi Anda untuk menyelesaikan pemasangan.

kubectl

  1. Buat file bernama oss-static.yaml.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: oss-static
      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 dalam 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 Anda buat
                claimName: pvc-oss
  2. Buat aplikasi.

    kubectl create -f oss-static.yaml
  3. Verifikasi hasil pemasangan.

    • Konfirmasi bahwa Pod berada dalam status Running.

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

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

      Output harus menampilkan data dari jalur pemasangan OSS.

Konsol

  1. Pada halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel kiri, pilih Workloads > Deployments.

  2. Pada halaman Deployments, klik Create from Image.

  3. Konfigurasikan parameter aplikasi sesuai petunjuk.

    Parameter utama dijelaskan di bawah ini. Anda dapat menggunakan nilai default untuk parameter lainnya. Untuk detailnya, lihat Buat workload tanpa status (Deployment).

    Langkah konfigurasi

    Parameter

    Deskripsi

    Basic Information

    Replicas

    Jumlah replika untuk Deployment.

    Container

    Image Name

    Alamat citra yang digunakan untuk men-deploy aplikasi, seperti anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6.

    Required Resources

    Sumber daya vCPU dan memori yang diperlukan.

    Volume

    Klik Add PVC dan konfigurasikan parameter.

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

    • Container Path: Masukkan jalur di dalam kontainer tempat volume OSS akan dipasang, seperti /data.

    Advanced

    Pod Labels

    Misalnya, label dengan nama app dan nilai nginx.

  4. Periksa status deployment aplikasi.

    Pada halaman Deployments, klik nama aplikasi. Pada tab Pods, konfirmasi bahwa pod berjalan normal (Status adalah Running).

Langkah 5: Verifikasi penyimpanan bersama dan persisten

Verifikasi penyimpanan bersama

Buat file di satu Pod lalu lihat di Pod lain untuk memverifikasi fitur penyimpanan bersama.

  1. Lihat informasi Pod dan dapatkan nama Pod dari output.

    kubectl get pod -l app=nginx
  2. Buat file bernama tmpfile di salah satu pod. Untuk Pod bernama oss-static-66fbb85b67-d****:

    • ReadWriteMany: Buat file tmpfile di jalur /data.

      kubectl exec oss-static-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. Lihat file dari jalur pemasangan Pod lain.

    Untuk Pod bernama oss-static-66fbb85b67-l**** dengan jalur pemasangan /data:

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

    Output tmpfile mengonfirmasi bahwa Pod berbagi data.

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

Verifikasi penyimpanan persisten

Hapus dan buat ulang Pod, lalu periksa apakah file masih ada di Pod baru untuk memverifikasi persistensi data.

  1. Hapus Pod aplikasi untuk memicu pembuatan ulang.

    kubectl delete pod oss-static-66fbb85b67-d****
  2. Periksa Pod dan tunggu hingga Pod baru mulai dan masuk ke status Running.

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

    Untuk Pod baru bernama oss-static-66fbb85b67-z**** dengan jalur pemasangan /data:

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

    Output tmpfile mengonfirmasi bahwa file masih ada, menunjukkan bahwa data dipertahankan.

    tmpfile

Pertimbangan penting

  • Risiko integritas data

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

    • Risiko sinkronisasi dan penghapusan tidak sengaja: Saat volume dipasang, semua penghapusan atau modifikasi file di jalur pemasangan pada Pod aplikasi atau node host akan langsung disinkronkan ke file sumber di Bucket OSS. Untuk mencegah kehilangan data tidak sengaja, kami merekomendasikan mengaktifkan Versioning untuk Bucket OSS Anda.

  • Risiko stabilitas aplikasi

    • Risiko Out of Memory (OOM): Saat melakukan operasi readdir (seperti perintah ls dalam skrip shell) pada jumlah file yang besar untuk pertama kalinya (misalnya, lebih dari 100.000, tergantung pada memori node), ossfs dapat mengonsumsi banyak memori dengan memuat semua metadata sekaligus. Hal ini dapat memicu error Out of Memory (OOM), menghentikan proses, dan membuat titik pemasangan tidak tersedia.

      Disarankan untuk memasang subdirektori Bucket OSS atau mengoptimalkan struktur direktori untuk mengurangi risiko ini.

    • Waktu pemasangan meningkat: Mengonfigurasi securityContext.fsgroup di aplikasi Anda menyebabkan kubelet mengubah izin file secara rekursif (chmod/chown) saat memasang volume. Jika terdapat banyak file, hal ini secara signifikan meningkatkan waktu pemasangan dan dapat menyebabkan penundaan startup Pod yang parah.

      Jika Anda perlu mengonfigurasi parameter ini dan mengurangi waktu pemasangan, lihat Waktu pemasangan meningkat untuk volume OSS.

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

      Untuk memulihkan akses, Anda harus memperbarui kredensial di Secret dan me-restart Pod aplikasi untuk memaksa remount, yang akan menyebabkan gangguan layanan. Lakukan operasi ini selama jendela pemeliharaan. Untuk detailnya, lihat Solusi.

  • Risiko biaya

Dokumentasi terkait

  • Anda dapat mengelola volume OSS melalui Container Network File System (CNFS) untuk meningkatkan kinerja dan kontrol QoS. Untuk detailnya, lihat Kelola siklus hidup volume OSS.

  • Untuk melindungi data sensitif saat disimpan di OSS, kami merekomendasikan mengaktifkan Enkripsi Sisi Server. Untuk detailnya, 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 andal untuk skenario penulisan acak dan konkuren dibandingkan ossfs 2.0. Namun, ossfs 2.0 menawarkan kinerja lebih baik untuk skenario baca/tulis berurutan.