全部产品
Search
文档中心

Container Service for Kubernetes:Pasang volume OSS yang dihasilkan secara dinamis menggunakan ossfs 2.0 di ACK

更新时间:Oct 30, 2025

Untuk aplikasi yang memerlukan penyimpanan persisten atau berbagi data antar Pod, Anda dapat memasang Object Storage Service (OSS) bucket sebagai volume ossfs 2.0 menggunakan Persistent Volume (PV) yang dihasilkan secara dinamis. Pendekatan ini menggunakan StorageClass sebagai template untuk membuat dan mengikat PV secara otomatis, menyederhanakan manajemen penyimpanan serta memungkinkan aplikasi membaca dan menulis data di OSS menggunakan antarmuka POSIX standar seperti sistem file lokal.

Dibandingkan dengan ossfs 1.0, ossfs 2.0 unggul dalam performa baca dan tulis berurutan, menjadikannya ideal untuk memanfaatkan bandwidth tinggi dari OSS.

Untuk detail tentang performa, lihat benchmark performa klien ossfs 2.0.

Ikhtisar Alur Kerja

Gambar dan langkah-langkah berikut menggambarkan alur kerja utama untuk memasang volume ossfs 2.0 yang dihasilkan secara dinamis dalam kluster Container Service for Kubernetes (ACK).

  1. Pilih metode autentikasi: Tentukan apakah akan menggunakan RAM Roles for Service Accounts (RRSA) atau AccessKey statis dan siapkan kredensial yang diperlukan.

    Perbandingan metode autentikasi

    • RRSA: Menyediakan keamanan lebih tinggi dengan menggunakan kredensial sementara yang berotasi otomatis dan mendukung isolasi izin pada tingkat pod. Metode ini cocok untuk lingkungan produksi dan multi-penyewa dengan persyaratan keamanan tinggi.

      Jika Anda menggunakan RRSA, pertama-tama buat dan otorisasi Resource Access Management (RAM) role khusus untuk akses OSS.

    • AccessKey: Metode ini mudah dikonfigurasi tetapi menggunakan kunci statis jangka panjang, yang menimbulkan risiko keamanan jika terungkap. Metode ini direkomendasikan hanya untuk pengujian atau lingkungan pengembangan.

      Jika Anda menggunakan AccessKey, pertama-tama buat Pengguna RAM, peroleh pasangan AccessKey-nya, dan simpan pasangan kunci tersebut sebagai Kubernetes Secret.

  2. Buat StorageClass: Tentukan template penyimpanan yang mencakup informasi bucket OSS, parameter pemasangan, dan konfigurasi autentikasi.

  3. Buat PVC: Minta sumber daya penyimpanan OSS. Tindakan ini secara otomatis memicu provisioning dinamis PV berdasarkan StorageClass yang ditentukan dan mengikatnya ke PVC.

  4. Pasang volume di aplikasi Anda: Pasang PVC sebagai volume di direktori tertentu dalam kontainer Anda.

Pertimbangan

  • Kesesuaian Beban Kerja: ossfs 2.0 dirancang untuk skenario baca-saja dan tulis-lanjut berurutan. Untuk skenario tulis acak atau bersamaan, konsistensi data tidak dapat dijamin. Kami merekomendasikan penggunaan ossfs 1.0 untuk kasus-kasus tersebut.

  • Keselamatan Data: Setiap modifikasi atau penghapusan file di titik pemasangan ossfs (baik dari dalam Pod maupun pada node host) segera disinkronkan dengan bucket OSS sumber. Untuk mencegah kehilangan data yang tidak disengaja, kami merekomendasikan mengaktifkan pengendalian versi untuk bucket.

  • Pemeriksaan Kesehatan Aplikasi: Konfigurasikan pemeriksaan kesehatan (liveness probe) untuk Pod yang menggunakan volume OSS. Misalnya, verifikasi bahwa titik pemasangan masih dapat diakses. Jika pemasangan menjadi tidak sehat, Pod akan otomatis dimulai ulang untuk memulihkan konektivitas.

  • Manajemen Unggah Multipart: Saat mengunggah file besar (> 10 MB), ossfs secara otomatis menggunakan unggah multipart. Jika unggahan terputus, bagian yang tidak lengkap akan tetap ada di bucket. Hapus bagian-bagian ini secara manual atau konfigurasikan aturan siklus hidup untuk membersihkan bagian-bagian ini secara otomatis guna menghemat biaya penyimpanan.

