全部产品
Search
文档中心

Container Service for Kubernetes:Mount statically provisioned volumes with ossfs 1.0

更新时间:Dec 03, 2025

Dengan ossfs 1.0, Anda dapat memasang Bucket Object Storage Service (OSS) yang sudah ada sebagai penyimpanan persisten dengan membuat volume penyediaan statis. Metode ini ideal untuk kasus penggunaan umum yang melibatkan pembacaan konkuren, penulisan acak yang jarang terjadi, serta modifikasi izin file—seperti memasang file konfigurasi, gambar, atau sumber daya video.

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 Peningkatan 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, konfigurasikan terlebih dahulu 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 akibat 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 Clusters, temukan kluster yang diinginkan lalu 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.

Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

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 Trusted Entity Type, lalu klik Switch Editor untuk membuka halaman Visual Editor.

    2. Pilih Identity Provider sebagai Trusted Entity 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, nama tersebut 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 Script Editor, lalu 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"
      }

      Kebijakan read/write OSS

      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 Add Permissions.

    2. Di bagian Access 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 kata sandi.

  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 Script Editor lalu 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"
      }

      OSS Kebijakan baca/tulis

      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 Access Policy, cari dan pilih kebijakan yang Anda buat pada langkah sebelumnya, lalu tambahkan ke izin tersebut.

  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 2: Buat PV

Buat Persistent Volume (PV) untuk mendaftarkan Bucket OSS yang sudah ada ke dalam kluster Anda.

Metode RRSA

  1. Buat file bernama pv-oss-rrsa.yaml.

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      # Nama PV
      name: pv-oss   
      # Label PV
      labels:    
        alicloud-pvname: pv-oss
    spec:
      capacity:
        # Tentukan kapasitas volume
        storage: 10Gi  
      # Mode akses
      accessModes:  
        - ReadOnlyMany
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: ossplugin.csi.alibabacloud.com
        # Harus sama dengan nama PV (metadata.name)
        volumeHandle: pv-oss  
        volumeAttributes:
          # Ganti dengan nama bucket aktual
          bucket: "your-bucket-name"  
          # Pasang direktori root atau subdirektori tertentu dari bucket
          path: /  
          # Titik akhir wilayah tempat bucket berada
          url: "http://oss-cn-hangzhou-internal.aliyuncs.com"  
          otherOpts: "-o umask=022 -o max_stat_cache_size=100000 -o allow_other"
          authType: "rrsa"
          # Peran RAM yang telah Anda buat atau modifikasi
          roleName: "demo-role-for-rrsa"
          # Versi signature permintaan OSS
          sigVersion: "v4"  

    Parameter

    Deskripsi

    storage

    Menentukan kapasitas volume OSS. Nilai ini hanya digunakan untuk mencocokkan PV dengan PVC.

    accessModes

    Mengonfigurasi Mode Akses. Mendukung ReadOnlyMany dan ReadWriteMany.

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

    persistentVolumeReclaimPolicy

    Kebijakan pengembalian PV. Volume OSS saat ini hanya mendukung Retain, artinya PV dan data di Bucket OSS tetap dipertahankan setelah PVC dihapus.

    driver

    Menentukan jenis driver. Harus ossplugin.csi.alibabacloud.com saat menggunakan plug-in CSI OSS Alibaba Cloud.

    volumeHandle

    Harus sama dengan nama PV (metadata.name).

    bucket

    Bucket OSS yang akan dipasang.

    path

    Membutuhkan 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 setelahnya.

    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.

    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.

    authType

    Atur ke rrsa untuk menggunakan autentikasi RRSA.

    roleName

    Atur ke peran RAM yang telah Anda buat atau modifikasi.

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

    sigVersion

    Versi signature untuk permintaan ke server OSS.

    Jika autentikasi RRSA default tidak memenuhi kebutuhan Anda (misalnya, jika Anda menggunakan ServiceAccount non-default atau OIDC pihak ketiga), Anda dapat memodifikasi konfigurasi PV untuk menentukan ARN atau ServiceAccount tertentu. Untuk informasi lebih lanjut, lihat Bagaimana cara menggunakan ARN atau ServiceAccount tertentu dengan autentikasi RRSA?.
  2. Buat PV tersebut.

    kubectl create -f pv-oss-rrsa.yaml

Metode AccessKey

