VK Cloud logo

Тұрақты томдармен (PV) жұмыс істеу

Тұрақты томдарды (Persistent Volumes, PV) қарапайым демо-қосымшаларға әртүрлі тәсілдермен қосуға болады. Әрі қарай қосу үшін Persistent Volume Claims (PVC) пайдаланылады. Қосымшалардың және оларға қосылған PV-лардың жұмысқа қабілеттілігін тексеру үшін Ingress ресурсы жасалады.

Дайындық қадамдары

  1. Жасаңыз Kubernetes кластерін өзекті нұсқада, егер бұл әлі жасалмаған болса.

    Кластерді жасау кезінде:

    • Сыртқы IP тағайындау опциясын таңдаңыз.

    • Қолжетімділік аймағы MS1 болатын STD3-2-8 виртуалды машина түрімен жалпы есептеу ресурстары: 2 vCPU, 8 ГБ RAM болатын бір түйін тобын жасаңыз (немесе өнімдірек түрін таңдауға болады). Бұл әрі қарай жасалатын барлық объектілерді орналастыруға мүмкіндік беру үшін қажет.

      Мысалы, STD3-2-8 виртуалды машина түрімен бір түйін тобын жасауға болады.

    Кластердің басқа параметрлерін өз қалауыңыз бойынша таңдаңыз.

  2. Кластерде әдепкі параметрлермен NGINX Ingress (ingress-nginx) аддоны орнатылғанына көз жеткізіңіз. Ол демо-қосымшаларға қолжетімділікті қамтамасыз ету үшін қажет болады.

  3. kubectl көмегімен кластерге қосыла алатыныңызға көз жеткізіңіз.

  4. Егер утилита әлі орнатылмаған болса, curl орнатыңыз.

1. Демо-қосымшаларды жасаңыз және оларға PV қосыңыз

Әрі қарай қосылған PV-ларға жазылған веб-беттерді көрсету үшін NGINX негізіндегі бірнеше веб-қосымшаны қалай жасау керектігі көрсетіледі. Веб-беттерді /usr/share/nginx/html директориясынан көрсететін nginxdemos/nginx-hello NGINX бейнесі пайдаланылады, сондықтан барлық PV дәл осы жол бойынша қосымшалардың подтарына монтталады.

PV қосудың қандай тәсілдерімен танысу қажет екеніне байланысты бір немесе бірнеше демо-қосымша жасауға болады.

Блоктық сақтау қоймаларын қосу

Блоктық сақтау қоймалары кластерге Cinder CSI көмегімен қосылады.

Осындай түрдегі сақтау қоймаларын пайдаланғанда:

  • сақтау қоймасына тек бір под қана қол жеткізе алады (бірнеше под блоктық сақтау қоймасын бір уақытта пайдалана алмайды);
  • соның салдарынан сақтау қоймасына қол жеткізу үшін ReadWriteOnce режимі пайдаланылуы тиіс.

Бұл мысалда мыналар жасалады:

  1. VK Cloud платформасының Бұлтты есептеулер бөліміндегі диск.

  2. Осы дискіге сәйкес келетін PV.

  3. Бұрыннан жасалған PV-ды пайдаланатын статикалық PVC.

  4. Бір подтан тұратын deployment және оған сәйкес service түріндегі tea қосымшасы.

    Бұл қосымша үшін сондай-ақ PV-ға веб-бетті жазатын инициализация контейнері (initContainer) жасалады.

PV-ды статикалық PVC көмегімен қосу үшін:

  1. Желілік HDD дискін жасаңыз.

    Жасау кезінде мыналарды көрсетіңіз:

    • Диск атауы: кез келген, мысалы, disk-tea.
    • Дереккөз: бос диск.
    • Диск түрі: желілік HDD-диск (ceph-hdd).
    • Қолжетімділік аймағы: MS1.
    • Өлшемі: 1 ГБ.

    Басқа опциялар мен параметрлерді өзгертпей қалдырыңыз.

  2. Жасалған дискінің идентификаторын көшіріп алыңыз, мысалы, f6d8bf3b-aaaa-bbbb-cccc-4ece8e353246.

  3. Қосу ерекшеліктерін зерттеңіз:

    1. PersistentVolume ресурсы үшін spec.capacity.storage параметрлерінде және PersistentVolumeClaim ресурсы үшін spec.resources.requests.storage параметрлерінде көрсетілетін сақтау қоймасының өлшемдері тиісті дискінің өлшемімен сәйкес келуі тиіс. Бұл мысалда — 1 ГБ.
    2. PersistentVolumeClaim ресурсы үшін сақтау класының storageClassName параметрінде бос мәнді пайдаланыңыз.
    3. Сақтау қоймасына қол жеткізу режимі PersistentVolume ресурсы үшін spec.accessModes параметрінде беріледі.
    4. Дискінің және қосымша поды орналасатын worker-түйіннің қолжетімділік аймақтары сәйкес келуі тиіс. Әйтпесе, осы түйіндегі подқа дискіге сәйкес келетін PV-ды қосу әрекеті сәтсіз аяқталады. Бұл мысалда под MS1 қолжетімділік аймағындағы worker-түйіндер тобына орналастырылады және осы аймақтан дискіні пайдаланады.
    5. PV үшін Retain ReclaimPolicy пайдаланылады. Delete саясаты дискінің күйін қолмен басқаруға және оны кездейсоқ жоймауға мүмкіндік беру үшін қолданылмайды.
  4. tea қосымшасы үшін манифест жасаңыз.

    PersistentVolume ресурсы үшін жасалған дискінің идентификаторын spec.cinder.volumeID параметрінде көрсетіңіз.

  5. Барлық қажетті ресурстарды жасау үшін осы манифесті кластерде қолданыңыз:

    kubectl apply -f ./tea.yaml

