全部产品
Search
文档中心

Container Service for Kubernetes:Gunakan volume disk yang disediakan secara statis

更新时间:Nov 11, 2025

Volume disk cocok untuk aplikasi yang memiliki persyaratan I/O tinggi dan latensi rendah tetapi tidak memerlukan berbagi data. Anda dapat memasang disk yang sudah ada ke pod sebagai volume yang disediakan secara statis untuk penyimpanan persisten. Topik ini menjelaskan cara menggunakan volume disk yang disediakan secara statis dan memverifikasi bahwa penyimpanannya bersifat persisten.

Skenario

Disk cocok untuk skenario berikut:

  • Anda ingin membuat aplikasi yang memerlukan throughput I/O disk tinggi dan tidak memerlukan berbagi data. Aplikasi tersebut dapat menggunakan layanan penyimpanan seperti MySQL dan Redis.

  • Anda ingin menulis log dengan kecepatan tinggi.

  • Anda ingin menyimpan data secara persisten yang tidak bergantung pada siklus hidup pod.

Jika Anda memiliki disk yang sudah ada, Anda dapat memasangnya ke pod sebagai volume yang disediakan secara statis. Metode ini mengharuskan Anda membuat volume persisten (PV) dan klaim volume persisten (PVC) secara manual. Hal ini memastikan bahwa PV siap sebelum kontainer dimulai. Untuk informasi selengkapnya, lihat Volume penyimpanan blok.

Prasyarat

  • Plugin Container Storage Interface (CSI) telah diinstal di kluster.

    Catatan
    • Di panel navigasi sebelah kiri halaman manajemen kluster, pilih Operations Management > > Component Management. Di tab Storage, periksa status instalasi komponen csi-plugin dan csi-provisioner. Untuk meningkatkan plugin CSI agar dapat menggunakan fitur tertentu, lihat Upgrade the CSI plugin.

    • Jika kluster Anda menggunakan komponen FlexVolume, Anda harus bermigrasi ke plugin CSI karena FlexVolume sudah tidak digunakan lagi. Untuk informasi selengkapnya, lihat Migrate from FlexVolume to CSI.

  • Disk yang ingin Anda pasang memenuhi persyaratan berikut:

    • Metode penagihan disk adalah bayar sesuai penggunaan dan disk berada dalam status Available.

    • Disk berada di zona yang sama dengan node ECS, dan tipe disk kompatibel dengan tipe instans ECS.

      Penting

      Disk tidak dapat dipasang lintas zona. Beberapa tipe disk tidak dapat disambungkan ke tipe instans ECS tertentu. Pastikan zona dan tipe instans dari node ECS tempat pod dijadwalkan kompatibel dengan disk yang sudah ada. Jika tidak, pemasangan disk akan gagal. Untuk informasi selengkapnya tentang kompatibilitas antara tipe disk dan tipe instans ECS, lihat Instance families.

Catatan Penggunaan

  • Disk merupakan penyimpanan non-bersama. Jika multi-attach tidak diaktifkan untuk suatu disk, disk tersebut hanya dapat dipasang ke satu pod dalam satu waktu. Untuk informasi selengkapnya tentang multi-attach, lihat Use the multi-attach and reservation features of NVMe disks.

  • Anda hanya dapat memasang disk ke pod yang berada di zona yang sama dengan disk tersebut. Pemasangan lintas zona tidak didukung.

  • Ketika pod dibuat ulang, disk asli akan dipasang kembali. Jika pod tidak dapat dijadwalkan ke zona asal karena kendala lain, pod akan tetap berada dalam status Pending karena disk tidak dapat dipasang.

  • Kami menyarankan Anda memasang disk ke StatefulSet atau pod individual, bukan ke deployment.

    Catatan

    Jika multi-attach dinonaktifkan, disk hanya dapat dipasang ke satu pod. Jika Anda memasang disk ke deployment, Anda harus mengatur jumlah replika menjadi 1. Anda tidak dapat mengonfigurasi volume terpisah untuk setiap pod atau menjamin prioritas pemasangan dan pelepasan. Selain itu, karena kebijakan peningkatan deployment, pod baru mungkin gagal memasang disk saat direstart. Oleh karena itu, kami tidak merekomendasikan memasang disk ke deployment.

  • Saat menggunakan volume disk, jika Anda mengonfigurasi securityContext.fsgroup dalam file YAML aplikasi, kubelet akan menjalankan perintah chmod dan chown setelah pemasangan selesai. Hal ini meningkatkan waktu pemasangan.

    Catatan

    Setelah Anda mengonfigurasi securityContext.fsgroup, pemilik file dalam volume akan berubah secara otomatis saat disk dipasang. Hal ini dapat meningkatkan waktu persiapan, tergantung pada jumlah file. Untuk kluster Kubernetes versi 1.20 atau lebih baru, Anda dapat mengatur fsGroupChangePolicy menjadi OnRootMismatch. Hal ini memastikan bahwa pemilik file hanya diubah saat kontainer pertama kali dimulai. Untuk peningkatan atau pembuatan ulang pod berikutnya, waktu pemasangan tidak terpengaruh. Jika hal ini tidak memenuhi kebutuhan Anda, kami menyarankan Anda menggunakan initContainer untuk menyesuaikan izin.

