Provision dan kelola volume lokal sebagai PV dan PVC pada node kluster ACK Edge Pro dengan LVM. Pod dijadwalkan ke node berdasarkan kapasitas penyimpanan LVM yang tersedia.
Prasyarat
-
Disk lokal tersedia pada node kluster.
-
Port TCP 1736 pada node penyimpanan dapat diakses dari node cloud.
Langkah 1: Instal add-on node-resource-manager, csi-plugin, dan csi-provisioner
Add-on ini menyediakan dukungan Container Storage Interface (CSI) untuk volume LVM lokal. Instal ketiganya sebelum menggunakan LVM untuk mengelola penyimpanan lokal.
Masuk ke ACK console. Di panel navigasi kiri, klik Clusters.
-
Pada halaman Clusters, klik nama kluster target dan pilih di panel navigasi sebelah kiri.
-
Pada halaman Add-ons, klik tab Storage. Temukan node-resource-manager, csi-plugin, dan csi-provisioner, lalu klik Install.
-
Di kotak dialog, klik OK.
Langkah 2: Konfigurasi VolumeGroup
VolumeGroup menentukan disk lokal mana yang dikelola oleh LVM pada suatu node. Buat ConfigMap untuk memetakan label node ke topologi disk. VolumeGroup dalam teks ini sesuai dengan bidang volumegroup dalam YAML ConfigMap.
Untuk keamanan data, add-on tidak menghapus VolumeGroup atau physical volume (physical volume LVM, berbeda dari PersistentVolume Kubernetes). Hapus VolumeGroup yang sudah ada sebelum mendefinisikannya ulang.
-
Konfigurasikan topologi VolumeGroup dengan ConfigMap berikut:
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 tersebut.
Parameter
Deskripsi
name
Nama VolumeGroup.
key
Kunci label untuk dicocokkan pada node.
operator
Operator pemilih label. Nilai yang valid: In, NotIn, Exists, DoesNotExist. Lihat tabel nilai operator di bawah.
value
Nilai label yang harus dicocokkan untuk kunci yang ditentukan.
topology
Topologi perangkat pada node.
topology.devicesmencantumkan jalur disk lokal yang akan ditambahkan ke VolumeGroup.Nilai operator
Nilai Perilaku In Cocok jika nilai label node sama dengan valueyang ditentukan.NotIn Cocok jika nilai label node berbeda dari valueyang ditentukan.Exists Cocok jika node memiliki label dengan kunci yang ditentukan. DoesNotExist Cocok jika node tidak memiliki label dengan kunci yang ditentukan. -
Tambahkan label ke node.
Tambahkan label berikut ke node penyimpanan:
-
Label topologi kustom: Beri label pada node penyimpanan agar sesuai dengan pemilih ConfigMap. Contoh:
kubernetes.io/storagetype=lvm. -
Label pengaktifan penyimpanan lokal: Tambahkan
alibabacloud.com/edge-enable-localstorage='true'untuk mengaktifkan penjadwalan pod penyimpanan lokal pada node tersebut.
Setelah Anda menambahkan kedua label tersebut, node-resource-manager secara otomatis membuat physical volume dan menambahkannya ke VolumeGroup.
-
Langkah 3: Buat PVC dan deploy workload
Definisikan PVC dengan StorageClass dalam YAML berikut dan jalankan kubectl apply -f ****.yaml untuk membuatnya. Setiap PVC dipetakan ke satu logical volume pada node, yang dipasang saat pod dimulai.
Pada contoh ini, storageClassName default 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
Verifikasi hasil
Periksa apakah logical volume telah dipasang:
kubectl exec -it local-test-564dfcf6dc-qhfsf sh
/ # ls /data
Output yang diharapkan:
lost+found
Hal ini mengonfirmasi bahwa logical volume telah dipasang ke pod.