Metode 1: Autentikasi menggunakan RRSA

Dengan memanfaatkan RRSA, Anda dapat mencapai isolasi izin tingkat halus, tingkat PV, untuk mengakses sumber daya cloud, yang secara signifikan mengurangi risiko keamanan. Untuk detailnya, lihat Gunakan RRSA untuk mengotorisasi Pod yang berbeda mengakses layanan cloud yang berbeda.

Prasyarat

Langkah 1: Buat RAM role

Jika Anda telah memasang volume OSS di kluster menggunakan RRSA, lewati langkah ini. Jika ini pertama kalinya, ikuti langkah-langkah berikut:

  1. Aktifkan fitur RRSA di Konsol ACK.

  2. Buat RAM role untuk OIDC IdP. Role ini akan diasumsikan menggunakan RRSA.

    Tabel berikut mencantumkan parameter utama untuk role contoh demo-role-for-rrsa:

    Parameter

    Deskripsi

    Identity Provider Type

    Pilih OIDC.

    Identity Provider

    Pilih penyedia yang terkait dengan kluster Anda, seperti ack-rrsa-<cluster_id>, di mana <cluster_id> adalah ID kluster aktual Anda.

    Condition

    • oidc:iss: Pertahankan nilai default.

    • oidc:aud: Pertahankan nilai default.

    • oidc:sub: Tambahkan kondisi berikut secara manual:

      • Key: Pilih oidc:sub.

      • Operator: Pilih StringEquals.

      • Value: Masukkan system:serviceaccount:ack-csi-fuse:csi-fuse-ossfs.

        Dalam nilai ini, ack-csi-fuse adalah namespace tempat klien ossfs berada, dan tidak dapat disesuaikan. csi-fuse-ossfs adalah nama akun layanan, dan dapat diubah sesuai kebutuhan.

        Untuk informasi lebih lanjut tentang cara memodifikasi nama akun layanan, lihat Bagaimana cara menggunakan ARN atau ServiceAccount tertentu dalam autentikasi RRSA?

    Role Name

    Masukkan demo-role-for-rrsa.

Langkah 2: Berikan izin kepada role demo-role-for-rrsa

  1. Buat kebijakan kustom untuk akses OSS. Untuk informasi lebih lanjut, lihat Buat Kebijakan Kustom.

    Pilih kebijakan baca-saja atau baca/tulis berdasarkan kebutuhan Anda dan ganti mybucket dengan nama bucket Anda.

    • Kebijakan Baca-Saja OSS

      Lihat Dokumen Kebijakan Baca-Saja OSS

      {
          "Statement": [
              {
                  "Action": [
                      "oss:Get*",
                      "oss:List*"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                      "acs:oss:*:*:mybucket",
                      "acs:oss:*:*:mybucket/*"
                  ]
              }
          ],
          "Version": "1"
      }
    • Kebijakan Baca/Tulis OSS

      Lihat Dokumen Kebijakan Baca/Tulis OSS

      {
          "Statement": [
              {
                  "Action": "oss:*",
                  "Effect": "Allow",
                  "Resource": [
                      "acs:oss:*:*:mybucket",
                      "acs:oss:*:*:mybucket/*"
                  ]
              }
          ],
          "Version": "1"
      }
  2. (Opsional) Jika Anda menggunakan ID CMK yang dikelola oleh KMS untuk mengenkripsi objek OSS, Anda harus mengonfigurasi izin KMS untuk Pengguna RAM. Untuk informasi lebih lanjut, lihat Operasi Enkripsi.

  3. Berikan izin kepada role demo-role-for-rrsa. Untuk informasi lebih lanjut, lihat Berikan Izin kepada RAM Role.

    Catatan

    Anda juga dapat menggunakan RAM role yang sudah ada yang telah diberikan izin OSS dengan memodifikasi kebijakan kepercayaannya. Untuk informasi lebih lanjut, lihat Gunakan dan Berikan Izin kepada RAM Role yang Sudah Ada.

