All Products
Search
Document Center

Container Service for Kubernetes:Gunakan LVM untuk membuat volume lokal secara dinamis

Last Updated:Jun 18, 2026

Provision dan kelola volume lokal sebagai PV dan PVC pada node kluster ACK Edge Pro dengan LVM. Pod dijadwalkan ke node berdasarkan kapasitas penyimpanan LVM yang tersedia.

Prasyarat

  • Disk lokal tersedia pada node kluster.

  • Port TCP 1736 pada node penyimpanan dapat diakses dari node cloud.

Langkah 1: Instal add-on node-resource-manager, csi-plugin, dan csi-provisioner

Add-on ini menyediakan dukungan Container Storage Interface (CSI) untuk volume LVM lokal. Instal ketiganya sebelum menggunakan LVM untuk mengelola penyimpanan lokal.

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

  2. Pada halaman Clusters, klik nama kluster target dan pilih Operations > Add-ons di panel navigasi sebelah kiri.

  3. Pada halaman Add-ons, klik tab Storage. Temukan node-resource-manager, csi-plugin, dan csi-provisioner, lalu klik Install.

  4. Di kotak dialog, klik OK.

Langkah 2: Konfigurasi VolumeGroup

VolumeGroup menentukan disk lokal mana yang dikelola oleh LVM pada suatu node. Buat ConfigMap untuk memetakan label node ke topologi disk. VolumeGroup dalam teks ini sesuai dengan bidang volumegroup dalam YAML ConfigMap.

Catatan

Untuk keamanan data, add-on tidak menghapus VolumeGroup atau physical volume (physical volume LVM, berbeda dari PersistentVolume Kubernetes). Hapus VolumeGroup yang sudah ada sebelum mendefinisikannya ulang.

  1. Konfigurasikan topologi VolumeGroup dengan ConfigMap berikut:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: node-resource-topo
      namespace: kube-system
    data:
      volumegroup: |-
        volumegroup:
        - name: volumegroup1
          key: kubernetes.io/storagetype
          operator: In
          value: lvm
          topology:
            type: device
            devices:
            - /dev/sdb1
            - /dev/sdb2
            - /dev/sdc

    Tabel berikut menjelaskan parameter tersebut.

    Parameter

    Deskripsi

    name

    Nama VolumeGroup.

    key

    Kunci label untuk dicocokkan pada node.

    operator

    Operator pemilih label. Nilai yang valid: In, NotIn, Exists, DoesNotExist. Lihat tabel nilai operator di bawah.

    value

    Nilai label yang harus dicocokkan untuk kunci yang ditentukan.

    topology

    Topologi perangkat pada node. topology.devices mencantumkan jalur disk lokal yang akan ditambahkan ke VolumeGroup.

    Nilai operator

    Nilai Perilaku
    In Cocok jika nilai label node sama dengan value yang ditentukan.
    NotIn Cocok jika nilai label node berbeda dari value yang ditentukan.
    Exists Cocok jika node memiliki label dengan kunci yang ditentukan.
    DoesNotExist Cocok jika node tidak memiliki label dengan kunci yang ditentukan.
  2. Tambahkan label ke node.

    Tambahkan label berikut ke node penyimpanan:

    • Label topologi kustom: Beri label pada node penyimpanan agar sesuai dengan pemilih ConfigMap. Contoh: kubernetes.io/storagetype=lvm.

    • Label pengaktifan penyimpanan lokal: Tambahkan alibabacloud.com/edge-enable-localstorage='true' untuk mengaktifkan penjadwalan pod penyimpanan lokal pada node tersebut.

    Setelah Anda menambahkan kedua label tersebut, node-resource-manager secara otomatis membuat physical volume dan menambahkannya ke VolumeGroup.

Langkah 3: Buat PVC dan deploy workload

Definisikan PVC dengan StorageClass dalam YAML berikut dan jalankan kubectl apply -f ****.yaml untuk membuatnya. Setiap PVC dipetakan ke satu logical volume pada node, yang dipasang saat pod dimulai.

Catatan

Pada contoh ini, storageClassName default adalah csi-local-lvm.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: lvm-pvc-test
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 50Mi
  storageClassName: csi-local-lvm

---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    k8s-app: local-test
  name: local-test
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s-app: local-test
  template:
    metadata:
      labels:
        k8s-app: local-test
    spec:
      hostNetwork: true
      containers:
      - image: nginx:1.15.7-alpine
        imagePullPolicy: IfNotPresent
        name: nginx
        resources: {}
        volumeMounts:
          - name: local-pvc
            mountPath: /data
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      tolerations:
      - operator: Exists
      nodeSelector:
        alibabacloud.com/is-edge-worker: "true"
      volumes:
      - name: local-pvc
        persistentVolumeClaim:
          claimName: lvm-pvc-test

Verifikasi hasil

Periksa apakah logical volume telah dipasang:

kubectl exec -it local-test-564dfcf6dc-qhfsf sh
/ # ls /data

Output yang diharapkan:

lost+found

Hal ini mengonfirmasi bahwa logical volume telah dipasang ke pod.