全部产品
Search
文档中心

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

更新时间:Dec 18, 2025

Kluster Container Service for Kubernetes (ACK) Edge Pro memungkinkan Anda menggunakan Logical Volume Manager (LVM) untuk mengelola penyimpanan lokal. LVM dapat mengelola siklus hidup volume logis secara otomatis dan menjadwalkan volume berdasarkan kapasitas penyimpanan node. Untuk menggunakan LVM dalam mengelola penyimpanan lokal sebagai persistent volumes (PVs) dan persistent volume claims (PVCs), Anda hanya perlu menentukan hubungan topologis disk lokal pada node. Topik ini menjelaskan cara menggunakan LVM lokal untuk mengelola penyimpanan lokal di kluster ACK Edge Pro.

Prasyarat

  • Disk lokal tersedia pada node kluster.

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

Komponen node-resource-manager, csi-plugin, dan csi-provisioner telah diinstal.

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

  2. Pada halaman Clusters, klik nama kluster yang ingin Anda kelola, lalu pilih Operations > Add-ons di panel navigasi sebelah kiri.

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

  4. Pada kotak dialog yang muncul, klik OK.

Konfigurasikan VolumeGroup

Catatan

Untuk memastikan keamanan data, komponen tidak akan menghapus VolumeGroup atau physical volume. Sebelum mendefinisikan ulang VolumeGroup, Anda harus menghapus VolumeGroup yang ada terlebih dahulu.

  1. Gunakan templat YAML berikut untuk mengonfigurasi ConfigMap yang mendefinisikan topologi untuk VolumeGroup:

    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-parameter tersebut.

    Parameter

    Deskripsi

    name

    Nama VolumeGroup.

    key

    Menentukan kunci yang digunakan untuk mencocokkan key label pada node.

    operator

    Menentukan operator yang digunakan dalam pemilih label. Nilai yang valid:

    • In: Pencocokan berhasil hanya jika nilai parameter value sama dengan value label node yang memiliki key tertentu.

    • NotIn: Pencocokan berhasil hanya jika nilai parameter value berbeda dari value label node yang memiliki key tertentu.

    • Exists: Pencocokan berhasil jika node memiliki label dengan key tertentu.

    • DoesNotExist: Pencocokan berhasil jika node tidak memiliki label dengan key tertentu.

    value

    Menentukan nilai yang digunakan untuk mencocokkan value label yang memiliki key tertentu.

    topology

    Menentukan topologi perangkat pada node. topology.devices menentukan jalur disk lokal pada node. Disk yang ditentukan akan ditambahkan ke VolumeGroup.

  2. Tambahkan label ke node.

    • Tambahkan label kustom ke node penyimpanan berdasarkan label yang ditentukan pada Langkah 1. Hal ini memungkinkan Anda memilih node yang memenuhi persyaratan topologis. Label yang ditentukan pada Langkah 1 adalah sebagai berikut: kubernetes.io/storagetype=lvm.

    • Tambahkan label alibabacloud.com/edge-enable-localstorage='true' ke node penyimpanan agar pod komponen manajemen penyimpanan lokal dapat dijadwalkan ke node tersebut.

    Komponen node-resource-manager pada node secara otomatis membuat physical volume berdasarkan konfigurasi di atas dan menambahkannya ke VolumeGroup.

Gunakan LVM untuk mengelola penyimpanan lokal

Gunakan file YAML berikut untuk mendefinisikan PVC yang menentukan StorageClass. Jalankan perintah kubectl apply -f ****.yaml untuk membuat PVC. Satu PVC berkorespondensi dengan satu logical volume pada node. Setelah pod dibuat, logical volume tersebut dipasang pada pod.

Catatan

Pada contoh ini, storageClassName default-nya 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

Jalankan perintah berikut untuk memeriksa apakah logical volume telah dipasang:

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

Output yang diharapkan:

lost+found

Output tersebut menunjukkan bahwa logical volume telah dipasang ke pod.