Langkah 3: Buat StorageClass

Buat StorageClass untuk digunakan sebagai template untuk provisioning dinamis PV.

  1. Buat file bernama ossfs2-sc-rrsa.yaml dengan konten berikut:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: ossfs2-sc  # Nama StorageClass.
    parameters:
      bucket: cnfs-oss-test  # Nama bucket.
      path: /subpath  # Subdirektori untuk dipasang. Jika dibiarkan kosong, direktori root akan dipasang.
      url: oss-cn-hangzhou-internal.aliyuncs.com  # Titik akhir wilayah tempat OSS Bucket berada.
      authType: rrsa
      roleName: demo-role-for-rrsa  # RAM role yang dibuat sebelumnya.
      fuseType: ossfs2
      volumeAs: sharepath
      otherOpts: "-o close_to_open=false"
    provisioner: ossplugin.csi.alibabacloud.com  # Nilai ini tetap.
    reclaimPolicy: Retain  # Kebijakan pengambilan kembali untuk PV yang dihasilkan secara dinamis. Hanya Retain yang didukung, yang berarti PV dan data di OSS Bucket tidak dihapus saat PVC dihapus.
    volumeBindingMode: Immediate  # Mode pengikatan volume. Volume OSS tidak memerlukan afinitas zona berbasis node, jadi Anda dapat menggunakan nilai default Immediate.

    Tabel berikut menjelaskan parameter dalam bidang parameters:

    Parameter

    Diperlukan

    Deskripsi

    bucket

    Ya

    Nama bucket OSS untuk dipasang.

    path

    Ya

    Path dasar dalam bucket. Ketika volumeAs diatur ke sharepath, setiap PV yang dihasilkan secara dinamis diberi subdirektori unik di bawah path ini, seperti /ack/<pv-name>.

    url

    Ya

    Titik akses endpoint untuk bucket OSS.

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

    • Gunakan endpoint publik jika node pemasangan dan bucket berada di wilayah yang berbeda.

    Berikut adalah format umum untuk endpoint akses yang berbeda:

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

      Format endpoint akses internal vpc100-oss-{{regionName}}.aliyuncs.com sudah tidak digunakan lagi. Beralihlah ke format baru sesegera mungkin.
    • Publik: http://oss-{{regionName}}.aliyuncs.com atau https://oss-{{regionName}}.aliyuncs.com.

    fuseType

    Ya

    Menentukan klien yang digunakan untuk pemasangan. Harus diatur ke ossfs2 untuk menggunakan klien ossfs 2.0.

    authType

    Ya

    Diatur ke rrsa untuk menyatakan bahwa metode autentikasi RRSA digunakan.

    roleName

    Ya

    Diatur ke nama RAM role yang Anda buat atau modifikasi.

    Untuk memberikan izin berbeda untuk PV yang berbeda, buat RAM role terpisah untuk setiap set izin. Kemudian, dalam definisi setiap PV, gunakan parameter roleName untuk mengaitkannya dengan role yang sesuai.

    volumeAs

    Tidak

    Menentukan bagaimana PV dihasilkan. sharepath menunjukkan bahwa setiap PV membuat subdirektori terpisah di direktori yang ditentukan oleh path.

    otherOpts

    Tidak

    Opsi pemasangan tambahan yang diteruskan ke volume OSS, ditentukan sebagai string bendera yang dipisahkan spasi dalam format -o *** -o ***. Sebagai contoh, -o close_to_open=false.

    Opsi close-to-open mengontrol konsistensi metadata. Saat diatur ke false (default), metadata disimpan dalam cache untuk meningkatkan performa pembacaan file kecil. Saat diatur ke true, klien mengambil metadata terbaru dari OSS dengan mengirimkan permintaan GetObjectMeta setiap kali file dibuka, memastikan konsistensi waktu nyata dengan biaya peningkatan latensi dan panggilan API.

    Untuk parameter opsional lainnya, lihat opsi pemasangan ossfs 2.0.

  2. Terapkan StorageClass.

    kubectl create -f ossfs2-sc-rrsa.yaml
  3. Periksa status StorageClass.

    kubectl get sc ossfs2-sc

    Keluaran yang Diharapkan:

    NAME        PROVISIONER                      RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
    ossfs2-sc   ossplugin.csi.alibabacloud.com   Retain          Immediate                                  10s

