All Products
Search
Document Center

Container Service for Kubernetes:Praktik terbaik untuk pengendalian aliran perangkat penyimpanan blok

Last Updated:Nov 11, 2025

Kubernetes sumber terbuka tidak mendukung pengendalian aliran perangkat penyimpanan blok. Container Service for Kubernetes (ACK) memungkinkan Anda menerapkan pengendalian aliran pada perangkat penyimpanan blok yang dipasang ke Pod, seperti disk cloud atau disk lokal yang divirtualisasi menggunakan Logical Volume Manager (LVM). Fitur ini membantu mengelola dan mengalokasikan sumber daya penyimpanan secara lebih efisien, menjamin kinerja dan stabilitas sistem, serta mengurangi biaya. Topik ini menjelaskan cara menerapkan pengendalian aliran pada perangkat penyimpanan blok.

Batasan

  • Sistem operasi host harus menggunakan Alibaba Cloud Linux 2 atau versi yang lebih baru.

  • Versi Kubernetes klaster ACK harus 1.20 atau yang lebih baru.

  • Versi Container Storage Interface (CSI) Plugin klaster harus 1.22 atau yang lebih baru. Untuk informasi lebih lanjut tentang versi CSI, lihat csi-provisioner.

Parameter

  • readIOPS: menentukan jumlah maksimum operasi baca per detik yang dapat dilakukan oleh pod pada perangkat penyimpanan blok.

  • writeIOPS: menentukan jumlah maksimum operasi tulis per detik yang dapat dilakukan oleh pod pada perangkat penyimpanan blok.

  • readBPS: menentukan jumlah maksimum data per detik yang dapat dibaca oleh pod dari perangkat penyimpanan blok.

  • writeBPS: menentukan jumlah maksimum data per detik yang dapat ditulis oleh pod ke perangkat penyimpanan blok.

Penggunaan

Contoh berikut menunjukkan cara membatasi disk cloud. Disk cloud dapat dipasang sebagai volume yang diatur secara dinamis atau volume yang diatur secara statis.

Catatan

Setelah pengaturan pengendalian aliran dikonfigurasi untuk disk cloud, pengaturan tersebut tidak dapat diubah. Jika Anda menyesuaikan konfigurasi pengendalian aliran dalam StorageClass, perubahan tersebut hanya berlaku untuk disk cloud yang baru dibuat. Disk cloud yang sudah ada tidak terpengaruh.

Pasang disk sebagai volume yang diatur secara dinamis

  1. Buat file bernama alicloud-disk-topology-essd.yaml dan salin konten berikut ke dalam file:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alicloud-disk-topology-essd
    parameters:
      type: cloud_essd
      readIOPS: "100"
      writeIOPS: "10"
      readBPS: "100k"
      writeBPS: "100m"
    provisioner: diskplugin.csi.alibabacloud.com
    reclaimPolicy: Delete
    volumeBindingMode: WaitForFirstConsumer
  2. Jalankan perintah berikut untuk membuat StorageClass:

    kubectl apply -f alicloud-disk-topology-essd.yaml
  3. Buat file bernama nginx.yaml dan salin konten berikut ke dalam file:

    Aplikasi menggunakan Persistent Volume Claim (PVC) yang merujuk ke StorageClass yang Anda buat untuk menyediakan disk cloud secara dinamis sebagai volume.

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: web-csi-encrypt
    spec:
      selector:
        matchLabels:
          app: nginx
      serviceName: "nginx"
      podManagementPolicy: "Parallel"
      replicas: 1
      template:
        metadata:
          labels:
            app: nginx
        spec:
          hostNetwork: true
          containers:
          - name: nginx
            command:
            - sleep
            - "999999999"
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            volumeMounts:
            - name: disk-csi
              mountPath: /data
      volumeClaimTemplates:
      - metadata:
          name: disk-csi
        spec:
          accessModes: [ "ReadWriteOnce" ]
          storageClassName: alicloud-disk-topology-essd
          resources:
            requests:
              storage: 80Gi
  4. Jalankan perintah berikut untuk membuat aplikasi:

    kubectl apply -f nginx.yaml
  5. Lihat batas perangkat blok untuk kontainer berdasarkan versi cgroup.

    1. Jalankan perintah berikut untuk memeriksa versi cgroup:

      stat -fc %T /sys/fs/cgroup

      Jika keluarannya adalah cgroup2fs, maka versinya adalah cgroup V2. Jika tidak, berarti cgroup V1.

    2. Lihat batas perangkat blok untuk kontainer berdasarkan versi cgroup.

      cgroup V2

      Anda perlu masuk ke host dan menggunakan UID Pod untuk menyusun path. Jalankan perintah berikut untuk memverifikasi bahwa batas telah diatur dengan benar:

      /sys/fs/cgroup/kubepods.slice/kubepods-besteffort.slice/kubepods-besteffort-pod<UID>.slice/io.max

      cgroup V1

      Anda perlu masuk ke host dan menggunakan UID Pod untuk menyusun path. Jalankan perintah-perintah berikut untuk memverifikasi bahwa batas telah diatur dengan benar:

      readIOPS:

      /sys/fs/cgroup/blkio/kubepods.slice/kubepods-besteffort.slice/kubepods-besteffort-pod{pod_uid}.slice/blkio.throttle.read_iops_device

      writeIOPS:

      /sys/fs/cgroup/blkio/kubepods.slice/kubepods-besteffort.slice/kubepods-besteffort-pod{pod_uid}.slice/blkio.throttle.write_iops_device

      readBPS:

      /sys/fs/cgroup/blkio/kubepods.slice/kubepods-besteffort.slice/kubepods-besteffort-pod{pod_uid}.slice/blkio.throttle.read_bps_device

      writeBPS:

      /sys/fs/cgroup/blkio/kubepods.slice/kubepods-besteffort.slice/kubepods-besteffort-pod{pod_uid}.slice/blkio.throttle.write_bps_device

