Object Storage Service (OSS) adalah layanan penyimpanan cloud yang aman, hemat biaya, dan tahan lama dari Alibaba Cloud untuk menyimpan data tidak terstruktur dalam jumlah besar seperti gambar, audio, dan video. Artikel ini menjelaskan cara memasang OSS bucket ke pod berbasis instans wadah elastis di ACK Serverless cluster menggunakan klaim volume persisten (PVC).
Prasyarat
Sebuah ACK Serverless cluster telah dibuat. Untuk informasi lebih lanjut, lihat Buat sebuah kluster.
Catatan penggunaan
OSS adalah layanan penyimpanan bersama. Anda dapat memasang satu OSS bucket ke beberapa pod.
Disarankan untuk menyimpan tidak lebih dari 1.000 file di direktori pemasangan. Jika Anda menyimpan sejumlah besar file di direktori pemasangan, ossfs akan mengonsumsi memori tinggi, yang dapat menyebabkan kesalahan habis memori (OOM) pada pod.
Prosedur
Dapatkan informasi tentang OSS bucket yang ingin digunakan.
Jika tidak ada OSS bucket yang tersedia, buat satu di konsol OSS. Untuk informasi lebih lanjut, lihat Buat sebuah ACK Serverless cluster.
Masuk ke OSS console. Di panel navigasi di sebelah kiri, klik Buckets.
Di halaman Buckets, cari Bucket OSS yang ingin digunakan, lalu klik nama bucket tersebut.
Di halaman detail bucket, klik tab Overview. Di bagian Port, salin titik akhir sesuai dengan informasi berikut:
Jika bucket dan kluster berada di wilayah yang sama, salin titik akhir internal.
Jika bucket dan kluster berada di wilayah yang berbeda, salin titik akhir publik.
Gunakan salah satu metode berikut untuk memberikan izin akses ke OSS:
Metode 1: (Direkomendasikan) Gunakan peran RAM untuk memberikan izin
Buat peran Resource Access Management (RAM) dan lampirkan kebijakan RAM ke peran RAM. Saat membuat peran RAM, atur Principal Type menjadi Cloud Service, dan atur Principal Name menjadi Elastic Compute Service / ECS. Lampirkan kebijakan AliyunOSSFullAccess ke peran RAM. Untuk informasi lebih lanjut, lihat Buat peran RAM untuk layanan tepercaya Alibaba Cloud dan Berikan izin ke peran RAM.
Metode 2: Gunakan pasangan AccessKey untuk memberikan izin
Dapatkan ID AccessKey dan rahasia AccessKey dari pengguna RAM yang digunakan. Untuk informasi lebih lanjut, lihat Dapatkan pasangan AccessKey.
Buat sebuah file bernama test-ack-oss.yaml dan salin konten berikut ke file tersebut:
CatatanDalam contoh ini, VPC digunakan. Pastikan bahwa instans, repositori gambar, dan OSS bucket berada di wilayah yang sama, seperti China (Beijing).
Jika Anda ingin memasang bucket OSS atau menarik gambar lintas wilayah, Anda harus mengonfigurasi akses melalui Internet dan mengubah alamat gambar atau URL bucket OSS ke format yang valid. Anda harus memodifikasi bidang
imagedanurldalam kode berikut untuk akses Internet.image: Atur nilainya menjadiregistry.cn-beijing.aliyuncs.com/eci_open/nginx:1.14.2.url: Atur nilainya menjadi titik akhir publik.
apiVersion: apps/v1 kind: Deployment metadata: name: test-ack-oss labels: alibabacloud.com/eci: "true" spec: replicas: 2 selector: matchLabels: alibabacloud.com/eci: "true" template: metadata: labels: alibabacloud.com/eci: "true" spec: containers: - name: nginx image: registry-vpc.cn-beijing.aliyuncs.com/eci_open/nginx:1.14.2 ports: - containerPort: 80 volumeMounts: - name: cache-volume mountPath: /cache-test volumes: - name: cache-volume persistentVolumeClaim: claimName: oss-pvc --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: oss-pvc spec: storageClassName: test accessModes: - ReadWriteMany resources: requests: storage: 5Gi selector: matchLabels: alicloud-pvname: pv-oss --- apiVersion: v1 kind: PersistentVolume metadata: name: oss-csi-pv labels: alicloud-pvname: pv-oss spec: storageClassName: test capacity: storage: 5Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain csi: driver: ossplugin.csi.alibabacloud.com volumeHandle: oss-csi-pv volumeAttributes: bucket: "oss-test" url: "oss-cn-beijing-internal.aliyuncs.com" otherOpts: "-o max_stat_cache_size=0 -o allow_other" ramRole: "<your RAM Role Name>"Dalam contoh sebelumnya, peran RAM digunakan untuk memberikan izin. Jika Anda ingin menggunakan pasangan AccessKey Anda untuk otorisasi, ganti
ramRole: "<your RAM Role Name>"dengan baris-baris berikut:akId: "<your AccessKey ID>" akSecret: "<your AccessKey Secret>"CatatanJika OSS bucket dan kluster tempat Anda ingin memasang bucket milik akun Alibaba Cloud yang berbeda, Anda harus menentukan pasangan AccessKey dari akun tempat OSS bucket dimiliki.
Tabel berikut menjelaskan parameter yang dapat dikonfigurasi di bagian volumeAttributes.
Parameter
Deskripsi
bucket
Nama OSS bucket. Hanya OSS bucket yang dapat dipasang ke pod. Subdirektori atau file di dalam OSS bucket tidak dapat dipasang ke pod.
url
Titik akhir OSS bucket, yang diperoleh di Langkah 1.
Jika bucket dan kluster berada di wilayah yang sama, gunakan titik akhir internal.
Jika bucket dan kluster berada di wilayah yang berbeda, gunakan titik akhir publik.
otherOpts
Opsi kustom yang ditentukan untuk memasang OSS bucket. Format: -o *** -o ***. Contoh: -o max_stat_cache_size=0 -o allow_other.
ramRole
Peran RAM yang digunakan untuk memberikan izin.
akId
ID AccessKey yang digunakan untuk memberikan izin.
akSecret
Rahasia AccessKey yang digunakan untuk memberikan izin.
Jalankan perintah berikut untuk membuat pod berbasis instans wadah elastis yang memiliki OSS bucket terpasang:
kubectl create -f test-ack-oss.yamlJalankan perintah berikut untuk menanyakan pod:
kubectl get pods -o wideOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES test-ack-oss-655db9d64d-5q7d9 1/1 Running 0 46s 172.16.XX.XXX virtual-kubelet-cn-****-k <none> <none> test-ack-oss-655db9d64d-m5vct 1/1 Running 0 46s 172.16.XX.XXX virtual-kubelet-cn-****-k <none> <none>Periksa direktori file di pod dan verifikasi bahwa direktori pemasangan /cache-test dibuat untuk OSS bucket. Selain itu, verifikasi bahwa file yang ditulis ke satu pod ditampilkan di pod lainnya. Ini menunjukkan bahwa kedua pod berbagi OSS bucket.

Referensi
Untuk informasi lebih lanjut tentang volume OSS, lihat Ikhtisar volume OSS.