Langkah 4: Buat PVC

Buat PVC untuk meminta sumber daya penyimpanan dari StorageClass. Operasi ini memicu pembuatan otomatis PV yang mendasarinya.

  1. Buat file bernama ossfs2-pvc-dynamic.yaml dengan konten berikut:

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: pvc-ossfs2 # Nama PVC.
      namespace: default
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 20Gi
      storageClassName: ossfs2-sc   # StorageClass yang dibuat sebelumnya.
  2. Buat PVC.

    kubectl create -f ossfs2-pvc-dynamic.yaml
  3. Verifikasi bahwa PVC berstatus Bound, yang menunjukkan bahwa PVC telah terikat ke PV yang dihasilkan secara otomatis.

    kubectl get pvc pvc-ossfs2

    Keluaran yang Diharapkan:

    NAME        STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS     AGE
    pvc-ossfs2  Bound    d-bp17y03tpy2b8x******   20Gi       RWX            ossfs2-sc        25s

Langkah 5: Buat aplikasi dan pasang volume

Sekarang Anda dapat memasang sumber daya penyimpanan yang terikat pada PVC di aplikasi Anda.

  1. Buat file bernama ossfs2-test.yaml dengan konten berikut.

    Template YAML berikut menciptakan StatefulSet yang terdiri dari satu Pod. Pod tersebut meminta sumber daya penyimpanan melalui PVC bernama pvc-ossfs2 dan memasang volume ke path /data.

    Template YAML

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: ossfs2-test
      namespace: default
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: ossfs2-test
      template:
        metadata:
          labels:
            app: ossfs2-test
        spec:
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            ports:
            - containerPort: 80
            volumeMounts:
            - name: pvc-ossfs2
              mountPath: /data
          volumes:
            - name: pvc-ossfs2
              persistentVolumeClaim:
                claimName: pvc-ossfs2
  2. Deploy aplikasi.

    kubectl create -f ossfs2-test.yaml
  3. Periksa status deployment Pod.

    kubectl get pod -l app=ossfs2-test

    Keluaran yang Diharapkan:

    NAME            READY   STATUS    RESTARTS   AGE
    ossfs2-test-0   1/1     Running   0          2m
  4. Verifikasi bahwa Anda dapat membaca dan menulis ke titik pemasangan.

    # Tulis file uji ke target pemasangan.
    kubectl exec -it ossfs2-test-0 -- touch /data/test.txt
    # Lihat isi target pemasangan.
    kubectl exec -it ossfs2-test-0 -- ls /data

    Keluaran harus menampilkan file test.txt yang Anda buat, menunjukkan bahwa volume telah dipasang dan Anda memiliki izin menulis.

Metode 2: Autentikasi menggunakan AccessKey

ACK mendukung autentikasi pemasangan volume OSS dengan menyimpan AccessKey statis di dalam Kubernetes Secret. Pendekatan ini cocok untuk skenario di mana aplikasi tertentu memerlukan akses jangka panjang dengan izin tetap.

  • Jika AccessKey yang dirujuk oleh PV dicabut atau izinnya diubah, aplikasi apa pun yang menggunakan volume akan langsung kehilangan akses dan mengalami kesalahan izin. Untuk memulihkan akses, perbarui kredensial di Secret, lalu mulai ulang Pod aplikasi untuk memaksa pemasangan ulang. Proses ini menyebabkan gangguan layanan singkat dan hanya boleh dilakukan selama jendela pemeliharaan yang dijadwalkan.

  • Untuk menghindari downtime terkait rotasi kunci manual, kami sangat merekomendasikan menggunakan metode autentikasi RRSA sebagai gantinya.

