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

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

最終更新日:Nov 14, 2024

Container Service for Kubernetes (ACK) Edge Proクラスターを使用すると、Logical Volume Manager (LVM) を使用してローカルストレージを管理できます。 LVMは、論理ボリュームのライフサイクルを自動的に管理し、ノードのストレージ容量に基づいてボリュームをスケジュールできます。 LVMを使用してローカルストレージを永続ボリューム (PV) および永続ボリュームクレーム (PVC) として管理するには、ノード上のローカルディスクのトポロジ関係を定義するだけで済みます。 このトピックでは、ローカルLVMを使用してACK Edge Proクラスターのローカルストレージを管理する方法について説明します。

前提条件

  • ローカルディスクはクラスターノードで使用できます。

  • ストレージがデプロイされているノードのTCP 1736ポートは、クラウドノードからアクセスできます。

node-resource-manager、csi-plugin、およびcsi-provisionerコンポーネントがインストールされています。

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

  2. クラスターページで、管理するクラスターの名前をクリックし、左側のナビゲーションウィンドウの操作 > アドオンを選択します。

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

  4. 表示されるダイアログボックスで、OKをクリックします。

VolumeGroupの設定

説明

データのセキュリティを確保するため、コンポーネントはVolumeGroupsまたは物理ボリュームを削除しません。 VolumeGroupを再定義する前に、既存のVolumeGroupを削除する必要があります。

  1. 次のYAMLテンプレートを使用して、VolumeGroupのトポロジを定義する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

    VolumeGroupの名前。

    キー

    ノード上のラベルのキーと一致するために使用されるキーを指定します。

    演算子

    ラベルセレクタで使用する演算子を指定します。 有効な値:

    • In: valueパラメーターの値が、指定されたkeyを持つノードラベルのvalueと同じである場合にのみ、一致が見つかります。

    • NotIn: valueパラメーターの値が、指定されたkeyを持つノードラベルのと異なる場合にのみ、一致が見つかります。

    • 存在: 指定されたキーを持つラベルがノードにある場合、一致が見つかります。

    • DoesNotExist: 指定されたキーを持つラベルがノードにない場合、一致が見つかります。

    指定されたkeyを持つラベルのvalueと一致するために使用される値を指定します。

    トポロジ

    ノード上のデバイスのトポロジを指定します。 topology.de vicesは、ノード上のローカルディスクのパスを指定します。 指定されたディスクがVolumeGroupに追加されます。

  2. ノードにラベルを追加します。

    • 手順1で指定したラベルに基づいて、ストレージノードにカスタムラベルを追加します。 これにより、トポロジ要件を満たすノードを選択できます。 手順1で指定するラベルは、kubernetes.io/storagetype=lvmです。

    • ローカルストレージ管理コンポーネントのポッドをノードにスケジュールできるように、ストレージノードにalibabacloud.com/edge-enable-localstorage='true' ラベルを追加します。

    ノード上のnode-resource-managerコンポーネントは、上記の設定に基づいて物理ボリュームを自動的に作成し、その物理ボリュームをVolumeGroupに追加します。

LVMを使用したローカルストレージの管理

次のYAMLファイルを使用して、StorageClassを指定するPVCを定義します。 kubectl apply -f ****.yamlコマンドを実行し、PVCを作成します。 1つのPVCは、ノード上の1つの論理ボリュームに対応する。 ポッドの作成後、論理ボリュームはポッドにマウントされます。

説明

この例では、デフォルトの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

出力は、論理ボリュームがポッドにマウントされていることを示します。