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.
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
-
Pada halaman ACK Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Cluster Information.
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.
PentingSetelah 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.
AccessKey
Buat pengguna RAM dengan izin untuk mengakses bucket OSS target, lalu peroleh AccessKey untuk pengguna tersebut.
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.
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.
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": "*" }(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.
Lampirkan kebijakan akses ke pengguna RAM.
Buka halaman Users di Konsol RAM, temukan pengguna yang telah Anda buat, lalu di kolom Actions, klik Add Permissions.
Di bagian Policies, cari dan pilih kebijakan akses yang telah Anda buat.
AccessKey yang Anda buat akan disimpan sebagai Secret untuk PV.
Buka halaman Users di Konsol RAM, klik nama pengguna RAM Anda, lalu di bagian AccessKey, klik Create AccessKey.
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
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
bucketBucket OSS yang akan dipasang.
regionSaat menggunakan signature OSS v4, atur ini ke wilayah OSS tempat bucket berada. Untuk menanyakan wilayah OSS, lihat Tanyakan wilayah bucket.
Saat parameter ini diatur,
v4secara otomatis digunakan sebagai versi signature OSS.pathVersi 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,
pathyang ditentukan harus ada di bucket OSS. Untuk informasi lebih lanjut, lihat Fitur baru di ossfs 1.91 dan seterusnya.urlAkses 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.comatauhttps://oss-{{regionName}}-internal.aliyuncs.com.Format titik akhir internal
vpc100-oss-{{regionName}}.aliyuncs.comsudah tidak digunakan lagi. Segera beralih ke format baru.Publik:
http://oss-{{regionName}}.aliyuncs.comatauhttps://oss-{{regionName}}.aliyuncs.com.
Demi keamanan, kami merekomendasikan mengakses OSS melalui HTTPS. Untuk menggunakan HTTP, ganti awalan
https://pada format di atas denganhttp://.authTypeAtur parameter ini ke
rrsauntuk menggunakan RRSA dalam autentikasi.roleNamePeran RAM yang telah Anda buat atau modifikasi.
Untuk mengonfigurasi izin berbeda untuk StorageClass berbeda, Anda dapat membuat beberapa peran RAM dan menentukan nilai
roleNameberbeda di setiap StorageClass.otherOptsParameter kustom untuk persistent volume OSS, dalam format
-o *** -o ***. Contoh:-o umask=022 -o max_stat_cache_size=100000 -o allow_other.provisionerJenis driver. Nilai ini tetap
ossplugin.csi.alibabacloud.comsaat menggunakan plug-in CSI OSS Alibaba Cloud.reclaimPolicyKebijakan 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.volumeBindingModeMode pengikatan volume.
Persistent volume OSS tidak memerlukan afinitas node berbasis zona ketersediaan. Anda dapat menggunakan nilai default
Immediate.volumeAsMode 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.
sigVersionVersi signature untuk permintaan yang dikirim ke server OSS.
"v1"(Default): Menggunakan Signature Version 1 OSS."v4"(Direkomendasikan): Menggunakan Signature Version 4 OSS.
Buat StorageClass.
kubectl apply -f sc-oss.yaml
Metode AccessKey
kubectl
1. Buat StorageClass
Buat Secret di namespace yang sama dengan aplikasi Anda.
Ganti
akIddanakSecretdengan ID AccessKey dan Rahasia AccessKey Anda.kubectl create secret generic oss-secret --from-literal='akId=<yourAccessKey ID>' --from-literal='akSecret=<yourAccessKey Secret>'Buat StorageClass.
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: ImmediateParameter
Deskripsi
nameNama StorageClass.
bucketBucket OSS yang akan dipasang.
regionSaat menggunakan signature OSS v4, atur ini ke wilayah OSS tempat bucket berada. Untuk menanyakan wilayah OSS, lihat Tanyakan wilayah bucket.
Saat parameter ini diatur,
v4secara otomatis digunakan sebagai versi signature OSS.pathVersi 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,
pathyang ditentukan harus ada di bucket OSS. Untuk informasi lebih lanjut, lihat Fitur baru di ossfs 1.91 dan seterusnya.urlTitik 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.comsudah 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 denganhttp://.csi.storage.k8s.io/node-publish-secret-nameNama Secret yang menyimpan informasi AccessKey.
csi.storage.k8s.io/node-publish-secret-namespaceNamespace tempat Secret yang menyimpan informasi AccessKey berada.
otherOptsParameter kustom untuk persistent volume OSS, dalam format
-o *** -o ***. Contoh:-o umask=022 -o max_stat_cache_size=100000 -o allow_other.provisionerJenis driver. Nilai ini tetap
ossplugin.csi.alibabacloud.comsaat menggunakan plug-in CSI OSS Alibaba Cloud.reclaimPolicyKebijakan 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.volumeBindingModeMode pengikatan volume.
Persistent volume OSS tidak memerlukan afinitas node berbasis zona ketersediaan. Anda dapat menggunakan nilai default
Immediate.volumeAsMode 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.
sigVersionVersi signature untuk permintaan yang dikirim ke server OSS.
"v1"(Default): Menggunakan Signature Version 1 OSS."v4"(Direkomendasikan): Menggunakan Signature Version 4 OSS.
Buat StorageClass.
kubectl apply -f sc-oss.yaml
Konsol
Simpan AccessKey dari Langkah 1 sebagai Secret untuk persistent volume.
-
Pada halaman ACK Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
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>
-
-
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
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,
pathyang 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.comatauhttps://oss-{{regionName}}-internal.aliyuncs.com.CatatanFormat titik akhir akses internal
vpc100-oss-{{regionName}}.aliyuncs.comsudah tidak digunakan lagi. Segera beralih ke format baru.Publik:
http://oss-{{regionName}}.aliyuncs.comatauhttps://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.
Langkah 3: Buat PVC
Buat PVC untuk meminta resource penyimpanan secara dinamis. Plug-in CSI secara otomatis membuat PV berdasarkan StorageClass.
kubectl
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-ossParameter
Deskripsi
accessModesMenentukan mode akses. Nilai yang didukung adalah
ReadOnlyManydanReadWriteMany.Jika diatur ke
ReadOnlyMany, ossfs memasang bucket OSS dalam mode read-only.storageKapasitas yang diminta untuk volume. Nilai ini tidak membatasi kapasitas aktual volume OSS.
storageClassNameNama StorageClass.
Buat PVC:
kubectl apply -f pvc-oss.yamlVerifikasi bahwa PVC telah dibuat dan berada dalam status Bound:
kubectl get pvc pvc-ossOutput 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
-
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
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
ReadOnlyManydanReadWriteMany.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
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-ossBuat aplikasi.
kubectl create -f oss-workload.yamlVerifikasi pemasangan.
Konfirmasi bahwa Pod sedang berjalan.
kubectl get pod -l app=nginxAkses Pod dan periksa titik pemasangan.
kubectl exec -it <pod-name> -- ls /dataOutput harus mencantumkan file di jalur pemasangan OSS.
Konsol
-
Pada halaman ACK Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
Di pojok kanan atas halaman Deployments, klik Create from Image.
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'.
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.
Dapatkan nama Pod aplikasi.
kubectl get pod -l app=nginxContoh ini menggunakan Pod
oss-workload-66fbb85b67-d****:ReadWriteMany: Buat file tmpfile di jalur/data.kubectl exec oss-workload-66fbb85b67-d**** -- touch /data/tmpfileReadOnlyMany: Unggah filetmpfileke jalur yang sesuai di bucket OSS menggunakan konsol OSS atau dengan mengunggah file dengan cp.
Periksa keberadaan file di jalur pemasangan Pod lain.
Ambil contoh Pod bernama
oss-workload-66fbb85b67-l****dengan jalur pemasangandata.kubectl exec oss-workload-66fbb85b67-l**** -- ls /data | grep tmpfileKehadiran file dalam output mengonfirmasi bahwa Pod dapat berbagi data.
tmpfileJika 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.
Hapus Pod aplikasi. Pengontrol Deployment secara otomatis membuat ulang Pod tersebut.
kubectl delete pod oss-workload-66fbb85b67-d****Periksa status Pod. Tunggu hingga Pod baru mulai dan menjadi
Running.kubectl get pod -l app=nginxLihat file di jalur
/data.Contoh ini menggunakan Pod bernama
oss-workload-66fbb85b67-z****dengan jalur pemasangandata.kubectl exec oss-workload-66fbb85b67-z**** -- ls /data | grep tmpfileOutput menunjukkan file
tmpfilemasih 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 perintahlsdalam 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.fsgroupdalam 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
Biaya bagian: Saat mengunggah file lebih besar dari 10 MB, ossfs melakukan unggah multi-bagian, membagi file menjadi bagian-bagian. Jika unggahan terputus secara tidak terduga, misalnya karena restart aplikasi, Anda harus menghapus bagian-bagian tersebut secara manual atau menghapusnya menggunakan aturan siklus hidup untuk menghindari biaya penyimpanan dari bagian yang tidak lengkap.
Pelepasan resource
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>
Hapus PVC
Tindakan: Hapus PVC. Kebijakan reclaim (
reclaimPolicy) untuk volume OSS yang disediakan secara dinamis hanya mendukungRetain. Saat Anda menghapus PVC, PV yang terikat akan memasuki statusReleased, dan bucket OSS backend mempertahankan subdirektori serta data yang sesuai.Perintah contoh:
kubectl delete pvc <your-pvc-name>
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>
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.