Prasyarat

Langkah 1: Buat Pengguna RAM dengan izin akses OSS dan peroleh pasangan AccessKey

Buat Pengguna RAM dan berikan izin

  1. Buat Pengguna RAM. Anda dapat melewati langkah ini jika sudah memiliki Pengguna RAM. Untuk informasi lebih lanjut, lihat Buat Pengguna RAM.

  2. Buat kebijakan kustom untuk akses OSS. Untuk informasi lebih lanjut, lihat Buat Kebijakan Kustom.

    Pilih kebijakan baca-saja atau baca/tulis berdasarkan kebutuhan Anda dan ganti mybucket dengan nama bucket Anda.

    • Kebijakan Baca-Saja OSS

      Lihat Dokumen Kebijakan Baca-Saja OSS

      {
          "Statement": [
              {
                  "Action": [
                      "oss:Get*",
                      "oss:List*"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                      "acs:oss:*:*:mybucket",
                      "acs:oss:*:*:mybucket/*"
                  ]
              }
          ],
          "Version": "1"
      }
    • Kebijakan Baca/Tulis OSS

      Lihat Dokumen Kebijakan Baca/Tulis OSS

      {
          "Statement": [
              {
                  "Action": "oss:*",
                  "Effect": "Allow",
                  "Resource": [
                      "acs:oss:*:*:mybucket",
                      "acs:oss:*:*:mybucket/*"
                  ]
              }
          ],
          "Version": "1"
      }
  3. (Opsional) Jika Anda menggunakan ID CMK yang dikelola oleh KMS untuk mengenkripsi objek OSS, Anda juga harus mengonfigurasi izin KMS untuk Pengguna RAM. Untuk informasi lebih lanjut, lihat Operasi Enkripsi.

  4. Berikan izin OSS kepada Pengguna RAM. Untuk informasi lebih lanjut, lihat Berikan Izin kepada Pengguna RAM.

  5. Buat AccessKey untuk Pengguna RAM. Untuk informasi lebih lanjut, lihat Dapatkan AccessKey.

Buat Secret untuk menyimpan kredensial AccessKey

Jalankan perintah berikut untuk membuat Secret untuk autentikasi OSS. Ganti akId dan akSecret dengan kredensial aktual Anda.

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

