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コンポーネントがインストールされています。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスターページで、管理するクラスターの名前をクリックし、左側のナビゲーションウィンドウの を選択します。
アドオンページで [ストレージ] タブをクリックし、node-resource-manager,csi-plugin、およびcsi-provisionerをクリックし、インストールをクリックします。
表示されるダイアログボックスで、OKをクリックします。
VolumeGroupの設定
データのセキュリティを確保するため、コンポーネントはVolumeGroupsまたは物理ボリュームを削除しません。 VolumeGroupを再定義する前に、既存のVolumeGroupを削除する必要があります。
次の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に追加されます。ノードにラベルを追加します。
手順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つの論理ボリュームに対応する。 ポッドの作成後、論理ボリュームはポッドにマウントされます。
この例では、デフォルトのstorageClassName
は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
次のコマンドを実行して, 論理ボリュームがマウントされているか確認します。
kubectl exec -it local-test-564dfcf6dc-qhfsf sh
/ # ls /data
期待される出力:
lost+found
出力は、論理ボリュームがポッドにマウントされていることを示します。