All Products
Search
Document Center

Container Service for Kubernetes:Gunakan volume penyimpanan

Last Updated:Mar 26, 2026

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.

ParameterDeskripsiDefault
umaskMask 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_sizeJumlah 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_otherMengizinkan 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

Langkah selanjutnya