Langkah 2: Buat StorageClass

  1. Buat file bernama ossfs2-sc.yaml dengan konten berikut:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: ossfs2-sc
    parameters:
      # Gunakan Secret yang dibuat dalam persiapan.
      csi.storage.k8s.io/node-publish-secret-name: oss-secret  
      csi.storage.k8s.io/node-publish-secret-namespace: default
      fuseType: ossfs2
      bucket: cnfs-oss-test # Nama bucket.
      path: /subpath  # Subdirektori untuk dipasang. Jika dibiarkan kosong, direktori root akan dipasang.
      url: oss-cn-hangzhou-internal.aliyuncs.com  # Titik akhir wilayah tempat OSS Bucket berada.
      otherOpts: "-o close_to_open=false"
    provisioner: ossplugin.csi.alibabacloud.com  # Nilai ini tetap.
    reclaimPolicy: Retain  # Kebijakan pengambilan kembali untuk PV yang dihasilkan secara dinamis. Hanya Retain yang didukung, yang berarti PV dan data di OSS Bucket tidak dihapus saat PVC dihapus.
    volumeBindingMode: Immediate  # Mode pengikatan volume. Volume OSS tidak memerlukan afinitas zona berbasis node, jadi Anda dapat menggunakan nilai default Immediate.

    Tabel berikut menjelaskan parameter dalam bidang parameters:

    • Konfigurasi Secret

      Parameter

      Diperlukan

      Deskripsi

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

      Ya

      Nama Secret yang menyimpan informasi AccessKey.

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

      Ya

      Namespace tempat Secret yang menyimpan informasi AccessKey berada.

    • Konfigurasi Volume

      Parameter

      Diperlukan

      Deskripsi

      fuseType

      Ya

      Menentukan klien yang digunakan untuk pemasangan. Harus diatur ke ossfs2 untuk menggunakan klien ossfs 2.0.

      bucket

      Ya

      Nama bucket OSS yang ingin Anda pasang.

      path

      Tidak

      Path pemasangan bucket OSS, yang mewakili struktur direktori relatif terhadap root bucket.

      url

      Ya

      Titik akhir yang digunakan untuk memasang bucket OSS. Anda dapat menemukan titik akhir di halaman Ikhtisar bucket di Konsol OSS.

      • Jika node dan bucket berada di wilayah yang sama, atau jika koneksi VPC telah dibuat, gunakan endpoint internal.

      • Jika node dan bucket berada di wilayah yang berbeda, gunakan endpoint publik.

      Format berikut umumnya digunakan untuk port akses yang berbeda:

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

      • Format endpoint publik: http://oss-{{regionName}}.aliyuncs.com atau https://oss-{{regionName}}.aliyuncs.com.

      Penting

      Format endpoint internal vpc100-oss-{{regionName}}.aliyuncs.com sudah tidak digunakan lagi. Beralihlah ke format baru segera.

      otherOpts

      Tidak

      Masukkan parameter kustom untuk volume OSS dalam format -o *** -o ***, misalnya, -o close_to_open=false.

      close-to-open: Dinonaktifkan secara default. Jika diaktifkan, sistem mengirimkan permintaan GetObjectMeta ke OSS setiap kali file dibuka untuk mendapatkan metadata terbaru. Ini memastikan metadata selalu mutakhir. Namun, dalam skenario dengan banyak pembacaan file kecil, kueri metadata sering dapat meningkatkan latensi akses secara signifikan.

      Untuk parameter opsional lainnya, lihat opsi pemasangan ossfs 2.0.

  2. Buat StorageClass.

    kubectl create -f ossfs2-sc.yaml

Langkah 3: Buat PVC

Buat PVC untuk meminta sumber daya penyimpanan dari StorageClass. Operasi ini memicu pembuatan otomatis PV yang mendasarinya.

  1. Buat file bernama ossfs2-pvc-dynamic.yaml dengan konten berikut:

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: pvc-ossfs2 # Nama PVC.
      namespace: default
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 20Gi
      storageClassName: ossfs2-sc   # StorageClass yang dibuat sebelumnya.
  2. Buat PVC.

    kubectl create -f ossfs2-pvc-dynamic.yaml
  3. Verifikasi bahwa PVC berstatus Bound, yang menunjukkan bahwa PVC telah terikat ke PV yang dihasilkan secara otomatis.

    kubectl get pvc pvc-ossfs2

    Keluaran yang Diharapkan:

    NAME        STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS     AGE
    pvc-ossfs2  Bound    d-bp17y03tpy2b8x******   20Gi       RWX            ossfs2-sc        25s

Langkah 4: Buat aplikasi dan pasang volume