Pasang volume disk yang disediakan secara statis menggunakan kubectl

Langkah 1: Buat PV

  1. Sambungkan ke kluster. Untuk informasi selengkapnya, lihat Connect to a cluster using kubectl atau Use kubectl in CloudShell or Workbench to connect to a cluster.

  2. Buat file bernama disk-pv.yaml berdasarkan templat berikut.

    Ganti placeholder berikut dalam file YAML:

    • <YOUR-DISK-ID>: ID disk yang sudah ada. Misalnya, d-uf628m33r5rsbi******.

    • <YOUR-DISK-SIZE>: Ukuran disk yang sudah ada. Misalnya, 20Gi.

    • <YOUR-DISK-ZONE-ID>: Zona tempat disk yang sudah ada berada. Misalnya, cn-shanghai-f.

    • <YOUR-DISK-CATEGORY>: Tipe disk yang sudah ada. Misalnya, cloud_essd.

      Daftar berikut menjelaskan nilai untuk berbagai tipe disk.

      • ESSD Entry disk: cloud_essd_entry

      • ESSD AutoPL disk: cloud_auto

      • ESSD: cloud_essd

      • Standard SSD: cloud_ssd

      • Ultra disk: cloud_efficiency

      • Zone-redundant disk: cloud_regional_disk_auto (Anda juga harus menyesuaikan konfigurasi. Untuk informasi selengkapnya, lihat deskripsi parameter nodeAffinity.)

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: "<YOUR-DISK-ID>"
      annotations:
        csi.alibabacloud.com/volume-topology: '{"nodeSelectorTerms":[{"matchExpressions":[{"key":"node.csi.alibabacloud.com/disktype.<YOUR-DISK-CATEGORY>","operator":"In","values":["available"]}]}]}'
    spec:
      capacity:
        storage: "<YOUR-DISK-SIZE>"
      claimRef:
        apiVersion: v1
        kind: PersistentVolumeClaim
        namespace: default
        name: disk-pvc
      accessModes:
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: diskplugin.csi.alibabacloud.com
        volumeHandle: "<YOUR-DISK-ID>"
      nodeAffinity:
        required:
          nodeSelectorTerms:
          - matchExpressions:
            - key: topology.diskplugin.csi.alibabacloud.com/zone
              operator: In
              values:
              - "<YOUR-DISK-ZONE-ID>"
      storageClassName: alicloud-disk-topology-alltype
      volumeMode: Filesystem

    Tabel berikut menjelaskan parameter-parameter tersebut.

    Parameter

    Deskripsi

    csi.alibabacloud.com/volume-topology

    Anotasi. Digunakan untuk mengonfigurasi batasan node tambahan yang diperlukan agar disk berhasil dipasang. Kami menyarankan Anda menentukan tipe disk untuk memastikan pod dijadwalkan ke node ECS yang mendukung tipe disk tersebut.

    claimRef

    Menentukan PVC yang dapat diikat ke PV. Untuk memungkinkan PV diikat ke PVC apa pun, hapus konfigurasi ini.

    accessModes

    Mode akses. Hanya ReadWriteOnce yang didukung. Artinya, volume dapat dipasang sebagai baca-tulis oleh satu pod saja.

    persistentVolumeReclaimPolicy

    Kebijakan reklamasi PV.

    • Delete: Saat PVC dihapus, PV dan disk juga dihapus.

    • Retain: Saat PVC dihapus, PV dan disk tidak dihapus. Anda harus menghapusnya secara manual.

    driver

    Nilainya adalah diskplugin.csi.alibabacloud.com, yang menunjukkan bahwa plugin CSI disk Alibaba Cloud digunakan.

    nodeAffinity

    Konfigurasi afinitas node. Disk tidak dapat dipasang lintas zona. Konfigurasi ini memastikan bahwa pod dijadwalkan ke node ECS di zona yang sama dengan disk.

    Untuk disk zone-redundant, ubah menjadi konten berikut untuk memungkinkan disk dipasang ke zona mana pun di wilayah tersebut.

    Dalam kode, <YOUR-DISK-REGION-ID> adalah wilayah tempat disk berada, misalnya, cn-shanghai.
      nodeAffinity:
        required:
          nodeSelectorTerms:
          - matchExpressions:
            - key: topology.kubernetes.io/region
              operator: In
              values:
              - "<YOUR-DISK-REGION-ID>"

    storageClassName

    Konfigurasi ini tidak berarti untuk volume yang disediakan secara statis. Anda tidak perlu membuat StorageClass yang sesuai terlebih dahulu. Namun, Anda harus memastikan bahwa nilai item konfigurasi ini sama di PV dan PVC.

  3. Buat PV.

    kubectl create -f disk-pv.yaml
  4. Verifikasi bahwa PV telah dibuat.

    kubectl get pv

    Output yang diharapkan:

    NAME                     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM              STORAGECLASS   VOLUMEATTRIBUTESCLASS   REASON   AGE
    d-uf628m33r5rsbi******   20Gi       RWO            Retain           Available   default/disk-pvc   disk           <unset>                          1m36s