kubectl

  1. Buat file bernama oss-secret.yaml untuk menyimpan AccessKey yang diperoleh di Langkah 1 sebagai secret untuk digunakan oleh PV.

    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. Buat Secret tersebut.

    kubectl create -f  oss-secret.yaml
  3. Buat file bernama pv-oss-ram.yaml.

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      # Nama PV
      name: pv-oss
      # Label PV
      labels:
        alicloud-pvname: pv-oss
    spec:
      capacity:
        storage: 10Gi
      accessModes:
        - ReadOnlyMany
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: ossplugin.csi.alibabacloud.com
        # Harus sama dengan nama PV (metadata.name)
        volumeHandle: pv-oss  
        # Tentukan objek secret untuk memperoleh Informasi AccessKey
        nodePublishSecretRef:
          name: oss-secret
          namespace: default
        volumeAttributes:
          # Ganti dengan nama bucket aktual
          bucket: "your-bucket-name"  
          url: "http://oss-cn-hangzhou-internal.aliyuncs.com"
          otherOpts: "-o umask=022 -o max_stat_cache_size=100000 -o allow_other"
          path: "/"

    Parameter

    Deskripsi

    storage

    Menentukan kapasitas volume OSS. Nilai ini hanya digunakan untuk mencocokkan PV dengan PVC.

    accessModes

    Mengonfigurasi Mode Akses. Mendukung ReadOnlyMany dan ReadWriteMany.

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

    persistentVolumeReclaimPolicy

    Kebijakan pengembalian PV. Volume OSS saat ini hanya mendukung Retain, artinya PV dan data di Bucket OSS tetap dipertahankan setelah PVC dihapus.

    driver

    Menentukan jenis driver. Harus ossplugin.csi.alibabacloud.com saat menggunakan plug-in CSI OSS Alibaba Cloud.

    nodePublishSecretRef

    Menentukan Secret yang menyediakan informasi AccessKey saat memasang PV.

    volumeHandle

    Harus sama dengan nama PV (metadata.name).

    bucket

    Bucket OSS yang akan dipasang.

    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.

    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.

    path

    Membutuhkan 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 setelahnya.

    sigVersion

    Versi signature untuk permintaan ke server OSS.

  4. Buat PV tersebut.

    kubectl create -f pv-oss-ram.yaml

Konsol

Simpan AccessKey yang diperoleh di Langkah 1 sebagai secret agar digunakan oleh PV.

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

Klik Create From YAML dan 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>
  1. Pada halaman Clusters, temukan kluster yang diinginkan lalu klik namanya. Di panel kiri, pilih Volumes > Persistent Volume Claims.

  2. Pada halaman PersistentVolumes, klik Create. Atur Volume Type ke OSS, konfigurasikan parameter, lalu kirimkan.

    Tabel berikut mencantumkan parameter utama.

    Parameter

    Deskripsi

    Total Capacity

    Kapasitas volume yang akan dibuat.

    Access Mode

    Mengonfigurasi Mode Akses. Mendukung ReadOnlyMany dan ReadWriteMany.

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

    Access Credential

    Konfigurasikan secret yang diperlukan untuk mengakses OSS. Ini adalah ID AccessKey dan Rahasia AccessKey yang diperoleh di Langkah 1.

    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.

    Bucket ID

    Bucket OSS yang akan digunakan.

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

    OSS Path

    Membutuhkan 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 setelahnya.

    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.

Langkah 3: Buat PVC

Buat PersistentVolumeClaim (PVC) untuk meminta kapasitas penyimpanan persisten yang dibutuhkan oleh aplikasi Anda.

kubectl

  1. Buat file bernama pvc-oss.yaml.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      # Nama PVC
      name: pvc-oss
      namespace: default
    spec:
      # Konfigurasikan mode akses. ReadOnlyMany menunjukkan bahwa ossfs akan memasang Bucket OSS dalam mode read-only.
      accessModes:
        - ReadOnlyMany
      resources:
        requests:
          # Nyatakan kapasitas penyimpanan. Ini tidak boleh lebih besar dari total kapasitas volume.
          storage: 10Gi
      selector:
        matchLabels:
          # Cocokkan PV berdasarkan label-nya
          alicloud-pvname: pv-oss
  2. Buat PVC tersebut.

    kubectl create -f pvc-oss.yaml
  3. Periksa status PVC.

    kubectl get pvc pvc-oss

    Output menunjukkan bahwa PVC berada dalam status Bound ke PV.

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