Sekarang Anda dapat memasang sumber daya penyimpanan yang terikat pada PVC di aplikasi Anda.

  1. Buat file bernama ossfs2-test.yaml dengan konten berikut.

    Template YAML berikut menciptakan StatefulSet yang terdiri dari satu Pod. Pod tersebut meminta sumber daya penyimpanan melalui PVC bernama pvc-ossfs2 dan memasang volume ke path /data.

    Template YAML

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: ossfs2-test
      namespace: default
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: ossfs2-test
      template:
        metadata:
          labels:
            app: ossfs2-test
        spec:
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            ports:
            - containerPort: 80
            volumeMounts:
            - name: pvc-ossfs2
              mountPath: /data
          volumes:
            - name: pvc-ossfs2
              persistentVolumeClaim:
                claimName: pvc-ossfs2
  2. Deploy aplikasi.

    kubectl create -f ossfs2-test.yaml
  3. Periksa status deployment Pod.

    kubectl get pod -l app=ossfs2-test

    Keluaran yang Diharapkan:

    NAME            READY   STATUS    RESTARTS   AGE
    ossfs2-test-0   1/1     Running   0          2m
  4. Verifikasi bahwa Anda dapat membaca dan menulis ke titik pemasangan.

    # Tulis file uji ke target pemasangan.
    kubectl exec -it ossfs2-test-0 -- touch /data/test.txt
    # Lihat isi target pemasangan.
    kubectl exec -it ossfs2-test-0 -- ls /data

    Keluaran harus menampilkan file test.txt yang Anda buat, menunjukkan bahwa volume telah dipasang dan Anda memiliki izin menulis.

Penerapan dalam produksi

Kategori

Praktik terbaik

Keamanan dan izin

  • Utamakan RRSA untuk autentikasi: Ini menyediakan kredensial sementara yang berotasi otomatis melalui OpenID Connect (OIDC) dan Security Token Service (STS) serta memungkinkan isolasi izin tingkat halus pada tingkat pod, secara signifikan mengurangi risiko kebocoran kredensial.

  • Ikuti prinsip hak istimewa minimal: Saat membuat role atau pengguna RAM, berikan hanya izin minimum yang diperlukan agar aplikasi dapat berfungsi.

Performa dan biaya

  • Optimalkan opsi pemasangan (otherOpts):

    • Caching metadata (-o close_to_open=false): Ini adalah perilaku default. Metadata file disimpan dalam cache, yang mengurangi latensi dan biaya panggilan API, menjadikannya ideal untuk beban kerja yang membaca banyak file kecil.

    • Metadata waktu nyata (-o close_to_open=true): Gunakan ini hanya jika sistem lain sering memperbarui file di OSS dan Pod Anda perlu melihat perubahan tersebut segera. Opsi ini meningkatkan latensi dan biaya API.

    Untuk optimasi performa lebih lanjut berdasarkan skenario bisnis Anda, lihat opsi pemasangan ossfs 2.0.

  • Pahami beban kerja Anda:

    • ossfs 2.0 sangat cocok untuk pola baca berat dan tulis-lanjut saja yang tidak bergantung pada API berbasis POSIX penuh, seperti pelatihan AI, inferensi, pemrosesan data besar, dan mengemudi otonom.

    • ossfs 2.0 tidak cocok untuk beban kerja tulis acak yang memerlukan modifikasi konten file secara sering, seperti database atau aplikasi pengeditan kolaboratif.

  • Bersihkan unggahan multipart yang tidak lengkap: Jika aplikasi Anda sering membatalkan unggahan file besar, konfigurasikan aturan siklus hidup pada bucket OSS Anda untuk menghapus unggahan multipart yang tidak lengkap secara berkala. Ini akan mencegah bagian yang tidak digabungkan menumpuk dan menimbulkan biaya penyimpanan yang tidak perlu.

  • Gunakan endpoint internal: Jika kluster Anda dan bucket OSS berada di wilayah yang sama, selalu gunakan endpoint internal untuk menghindari biaya transfer data publik dan mengurangi latensi jaringan.

Manajemen O&M

  • Konfigurasikan pemeriksaan kesehatan: Konfigurasikan liveness probe di pod aplikasi Anda untuk memeriksa ketersediaan titik pemasangan. Jika pemasangan gagal, Kubernetes akan otomatis memulai ulang pod, memicu pemasangan ulang.

  • Atur pemantauan dan peringatan: Gunakan pemantauan penyimpanan kontainer untuk melacak performa dan kapasitas volume, serta konfigurasikan peringatan untuk mengidentifikasi masalah secara proaktif.

FAQ