すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:LVM を使用したローカルボリュームの動的作成

最終更新日:Jun 18, 2026

ACK Edge Pro クラスターのノードで LVM を使用して、ローカルボリュームを PV および PVC としてプロビジョニングおよび管理します。Pod は、利用可能な LVM ストレージ容量に基づいてノードにスケジュールされます。

前提条件

  • クラスターノードでローカルディスクが利用可能であること。

  • ストレージノードの TCP ポート 1736 がクラウドノードからアクセス可能であること。

ステップ 1: node-resource-manager、csi-plugin、csi-provisioner アドオンのインストール

これらのアドオンは、ローカル LVM ボリュームに対する Container Storage Interface (CSI) サポートを提供します。LVM を使用してローカルストレージを管理する前に、3 つすべてをインストールしてください。

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、対象のクラスター名をクリックし、左側のナビゲーションペインで [操作] > [アドオン] を選択します。

  3. [アドオン] ページで、 Storage タブをクリックします。[node-resource-manager][csi-plugin]、および [csi-provisioner] を見つけ、[インストール] をクリックします。

  4. ダイアログボックスで、[OK] をクリックします。[]

ステップ 2: ボリュームグループの設定

ボリュームグループは、ノード上で LVM が管理するローカルディスクを指定します。ConfigMap を作成して、ノードラベルとディスクトポロジーをマッピングします。本文中の VolumeGroup は、ConfigMap YAML の volumegroup フィールドに対応します。

説明

データセキュリティのため、アドオンはボリュームグループや物理ボリューム (LVM の物理ボリュームであり、Kubernetes PersistentVolume とは異なります) を削除しません。既存のボリュームグループを再定義する前に、削除してください。

  1. 次の ConfigMap を使用して、ボリュームグループのトポロジーを設定します。

    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

    次の表に、パラメーターの説明を示します。

    パラメーター

    説明

    name

    ボリュームグループの名前。

    key

    ノードで照合するラベルキー。

    operator

    ラベルセレクターのオペレーター。有効な値: InNotInExistsDoesNotExist。オペレーターの値については、以下の表をご参照ください。

    value

    指定されたキーに一致するラベル値。

    topology

    ノード上のデバイストポロジー。topology.devices は、ボリュームグループに追加するローカルディスクパスのリストです。

    オペレーター値

    動作
    In ノードのラベル値が指定された value と等しい場合に一致します。
    NotIn ノードのラベル値が指定された value と異なる場合に一致します。
    Exists ノードが指定されたキーのラベルを持つ場合に一致します。
    DoesNotExist ノードが指定されたキーのラベルを持たない場合に一致します。
  2. ノードにラベルを追加します。

    ストレージノードに次のラベルを追加します。

    • カスタムトポロジーラベル: ConfigMap セレクターに一致するように、ストレージノードにラベルを付けます。例: kubernetes.io/storagetype=lvm

    • ローカルストレージ有効化ラベルalibabacloud.com/edge-enable-localstorage='true' を追加して、ノードでローカルストレージ Pod のスケジューリングを有効にします。

    両方のラベルを追加すると、[node-resource-manager] は物理ボリュームを自動的に作成し、VolumeGroup に追加します。

ステップ 3: PVC の作成とワークロードのデプロイ

次の YAML で StorageClass を使用して PVC を定義し、kubectl apply -f ****.yaml を実行して作成します。各 PVC はノード上の 1 つの論理ボリュームにマッピングされ、Pod の起動時にマウントされます。

説明

この例では、storageClassNamecsi-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

結果の確認

論理ボリュームがマウントされているかどうかを確認します。

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

想定される出力:

lost+found

これにより、論理ボリュームが Pod にマウントされていることを確認できます。