Konsol

  1. Pada halaman Clusters, temukan kluster yang diinginkan lalu klik namanya. Di panel kiri, pilih Volumes > Persistent Volume Claims.

  2. Pada halaman PersistentVolumeClaims, klik Create. Pilih OSS sebagai PVC Type, lalu konfigurasikan parameter sesuai petunjuk.

    Tabel berikut mencantumkan parameter utama.

    Parameter

    Deskripsi

    Provisioning Mode

    Pilih Use Existing PersistentVolume.

    Jika Anda belum membuat PV, Anda dapat mengatur Provisioning Mode ke Create PersistentVolume dan mengonfigurasi parameter PV.

    Total Capacity

    Kapasitas PVC, yang tidak boleh melebihi kapasitas PV.

Langkah 4: Buat aplikasi dan pasang volume

Referensikan PVC dalam 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 telah Anda buat
                claimName: pvc-oss
  2. Buat aplikasi tersebut.

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

    • Pastikan 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 lalu klik namanya. Di panel kiri, pilih Workloads > Deployments.

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

  3. Konfigurasikan parameter aplikasi sesuai petunjuk.

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

    Halaman Konfigurasi

    Parameter

    Deskripsi

    Basic Information

    Number Of Replicas

    Jumlah replika untuk Deployment.

    Container Configuration

    Image Name

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

    Required Resources

    Sumber daya vCPU dan memori yang dibutuhkan.

    Volume

    Klik Add Cloud Storage Claim dan konfigurasikan parameter.

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

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

    Labels And Annotations

    Pod Label

    Misalnya, label dengan nama app dan nilai nginx.

  4. Periksa status penerapan aplikasi.

    Pada halaman Deployments, klik nama aplikasi. Pada tab Pods, pastikan Pod berjalan normal (status Running).

Langkah 5: Verifikasi penyimpanan bersama dan persisten

Verifikasi penyimpanan bersama

Buat file di salah satu Pod, lalu periksa keberadaannya di Pod lain untuk memverifikasi fitur penyimpanan bersama.

  1. Lihat informasi Pod dan catat nama Pod dari output berikut:

    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 lainnya.

    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 tersebut berbagi data.

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

Verifikasi penyimpanan persisten

Hapus dan buat ulang Pod, lalu periksa apakah file tersebut 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 status Pod dan tunggu hingga Pod baru berjalan serta mencapai 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 tersebut masih ada, menunjukkan bahwa data dipertahankan.

    tmpfile

Pertimbangan penting

  • Risiko Integritas Data

    • Risiko Konsistensi Tulis Konkuren: Untuk meningkatkan stabilitas operasi tulis, kami merekomendasikan meningkatkan komponen CSI ke versi 1.28 atau lebih baru. Namun, pada skenario tulis konkuren terhadap satu file, fitur "overwrite upload" OSS masih berpotensi menimpa data. Pastikan konsistensi data dikelola di lapisan aplikasi.

    • Risiko Sinkronisasi Data dan Penghapusan Tidak Sengaja: Saat volume dipasang, setiap penghapusan atau modifikasi file di jalur pemasangan—baik dari Pod aplikasi maupun node host—akan langsung disinkronkan ke file sumber di Bucket OSS. Untuk mencegah kehilangan data tidak sengaja, aktifkan Versioning pada Bucket OSS Anda.

  • Risiko Stabilitas Aplikasi

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

      Untuk mengurangi risiko ini, pasang subdirektori Bucket OSS atau optimalkan struktur direktori Anda.

    • Waktu Pemasangan Meningkat: Mengonfigurasi securityContext.fsgroup dalam aplikasi menyebabkan kubelet secara rekursif mengubah izin file (chmod/chown) saat memasang volume. Jika terdapat banyak file, proses ini secara signifikan memperpanjang waktu pemasangan dan dapat menyebabkan penundaan startup Pod yang parah.

      Jika Anda perlu mengonfigurasi parameter ini sekaligus meminimalkan waktu pemasangan, lihat Waktu Pemasangan Meningkat untuk Volume OSS.

    • Risiko Invalisasi Kunci (Autentikasi AccessKey): Jika AccessKey menjadi tidak valid atau izinnya diubah, aplikasi akan langsung kehilangan akses.

      Untuk memulihkan akses, perbarui kredensial di Secret dan restart Pod aplikasi guna memaksa remount, yang akan menyebabkan gangguan layanan. Lakukan operasi ini selama jendela pemeliharaan. Untuk detail selengkapnya, 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 yang 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 mendeteksi anomali volume atau bottleneck kinerja secara cepat.

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