Langkah 2: Buat PVC

  1. Buat file bernama disk-pvc.yaml berdasarkan templat berikut.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: disk-pvc
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: "<YOUR-DISK-SIZE>"
      storageClassName: alicloud-disk-topology-alltype
      volumeName: "<YOUR-DISK-ID>"

    Tabel berikut menjelaskan parameter-parameter tersebut.

    Parameter

    Deskripsi

    accessModes

    Mode akses. Hanya ReadWriteOnce yang didukung. Artinya, volume dapat dipasang sebagai baca-tulis oleh satu pod saja.

    storage

    Kapasitas penyimpanan yang dialokasikan ke pod. Nilainya tidak boleh melebihi kapasitas disk.

    storageClassName

    Konfigurasi ini tidak berarti untuk volume yang disediakan secara statis. Anda tidak perlu membuat StorageClass yang sesuai terlebih dahulu. Namun, Anda harus memastikan bahwa nilai item konfigurasi ini sama di PV dan PVC.

    volumeName

    Menentukan PV yang dapat diikat ke PVC. Untuk memungkinkan PVC diikat ke PV apa pun, hapus parameter ini.

  2. Buat PVC.

    kubectl create -f disk-pvc.yaml
  3. Verifikasi bahwa PVC telah dibuat.

    kubectl get pvc

    Output yang diharapkan menunjukkan bahwa PVC terikat dengan PV.

    NAME       STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
    disk-pvc   Bound    d-uf628m33r5rsbi******   20Gi       RWO            disk           <unset>                 64s

Langkah 3: Buat aplikasi dan pasang disk

  1. Buat file bernama disk-test.yaml berdasarkan templat berikut.

    Contoh YAML berikut membuat StatefulSet dengan satu pod. Pod tersebut meminta sumber daya penyimpanan menggunakan PVC bernama disk-pvc dan memasang volume ke path /data.

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: disk-test
    spec:
      replicas: 1
      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:
            - name: pvc-disk
              mountPath: /data
          volumes:
            - name: pvc-disk
              persistentVolumeClaim:
                claimName: disk-pvc
  2. Buat StatefulSet dan pasang disk.

    kubectl create -f disk-test.yaml
  3. Periksa status pod di StatefulSet.

    kubectl get pod -l app=nginx

    Output yang diharapkan menunjukkan bahwa satu pod dibuat karena jumlah replika StatefulSet adalah 1.

    NAME          READY   STATUS    RESTARTS   AGE
    disk-test-0   1/1     Running   0          14s
  4. Verifikasi bahwa disk telah dipasang dengan memeriksa path pemasangan.

    kubectl exec disk-test-0 -- df -h /data

    Output yang diharapkan:

    Filesystem      Size  Used Avail Use% Mounted on
    /dev/vdb         20G   24K   20G   1% /data

Pasang volume disk yang disediakan secara statis di konsol

Langkah 1: Buat volume persisten (PV)

  1. Masuk ke Konsol ACK. Di panel navigasi sebelah kiri, klik Clusters.

  2. Di halaman Clusters, temukan kluster yang Anda inginkan lalu klik namanya. Di panel navigasi sebelah kiri, pilih Volumes > Persistent Volumes.

  3. Di halaman Persistent Volumes, klik Create.

  4. Di kotak dialog yang muncul, atur parameter dan klik Create.

    Parameter

    Deskripsi

    Contoh

    PV Type

    Pilih Disk.

    Disk

    Access Mode

    Hanya ReadWriteOnce yang didukung.

    ReadWriteOnce

    Disk ID

    Klik Select Disk dan pilih disk yang akan dipasang. Disk harus berada di wilayah dan zona yang sama dengan node.

    d-uf628m33r5rsbi******

    File System Type

    Pilih tipe sistem file yang akan digunakan untuk menyimpan data di disk. Tipe yang didukung meliputi ext4, ext3, xfs, dan vfat. Nilai default-nya adalah ext4.

    ext4

    Setelah PV dibuat, Anda dapat melihatnya di halaman Persistent Volumes.