Файлдық сақтау қоймаларын қосу

Файлдық сақтау қоймалары кластерге, мысалы NFS сияқты, қажетті протокол бойынша бар сақтау қоймасын пайдалануға бапталған PV көмегімен қосылады.

Осындай түрдегі сақтау қоймаларын пайдаланғанда:

  • бірден бірнеше под сақтау қоймасына қол жеткізе алады;
  • соның салдарынан сақтау қоймасына қол жеткізу үшін ReadWriteMany режимі пайдаланылуы тиіс.

Бұл мысалда мыналар жасалады:

  1. VK Cloud платформасының Бұлтты есептеулер бөліміндегі файлдық NFS сақтау қоймасы.
  2. Осы сақтау қоймасына сәйкес келетін PV.
  3. Бұрыннан жасалған PV-ды пайдаланатын статикалық PVC.
  4. Екі подтан тұратын StatefulSet түріндегі milkshake қосымшасы, сондай-ақ оған сәйкес service-тер.

PV NFS-ті статикалық PVC көмегімен қосу үшін:

  1. Файлдық сақтау қоймасын жасаңыз.

    Жасау кезінде мыналарды көрсетіңіз:

    • Файлдық сақтау қоймасының атауы: кез келген, мысалы, storage-milkshake.
    • Сақтау қоймасының өлшемі: 10 ГБ.
    • Протокол: NFS.
    • Желі: Kubernetes кластері орналасқан желі мен ішкі желі. Бұл ақпаратты кластер бетінде білуге болады.
    • Файлдық сақтау қоймасының желісі: бар желі. Егер тізімде лайықты желі болмаса, Жаңа желі жасау тармағын таңдаңыз.
  2. Жасалған файлдық сақтау қоймасы туралы ақпаратты қараңыз.

    Қосылу нүктесі параметрінің мәнін сақтап қойыңыз.

  3. Қосу ерекшеліктерін зерттеңіз:

    1. PersistentVolumeClaim ресурсы үшін spec.capacity.storage және spec.resources.requests.storage параметрлерінде көрсетілетін сақтау қоймасының өлшемдері жасалған файлдық сақтау қоймасының өлшемімен сәйкес келуі тиіс. Бұл мысалда — 10 ГБ.

    2. PersistentVolumeClaim ресурсы үшін сақтау класының storageClassName параметрінде бос мәнді пайдаланыңыз.

    3. PersistentVolume ресурсы үшін:

      1. Сақтау қоймасына қол жеткізу режимі PersistentVolume ресурсы үшін spec.accessModes параметрінде беріледі.
      2. spec.mountOptions параметрлер жиынында 4.0 нұсқасы бар nfsvers жазбасы болуы тиіс.
    4. PV-ға веб-бетті жазу үшін инициализация контейнерінің орнына бір рет іске қосылатын Kubernetes тапсырмасы (job) пайдаланылады. Мұндай тәсіл бұл жағдайда барлық подтар бірдей PV-ға қол жеткізе алатындықтан жұмыс істейді.

    5. PV үшін Retain ReclaimPolicy пайдаланылады, өйткені Recycle саясаты ол қажет болмай қалған кезде оны бірден жоюға мүмкіндік бермейді. PV-ды деректерден тазарту ұзақ уақыт алады. Delete саясаты сақтау қоймасының күйін қолмен басқаруға және оны кездейсоқ жоймауға мүмкіндік беру үшін қолданылмайды.

  4. milkshake қосымшасы үшін манифест жасаңыз.

    PersistentVolume ресурсы үшін мыналарды көрсетіңіз:

    • файлдық сақтау қоймасының Қосылу нүктесі параметрінен алынған IP-мекенжайды spec.nfs.server параметрінің мәні ретінде;
    • IP-мекенжайдан кейінгі деректерді (/shares/...) spec.nfs.path параметрінің мәні ретінде.
  5. Барлық қажетті ресурстарды жасау үшін осы манифесті кластерде қолданыңыз:

    kubectl apply -f ./milkshake.yaml

2. Демо-қосымшалардың және PV-лардың жұмысқа қабілеттілігін тексеріңіз

  1. Қосымшаларға сұраулар өтетін Ingress ресурсы үшін манифест жасаңыз.

  2. Барлық қажетті ресурстарды жасау үшін осы манифесті кластерде қолданыңыз:

    kubectl apply -f ./cafe-ingress.yaml
  3. Ingress контроллерінің жария IP-мекенжайын анықтаңыз.

  4. Ingress контроллерінің IP-мекенжайын пайдаланып, curl көмегімен қосымшалардың қолжетімділігін тексеріңіз.

    Команданы орындаңыз:

    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 ресурстары сізге енді қажет болмаса, оларды жойыңыз:

  1. Манифест файлдарында сипатталған ресурстарды жойыңыз:

    kubectl delete -f ./cafe-ingress.yamlkubectl delete -f ./milkshake.yamlkubectl delete -f ./juice.yamlkubectl delete -f ./coffee.yamlkubectl delete -f ./tea.yaml
  2. Пайдаланылмайтын сақтау қоймаларын жойыңыз:

    • tea қосымшасы пайдаланған диск;
    • milkshake қосымшасы пайдаланған NFS сақтау қоймасы.

    Динамикалық PVC көмегімен жасалған барлық басқа Cinder сақтау қоймалары автоматты түрде жойылады.

  3. Тоқтатыңыз жасалған кластерді, оны кейінірек пайдалану үшін, немесе жойыңыз оны біржола.