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.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster yang ingin Anda kelola, lalu pilih di panel navigasi sebelah kiri.
Pada halaman Add-ons, klik tab Storage, temukan komponen node-resource-manager, csi-plugin, dan csi-provisioner, lalu klik Install.
Pada kotak dialog yang muncul, klik OK.
Konfigurasikan VolumeGroup
Untuk memastikan keamanan data, komponen tidak akan menghapus VolumeGroup atau physical volume. Sebelum mendefinisikan ulang VolumeGroup, Anda harus menghapus VolumeGroup yang ada terlebih dahulu.
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/sdcTabel 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
valuesama denganvaluelabel node yang memiliki key tertentu.NotIn: Pencocokan berhasil hanya jika nilai parameter
valueberbeda darivaluelabel 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
valuelabel yang memiliki key tertentu.topology
Menentukan topologi perangkat pada node.
topology.devicesmenentukan jalur disk lokal pada node. Disk yang ditentukan akan ditambahkan ke VolumeGroup.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.
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-testJalankan perintah berikut untuk memeriksa apakah logical volume telah dipasang:
kubectl exec -it local-test-564dfcf6dc-qhfsf sh
/ # ls /dataOutput yang diharapkan:
lost+foundOutput tersebut menunjukkan bahwa logical volume telah dipasang ke pod.