Pasang disk sebagai volume yang diatur secara statis

  1. Gunakan template berikut untuk membuat file bernama pv-static.yaml:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: d-****
    spec:
      accessModes:
      - ReadWriteMany
      capacity:
        storage: 80Gi
      csi:
        driver: diskplugin.csi.alibabacloud.com
        fsType: ext4
        volumeAttributes:
          app: nginx
          type: cloud_ssd
          readBPS: 100K
          readIOPS: "100"
        volumeHandle: d-****
      persistentVolumeReclaimPolicy: Retain
      volumeMode: Filesystem
  2. Jalankan perintah berikut untuk membuat PV:

    kubectl apply -f pv-static.yaml
  3. Gunakan template berikut untuk membuat file pvc-static.yaml:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      labels:
        app: nginx
      name: disk-pvc
      namespace: default
    spec:
      accessModes:
      - ReadWriteMany
      resources:
        requests:
          storage: 80Gi
      volumeMode: Filesystem
      volumeName: d-****
  4. Jalankan perintah berikut untuk membuat PVC:

    kubectl apply -f pvc-static.yaml
  5. Buat file bernama nginx.yaml dan salin konten berikut ke dalam file:

    Aplikasi menggunakan PVC yang Anda buat. PVC tersebut digunakan untuk menyediakan disk cloud secara statis sebagai volume.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: deploy-disk
      labels:
        app: nginx
    spec:
      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: disk-pvc2
              mountPath: /data
          volumes:
            - name: disk-pvc2
              persistentVolumeClaim:
                claimName: disk-pvc
  6. Jalankan perintah berikut untuk membuat aplikasi:

    kubectl apply -f nginx.yaml
  7. Lihat batas perangkat blok untuk kontainer berdasarkan versi cgroup.

    1. Jalankan perintah berikut untuk memeriksa versi cgroup:

      stat -fc %T /sys/fs/cgroup

      Jika keluarannya adalah cgroup2fs, maka versinya adalah cgroup V2. Jika tidak, berarti cgroup V1.

    2. Lihat batas perangkat blok untuk kontainer berdasarkan versi cgroup.

      cgroup V2

      Anda perlu masuk ke host dan menggunakan UID Pod untuk menyusun path. Jalankan perintah berikut untuk memverifikasi bahwa batas telah diatur dengan benar:

      /sys/fs/cgroup/kubepods.slice/kubepods-besteffort.slice/kubepods-besteffort-pod<UID>.slice/io.max

      cgroup V1

      Anda perlu masuk ke host dan menggunakan UID Pod untuk menyusun path. Jalankan perintah-perintah berikut untuk memverifikasi bahwa batas telah diatur dengan benar:

      readIOPS:

      /sys/fs/cgroup/blkio/kubepods.slice/kubepods-besteffort.slice/kubepods-besteffort-pod{pod_uid}.slice/blkio.throttle.read_iops_device

      writeIOPS:

      /sys/fs/cgroup/blkio/kubepods.slice/kubepods-besteffort.slice/kubepods-besteffort-pod{pod_uid}.slice/blkio.throttle.write_iops_device

      readBPS:

      /sys/fs/cgroup/blkio/kubepods.slice/kubepods-besteffort.slice/kubepods-besteffort-pod{pod_uid}.slice/blkio.throttle.read_bps_device

      writeBPS:

      /sys/fs/cgroup/blkio/kubepods.slice/kubepods-besteffort.slice/kubepods-besteffort-pod{pod_uid}.slice/blkio.throttle.write_bps_device