Тұрақты томдармен (PV) жұмыс істеу
Тұрақты томдарды (Persistent Volumes, PV) қарапайым демо-қосымшаларға әртүрлі тәсілдермен қосуға болады. Әрі қарай қосу үшін Persistent Volume Claims (PVC) пайдаланылады. Қосымшалардың және оларға қосылған PV-лардың жұмысқа қабілеттілігін тексеру үшін Ingress ресурсы жасалады.
-
Жасаңыз Kubernetes кластерін өзекті нұсқада, егер бұл әлі жасалмаған болса.
Кластерді жасау кезінде:
-
Сыртқы IP тағайындау опциясын таңдаңыз.
-
Қолжетімділік аймағы
MS1болатынSTD3-2-8виртуалды машина түрімен жалпы есептеу ресурстары: 2 vCPU, 8 ГБ RAM болатын бір түйін тобын жасаңыз (немесе өнімдірек түрін таңдауға болады). Бұл әрі қарай жасалатын барлық объектілерді орналастыруға мүмкіндік беру үшін қажет.Мысалы,
STD3-2-8виртуалды машина түрімен бір түйін тобын жасауға болады.
Кластердің басқа параметрлерін өз қалауыңыз бойынша таңдаңыз.
-
-
Кластерде әдепкі параметрлермен NGINX Ingress (
ingress-nginx) аддоны орнатылғанына көз жеткізіңіз. Ол демо-қосымшаларға қолжетімділікті қамтамасыз ету үшін қажет болады. -
kubectlкөмегімен кластерге қосыла алатыныңызға көз жеткізіңіз. -
Егер утилита әлі орнатылмаған болса, curl орнатыңыз.
Әрі қарай қосылған PV-ларға жазылған веб-беттерді көрсету үшін NGINX негізіндегі бірнеше веб-қосымшаны қалай жасау керектігі көрсетіледі.
Веб-беттерді /usr/share/nginx/html директориясынан көрсететін nginxdemos/nginx-hello NGINX бейнесі пайдаланылады, сондықтан барлық PV дәл осы жол бойынша қосымшалардың подтарына монтталады.
PV қосудың қандай тәсілдерімен танысу қажет екеніне байланысты бір немесе бірнеше демо-қосымша жасауға болады.
Блоктық сақтау қоймалары кластерге Cinder CSI көмегімен қосылады.
Осындай түрдегі сақтау қоймаларын пайдаланғанда:
- сақтау қоймасына тек бір под қана қол жеткізе алады (бірнеше под блоктық сақтау қоймасын бір уақытта пайдалана алмайды);
- соның салдарынан сақтау қоймасына қол жеткізу үшін
ReadWriteOnceрежимі пайдаланылуы тиіс.
Бұл мысалда мыналар жасалады:
-
VK Cloud платформасының Бұлтты есептеулер бөліміндегі диск.
-
Осы дискіге сәйкес келетін PV.
-
Бұрыннан жасалған PV-ды пайдаланатын статикалық PVC.
-
Бір подтан тұратын deployment және оған сәйкес service түріндегі
teaқосымшасы.Бұл қосымша үшін сондай-ақ PV-ға веб-бетті жазатын инициализация контейнері (initContainer) жасалады.
PV-ды статикалық PVC көмегімен қосу үшін:
-
Жасау кезінде мыналарды көрсетіңіз:
- Диск атауы: кез келген, мысалы,
disk-tea. - Дереккөз:
бос диск. - Диск түрі:
желілік HDD-диск (ceph-hdd). - Қолжетімділік аймағы:
MS1. - Өлшемі:
1 ГБ.
Басқа опциялар мен параметрлерді өзгертпей қалдырыңыз.
- Диск атауы: кез келген, мысалы,
-
Жасалған дискінің идентификаторын көшіріп алыңыз, мысалы,
f6d8bf3b-aaaa-bbbb-cccc-4ece8e353246. -
Қосу ерекшеліктерін зерттеңіз:
- PersistentVolume ресурсы үшін
spec.capacity.storageпараметрлерінде және PersistentVolumeClaim ресурсы үшінspec.resources.requests.storageпараметрлерінде көрсетілетін сақтау қоймасының өлшемдері тиісті дискінің өлшемімен сәйкес келуі тиіс. Бұл мысалда — 1 ГБ. - PersistentVolumeClaim ресурсы үшін сақтау класының
storageClassNameпараметрінде бос мәнді пайдаланыңыз. - Сақтау қоймасына қол жеткізу режимі PersistentVolume ресурсы үшін
spec.accessModesпараметрінде беріледі. - Дискінің және қосымша поды орналасатын worker-түйіннің қолжетімділік аймақтары сәйкес келуі тиіс. Әйтпесе, осы түйіндегі подқа дискіге сәйкес келетін PV-ды қосу әрекеті сәтсіз аяқталады. Бұл мысалда под
MS1қолжетімділік аймағындағы worker-түйіндер тобына орналастырылады және осы аймақтан дискіні пайдаланады. - PV үшін
RetainReclaimPolicy пайдаланылады.Deleteсаясаты дискінің күйін қолмен басқаруға және оны кездейсоқ жоймауға мүмкіндік беру үшін қолданылмайды.
- PersistentVolume ресурсы үшін
-
teaқосымшасы үшін манифест жасаңыз.PersistentVolume ресурсы үшін жасалған дискінің идентификаторын
spec.cinder.volumeIDпараметрінде көрсетіңіз. -
Барлық қажетті ресурстарды жасау үшін осы манифесті кластерде қолданыңыз:
kubectl apply -f ./tea.yaml
Файлдық сақтау қоймалары кластерге, мысалы NFS сияқты, қажетті протокол бойынша бар сақтау қоймасын пайдалануға бапталған PV көмегімен қосылады.
Осындай түрдегі сақтау қоймаларын пайдаланғанда:
- бірден бірнеше под сақтау қоймасына қол жеткізе алады;
- соның салдарынан сақтау қоймасына қол жеткізу үшін
ReadWriteManyрежимі пайдаланылуы тиіс.
Бұл мысалда мыналар жасалады:
- VK Cloud платформасының Бұлтты есептеулер бөліміндегі файлдық NFS сақтау қоймасы.
- Осы сақтау қоймасына сәйкес келетін PV.
- Бұрыннан жасалған PV-ды пайдаланатын статикалық PVC.
- Екі подтан тұратын StatefulSet түріндегі
milkshakeқосымшасы, сондай-ақ оған сәйкес service-тер.
PV NFS-ті статикалық PVC көмегімен қосу үшін:
-
Файлдық сақтау қоймасын жасаңыз.
Жасау кезінде мыналарды көрсетіңіз:
- Файлдық сақтау қоймасының атауы: кез келген, мысалы,
storage-milkshake. - Сақтау қоймасының өлшемі:
10 ГБ. - Протокол:
NFS. - Желі: Kubernetes кластері орналасқан желі мен ішкі желі. Бұл ақпаратты кластер бетінде білуге болады.
- Файлдық сақтау қоймасының желісі: бар желі. Егер тізімде лайықты желі болмаса,
Жаңа желі жасаутармағын таңдаңыз.
- Файлдық сақтау қоймасының атауы: кез келген, мысалы,
-
Жасалған файлдық сақтау қоймасы туралы ақпаратты қараңыз.
Қосылу нүктесі параметрінің мәнін сақтап қойыңыз.
-
Қосу ерекшеліктерін зерттеңіз:
-
PersistentVolumeClaim ресурсы үшін
spec.capacity.storageжәнеspec.resources.requests.storageпараметрлерінде көрсетілетін сақтау қоймасының өлшемдері жасалған файлдық сақтау қоймасының өлшемімен сәйкес келуі тиіс. Бұл мысалда — 10 ГБ. -
PersistentVolumeClaim ресурсы үшін сақтау класының
storageClassNameпараметрінде бос мәнді пайдаланыңыз. -
PersistentVolume ресурсы үшін:
- Сақтау қоймасына қол жеткізу режимі PersistentVolume ресурсы үшін
spec.accessModesпараметрінде беріледі. spec.mountOptionsпараметрлер жиынында4.0нұсқасы барnfsversжазбасы болуы тиіс.
- Сақтау қоймасына қол жеткізу режимі PersistentVolume ресурсы үшін
-
PV-ға веб-бетті жазу үшін инициализация контейнерінің орнына бір рет іске қосылатын Kubernetes тапсырмасы (job) пайдаланылады. Мұндай тәсіл бұл жағдайда барлық подтар бірдей PV-ға қол жеткізе алатындықтан жұмыс істейді.
-
PV үшін
RetainReclaimPolicy пайдаланылады, өйткеніRecycleсаясаты ол қажет болмай қалған кезде оны бірден жоюға мүмкіндік бермейді. PV-ды деректерден тазарту ұзақ уақыт алады.Deleteсаясаты сақтау қоймасының күйін қолмен басқаруға және оны кездейсоқ жоймауға мүмкіндік беру үшін қолданылмайды.
-
-
milkshakeқосымшасы үшін манифест жасаңыз.PersistentVolume ресурсы үшін мыналарды көрсетіңіз:
- файлдық сақтау қоймасының Қосылу нүктесі параметрінен алынған IP-мекенжайды
spec.nfs.serverпараметрінің мәні ретінде; - IP-мекенжайдан кейінгі деректерді (
/shares/...)spec.nfs.pathпараметрінің мәні ретінде.
- файлдық сақтау қоймасының Қосылу нүктесі параметрінен алынған IP-мекенжайды
-
Барлық қажетті ресурстарды жасау үшін осы манифесті кластерде қолданыңыз:
kubectl apply -f ./milkshake.yaml
-
Қосымшаларға сұраулар өтетін Ingress ресурсы үшін манифест жасаңыз.
-
Барлық қажетті ресурстарды жасау үшін осы манифесті кластерде қолданыңыз:
kubectl apply -f ./cafe-ingress.yaml -
Ingress контроллерінің жария IP-мекенжайын анықтаңыз.
-
Ingress контроллерінің IP-мекенжайын пайдаланып,
curlкөмегімен қосымшалардың қолжетімділігін тексеріңіз.TeaCoffeeJuiceMilkshakeКоманданы орындаңыз:
curl --resolve cafe.example.com:80:<IP-адрес Ingress> http://cafe.example.com/teaЖауап ретінде мынаны көруіңіз керек:
The tea pod says Hello World to everyone! This file is located on the statically claimed persistent volume.
Жұмыс істеп тұрған кластер тарифтеледі және есептеу ресурстарын тұтынады. Егер тұрақты томдардың жұмысын тексеру үшін жасалған Kubernetes ресурстары сізге енді қажет болмаса, оларды жойыңыз:
-
Манифест файлдарында сипатталған ресурстарды жойыңыз:
Linux/macOSWindowskubectl delete -f ./cafe-ingress.yamlkubectl delete -f ./milkshake.yamlkubectl delete -f ./juice.yamlkubectl delete -f ./coffee.yamlkubectl delete -f ./tea.yaml -
Пайдаланылмайтын сақтау қоймаларын жойыңыз:
teaқосымшасы пайдаланған диск;milkshakeқосымшасы пайдаланған NFS сақтау қоймасы.
Динамикалық PVC көмегімен жасалған барлық басқа Cinder сақтау қоймалары автоматты түрде жойылады.
-
Тоқтатыңыз жасалған кластерді, оны кейінірек пайдалану үшін, немесе жойыңыз оны біржола.