Volume memungkinkan langkah-langkah alur kerja berbagi data dengan membaca dan menulis ke path pemasangan bersama. Topik ini menjelaskan cara memasang volume Object Storage Service (OSS) dan volume File Storage NAS yang sudah ada di kluster alur kerja serta mereferensikannya dalam Argo Workflows.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Kluster alur kerja yang dibuat di ACK
Bucket OSS (untuk volume OSS) atau sistem file NAS (untuk volume NAS) di wilayah yang sama dengan kluster Anda
ID AccessKey dan Secret AccessKey dengan akses baca/tulis ke resource penyimpanan
Kasus penggunaan
Berbagi data antarlangkah: Tulis output dari satu langkah (misalnya, whalesay) ke volume, lalu baca di langkah berikutnya (misalnya, print-message).
Mempertahankan artefak alur kerja: Simpan output alur kerja di OSS atau NAS untuk digunakan lebih lanjut setelah alur kerja selesai.
Latar belakang: PV, PVC, dan Argo Workflows
PersistentVolume (PV) adalah resource penyimpanan tingkat kluster yang disediakan oleh administrator. PersistentVolumeClaim (PVC) adalah permintaan atas penyimpanan tersebut oleh workload — Pod dan langkah alur kerja mereferensikan PVC, bukan PV secara langsung. Anggaplah PV sebagai penyimpanan aktual dan PVC sebagai klaim untuk menggunakannya.
YAML alur kerja menggunakan sintaksis volumes dan volumeMounts yang sama seperti spesifikasi Pod Kubernetes, sehingga pengetahuan Kubernetes yang sudah ada dapat langsung diterapkan.
Gunakan volume OSS
Klik untuk melihat contoh YAML penggunaan volume penyimpanan OSS
Terapkan YAML berikut untuk membuat Secret, PV, dan PVC untuk bucket OSS Anda.
Untuk daftar lengkap opsi ossfs, lihat Pasang volume ossfs 1.0 yang disediakan secara statis.
apiVersion: v1
kind: Secret
metadata:
name: oss-secret # Direferensikan oleh nodePublishSecretRef PV
namespace: default
stringData:
akId: <your-access-key-id> # Ganti dengan ID AccessKey Anda
akSecret: <your-access-key-secret> # Ganti dengan Secret AccessKey Anda
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-oss
labels:
alicloud-pvname: pv-oss # Digunakan oleh selector PVC untuk mengikat ke PV ini
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany # Mengizinkan akses konkuren dari beberapa langkah alur kerja
persistentVolumeReclaimPolicy: Retain
csi:
driver: ossplugin.csi.alibabacloud.com
volumeHandle: pv-oss # Harus sesuai dengan metadata.name di atas
nodePublishSecretRef:
name: oss-secret # Secret yang berisi kredensial AccessKey
namespace: default
volumeAttributes:
bucket: <your-bucket-name> # Ganti dengan nama bucket OSS Anda
url: "oss-<region-id>-internal.aliyuncs.com" # Titik akhir internal; ganti <region-id> dengan wilayah Anda, misalnya cn-beijing
otherOpts: "-o umask=022 -o max_stat_cache_size=1000000 -o allow_other"
path: "/" # Direktori root bucket; gunakan subdirektori jika diperlukan, misalnya testdir/testdir1
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-oss # Direferensikan oleh volumes[].persistentVolumeClaim.claimName pada alur kerja
namespace: default
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
selector:
matchLabels:
alicloud-pvname: pv-oss # Mengikat PVC ini ke PV pv-oss
Parameter volume OSS
Konfigurasikan opsi ossfs tambahan di bidang otherOpts menggunakan format -o key=value.
| Parameter | Deskripsi | Default |
|---|
umask | Mask izin untuk file di OSSFS. Menetapkan umask=022 memberikan izin file 755. File yang diunggah melalui SDK OSS atau console secara default memiliki izin 640 di OSSFS. Gunakan parameter ini saat Anda perlu memisahkan operasi baca dan tulis. | — |
max_stat_cache_size | Jumlah maksimum entri metadata file yang di-cache. Caching mempercepat traversal dan pembacaan file. Tetapkan ke 0 untuk menonaktifkan caching jika Anda memerlukan konsistensi data yang kuat (misalnya, saat proses lain memodifikasi bucket secara langsung melalui console OSS, SDK, atau ossutil). | 100.000 entri (~40 MB) |
allow_other | Mengizinkan pengguna OS lain mengakses direktori yang dipasang. Pengguna tersebut tidak dapat mengakses file di dalam direktori tersebut. | — |
Untuk parameter tambahan, lihat Opsi yang didukung oleh ossfs.
Klik untuk melihat contoh YAML pemasangan dan penggunaan volume penyimpanan OSS dalam alur kerja
Terapkan YAML alur kerja berikut. Alur kerja ini menjalankan dua langkah berurutan: whalesay menulis pesan ke volume bersama, dan print-message membacanya kembali.
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: volumes-existing-
namespace: default
spec:
entrypoint: volumes-existing-example
volumes:
# Sintaksis yang sama seperti spesifikasi Pod Kubernetes
- name: workdir
persistentVolumeClaim:
claimName: pvc-oss # Merujuk ke PVC yang dibuat di Langkah 1
templates:
- name: volumes-existing-example
steps:
- - name: generate
template: whalesay
- - name: print
template: print-message
- name: whalesay
container:
image: docker/whalesay:latest
command: [sh, -c]
args: ["echo generating message in volume; cowsay hello world | tee /mnt/vol/hello_world.txt"]
volumeMounts:
# Sintaksis yang sama seperti spesifikasi Pod Kubernetes
- name: workdir
mountPath: /mnt/vol
- name: print-message
container:
image: alpine:latest
command: [sh, -c]
args: ["echo getting message from volume; find /mnt/vol; cat /mnt/vol/hello_world.txt"]
volumeMounts:
- name: workdir
mountPath: /mnt/vol
Gunakan volume NAS
Klik untuk melihat contoh YAML penggunaan volume NAS
Terapkan YAML berikut untuk membuat PV dan PVC NAS yang disediakan secara statis.
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-nas
labels:
alicloud-pvname: pv-nas # Digunakan oleh selector PVC untuk mengikat ke PV ini
spec:
capacity:
storage: 100Gi
accessModes:
- ReadWriteMany # Mengizinkan akses konkuren dari beberapa langkah alur kerja
csi:
driver: nasplugin.csi.alibabacloud.com
volumeHandle: pv-nas # Harus sesuai dengan metadata.name di atas
volumeAttributes:
server: "<your-nas-filesystem-id>.cn-beijing.nas.aliyuncs.com" # Ganti dengan alamat titik pemasangan NAS Anda
path: "/"
mountOptions:
- nolock,tcp,noresvport
- vers=3
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pvc-nas # Direferensikan oleh volumes[].persistentVolumeClaim.claimName pada alur kerja
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 100Gi
selector:
matchLabels:
alicloud-pvname: pv-nas # Mengikat PVC ini ke PV pv-nas
Klik untuk melihat contoh YAML pemasangan dan penggunaan volume NAS dalam alur kerja
Terapkan YAML alur kerja berikut. Strukturnya identik dengan contoh OSS — hanya claimName yang berbeda.
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: volumes-existing-
namespace: default
spec:
entrypoint: volumes-existing-example
volumes:
# Sintaksis yang sama seperti spesifikasi Pod Kubernetes
- name: workdir
persistentVolumeClaim:
claimName: pvc-nas # Merujuk ke PVC yang dibuat di Langkah 1
templates:
- name: volumes-existing-example
steps:
- - name: generate
template: whalesay
- - name: print
template: print-message
- name: whalesay
container:
image: docker/whalesay:latest
command: [sh, -c]
args: ["echo generating message in volume; cowsay hello world | tee /mnt/vol/hello_world.txt"]
volumeMounts:
- name: workdir
mountPath: /mnt/vol
- name: print-message
container:
image: alpine:latest
command: [sh, -c]
args: ["echo getting message from volume; find /mnt/vol; cat /mnt/vol/hello_world.txt"]
volumeMounts:
- name: workdir
mountPath: /mnt/vol