Langkah 2: Buat klaim volume persisten (PVC)

  1. Di panel navigasi sebelah kiri halaman detail, pilih Volumes > Persistent Volume Claims.

  2. Di halaman Persistent Volume Claims, klik Create.

  3. Di kotak dialog yang muncul, atur parameter dan klik Create.

    Parameter

    Deskripsi

    Contoh

    Storage Claim Type

    Pilih Disk.

    Disk

    Name

    Masukkan nama kustom untuk PVC. Untuk persyaratan format, lihat prompt di antarmuka.

    diks-pvc

    Allocation Mode

    Pilih Existing Volume.

    Existing Volume

    Existing Volume

    Pilih PV yang Anda buat di Langkah 1.

    d-uf690053kttkprgx****, 20Gi

    Total Capacity

    Kapasitas penyimpanan yang dialokasikan ke pod. Nilainya tidak boleh melebihi kapasitas disk.

    20Gi

    Setelah PVC dibuat, Anda dapat melihatnya di halaman Persistent Volume Claims. PVC tersebut terikat ke PV (volume disk).

Langkah 3: Buat aplikasi dan pasang disk

  1. Di panel navigasi sebelah kiri halaman detail, pilih Workloads > StatefulSets.

  2. Di pojok kanan atas halaman StatefulSets, klik Create from Image.

  3. Atur parameter untuk StatefulSet dan klik Create.

    Tabel berikut menjelaskan parameter utama. Atur parameter lain sesuai kebutuhan. Untuk informasi selengkapnya, lihat Create a StatefulSet.

    Halaman Konfigurasi

    Parameter

    Deskripsi

    Contoh

    Basic Information

    Application Name

    Masukkan nama kustom untuk StatefulSet. Untuk persyaratan format, lihat prompt di antarmuka.

    disk-test

    Number Of Replicas

    Atur jumlah replika untuk StatefulSet.

    1

    Container Configuration

    Image Name

    Masukkan alamat citra yang digunakan untuk menerapkan aplikasi.

    anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6

    Required Resources

    Atur sumber daya vCPU, memori, dan penyimpanan sementara yang diperlukan.

    • CPU: 0.25 Core

    • Memory: 512 MiB

    • Ephemeral-Storage: Jangan diatur

    Volume

    Klik Add Existing Claim. Lalu, atur parameter.

    • Mount Source: Pilih PVC yang Anda buat di Langkah 2.

    • Container Path: Masukkan path kontainer tempat Anda ingin memasang disk.

    • Mount Source: disk-pvc

    • Container Path: /data

  4. Periksa status aplikasi.

    1. Di halaman StatefulSets, klik nama aplikasi.

    2. Di tab Pods, pastikan pod berada dalam status Running.

Verifikasi persistensi data di disk menggunakan kubectl

StatefulSet yang dibuat pada contoh sebelumnya berisi satu pod dengan disk yang dipasang. Ketika pod ini dihapus, pod baru akan dibuat secara otomatis dan disk asli akan dipasang kembali ke pod baru tersebut. Data di disk tetap dipertahankan. Anda dapat memverifikasi persistensi data disk sebagai berikut:

  1. Periksa data di path pemasangan disk.

    kubectl exec disk-test-0 -- ls /data

    Output yang diharapkan:

    lost+found
  2. Buat file di disk.

    kubectl exec disk-test-0 -- touch /data/test
  3. Hapus pod.

    kubectl delete pod disk-test-0
    Catatan

    Setelah Anda menghapus pod di StatefulSet, sistem akan secara otomatis membuat pod baru.

  4. Periksa status pod baru.

    kubectl get pod -l app=nginx

    Output yang diharapkan menunjukkan bahwa pod baru memiliki nama yang sama dengan pod yang dihapus. Ini adalah fitur StatefulSet.

    NAME          READY   STATUS    RESTARTS   AGE
    disk-test-0   1/1     Running   0          27s
  5. Verifikasi bahwa pod baru telah memasang kembali disk dan data tetap utuh.

    kubectl exec disk-test-0 -- ls /data

    Output yang diharapkan menunjukkan bahwa file test tetap berada di disk.

    lost+found  
    test

Referensi