Көпаймақты сақтау кластарын пайдалану
Kubernetes подты жоспарлау кезінде оған сол подтың өзімен бірдей қолжетімділік аймағында орналасқан тұрақты томды (PV) динамикалық түрде дайындауы үшін алдын ала бапталған көпаймақты сақтау кластарын пайдаланыңыз. Kubernetes-та подты мұндай жоспарлау үшін Topology Spread Constraints механизмі жауап береді. Ол жұмыс жүктемесін (workload) әртүрлі қолжетімділік аймақтары арасында бөлу есебінен кластердің істен шығуға төзімділігін арттыруға және жоғары қолжетімділігін (high availability) қамтамасыз етуге көмектеседі.
- Егер әлі жасалмаған болса, актуалды нұсқадағы кластерді жасаңыз.
- Егер әлі жасалмаған болса,
kubectlқұралын орнатып, баптаңыз. kubectlкөмегімен кластерге қосылыңыз.
-
StorageClassүшін манифест файлын, мысалыcsi-ceph-hdd.yaml, жасаңыз да, оған келесі мазмұнды қосыңыз:apiVersion: storage.k8s.io/v1kind: StorageClassmetadata:name: csi-ceph-hddparameters:type: ceph-hddprovisioner: cinder.csi.openstack.orgreclaimPolicy: DeletevolumeBindingMode: WaitForFirstConsumerallowVolumeExpansion: trueМұнда:
-
type: ceph-hddPV үшін диск түрін сипаттайды. -
volumeBindingMode: WaitForFirstConsumerтиісті PVC пайдаланатын алғашқы под жасалғанға дейін PV жасауды және оған байланыстыруды кейінге қалдырады. Осылайша, бұл под алдымен түйінге жоспарланады, содан кейін ғана Kubernetes ол үшін түйінмен бірдей қолжетімділік аймағындағы PV жасайды. Бұл под пен PV әртүрлі қолжетімділік аймақтарында болып қалатын жағдайды болдырмауға мүмкіндік береді.Егер бірінші іске қосудан кейін осы подты басқа қолжетімділік аймағына көшіруге әрекеттенсеңіз, ұқсас мәтіні бар қатені аласыз:
3 node(s) had volume node affinity conflictТомдарды байланыстыру баптаулары туралы толығырақ Kubernetes ресми құжаттамасында.
-
-
Кластерде жасалған манифесті қолданыңыз:
kubectl apply -f csi-ceph-hdd.yaml
-
test-statefulsetаттар кеңістігі үшінStatefulSetтүріндегі жұмыс жүктемесі контроллері манифестінің файлын жасаңыз:Мұнда:
replicas: 3— под репликаларының саны.maxSkew: 1— түйіндер арасындағы подтар санының ең көп рұқсат етілген айырмашылығы. Бұл мысалда ол 1-ден аспауы керек.
-
Манифест негізінде Kubernetes ресурсын жасаңыз:
kubectl apply -f test-statefulset.yaml -
Жасалған подтар туралы ақпаратты келесі команда арқылы қараңыз:
kubectl get pods -n test-statefulset -o wideШығыс мысалы:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESzone-spread-0 1/1 Running 0 2m42s 10.100.173.129 test-multiaz-node-group-ud1-0 <none> <none>zone-spread-1 1/1 Running 0 2m30s 10.100.100.128 test-multiaz-node-group-ud2-2 <none> <none>zone-spread-2 1/1 Running 0 2m18s 10.100.204.193 test-multiaz-node-group-ud1-1 <none> <none>Бұл 2 қолжетімділік аймағында 3 под жасалғанын білдіреді:
zone-spread-0—UD1аймағындағыtest-multiaz-node-group-ud1-0түйінінде;zone-spread-1—UD2аймағындағыtest-multiaz-node-group-ud2-2түйінінде;zone-spread-2—UD1аймағындағыtest-multiaz-node-group-ud1-1түйінінде.
-
StorageClassүшін манифест негізінде әр под үшін оның қолжетімділік аймағында PV жасалғанына көз жеткізіңіз:-
Подтар үшін жасалған PV-лерді табыңыз:
kubectl get pv -o wide -
Шығарылған кестеде жасалған
csi-ceph-hddсақтау класы негізіндегі әрбір PVC үшінNODEбағанының мәндерін табыңыз. Шығыс мысалы:NAME ... STATUS STORAGECLASS ... NODE... ... ... ...pvc-58fd0c60-e825-42a9-a187-b9f092bb077d Bound csi-ceph-hdd ... test-multiaz-node-group-ud1-0pvc-eb0ee40d-6580-4902-a832-ea192e32f910 ... Bound csi-ceph-hdd ... test-multiaz-node-group-ud2-2pvc-f32f486e-75e9-4ba5-b553-ffbbad180b91 ... Bound csi-ceph-hdd ... test-multiaz-node-group-ud1-1
-
Жұмыс істеп тұрған кластер тарификацияланады және есептеу ресурстарын тұтынады. Егер көпаймақты сақтау кластарының жұмысын тексеру үшін жасалған Kubernetes ресурстары енді қажет болмаса, оларды жойыңыз:
-
Жасалған
test-statefulsetаттар кеңістігін және онымен байланысты ресурстарды жойыңыз:Linux/macOSWindowskubectl delete ns test-statefulset -
Жасалған PV-лерді жойыңыз.
ifdef(public)}
- Тоқтатыңыз жасалған кластерді, оны кейінірек пайдалану үшін, немесе жойыңыз оны біржола.
{/ifdef}