OpenShift виртуализациясы: контейнерлер, KVM және виртуалды машиналар

OpenShift виртуализациясы (жоғарғы жоба - Kubernetes: KubeVirt, қараңыз. осында и осында), nee Container-Native Virtualization, виртуалды машиналарды (VM) негізгі Kubernetes нысандары ретінде орналастыруға және басқаруға арналған OpenShift платформасының функционалдығы ретінде енгізілді. Тапсырманың бұл түрі технологиядағы түбегейлі айырмашылықтарға байланысты техникалық күрделі. Осы мақсатқа жету үшін біз Red Hat Enterprise Linux және KVM негізіндегі көптеген жылдар бойы бізбен бірге болған және тиімділігін дәлелдеген таныс технологияларды қолдандық.

OpenShift виртуализациясы: контейнерлер, KVM және виртуалды машиналар

Бұл мақалада біз OpenShift виртуализациясының техникалық аспектілерін қарастырамыз, бұл VM және контейнерлердің оларды бір нысан ретінде басқаратын бір платформада бірге өмір сүруіне мүмкіндік береді.

Есептеу тапсырмалары

Контейнерлер процестерді оқшаулау және ресурстарды басқару үшін аттар кеңістігі және топтар сияқты Linux ядросының механизмдерін пайдаланады. Әдетте процестер Python, Java қолданбалары немесе орындалатын файлдар деп түсініледі, бірақ іс жүзінде олар bash, Emacs немесе vim сияқты кез келген процестер болуы мүмкін.

Виртуалды машина дегеніміз не? Гипервизордың көзқарасы бойынша бұл да процесс. Бірақ қолданба процесі емес, нақты VM орындауға жауапты KVM процесі.

OpenShift виртуализациясы: контейнерлер, KVM және виртуалды машиналар

Контейнер кескіні KVM виртуалды машинасына қажетті барлық құралдарды, кітапханаларды және файлдарды қамтиды. Егер біз іске қосылған VM модулін тексеретін болсақ, онда көмекшілер мен qemu-kvm процестерін көреміз. Сонымен қатар, бізде qemu-img, qemu-nbd және virsh сияқты виртуалды машиналарды басқаруға арналған KVM құралдары қолжетімді.

OpenShift виртуализациясы: контейнерлер, KVM және виртуалды машиналар

Виртуалды машина подколь болғандықтан, ол автоматты түрде Kubernetes ішіндегі подкасттың барлық функцияларын иеленеді. VM қосқыштары, кәдімгі подкасттар сияқты, жоспарлаушы схемаларына және ластану, төзімділік, жақындық және антифинділік сияқты критерийлерге бағынады. Сіз сондай-ақ жоғары қолжетімділіктің артықшылықтарын аласыз және т.б. Дегенмен, бір маңызды айырмашылық бар: кәдімгі тұқымдар әдеттегі мағынада хосттан хостқа көшпейді. Түйін желіден тыс болса, ондағы қосқыш тоқтатылады және кластердегі басқа түйінге қайта тағайындалады. Ал виртуалды машина жағдайында біз тірі көшуді көреміз деп күтеміз.

Бұл олқылықты жою үшін жұмысшы түйіндері арасындағы виртуалды құрылғылардың тірі көшірулерін инициализациялауға, бақылауға және басқаруға жауап беретін тірі тасымалдау механизмін сипаттау үшін теңшелетін ресурс анықтамасы (CDR) жасалды.

apiVersion: kubevirt.io/v1alpha3
kind: VirtualMachineInstanceMigration
metadata:
  name: migration-job
spec:
  vmiName: fedora

Түйін өшірілгенде, көшіру стратегиясы ретінде Live Migration орнатылған виртуалды машиналар үшін тасымалдау тапсырмалары автоматты түрде жасалады. Осылайша, кластер түйіндері арасында жылжу кезінде виртуалды машиналар әрекетін басқара аласыз. Live Migration параметрін теңшей аласыз және барлық басқа қосқыштар сияқты VM-ді басқара аласыз.

Желі

Кез келген Kubernetes жүйесі бағдарламалық қамтамасыз ету SDN желілерін пайдалана отырып, түйіндер мен түйіндер арасындағы байланысты қамтамасыз етеді. OpenShift ерекшелік емес және 3 нұсқасынан бастап бұл үшін әдепкі бойынша OpenShiftSDN пайдаланады. Бұған қоса, OpenShift 4-те Multus деп аталатын тағы бір жаңа мүмкіндік бар, ол бірнеше желіні қол жетімді етуге және оларға бір уақытта подкасттарды қосуға мүмкіндік береді.

OpenShift виртуализациясы: контейнерлер, KVM және виртуалды машиналар

Multus көмегімен әкімші қосымша CNI желілерін анықтай алады, содан кейін олар кластерде арнайы кластерлік желі операторы арқылы орналастырылады және конфигурацияланады. Содан кейін қосқыштар осы желілердің біріне немесе бірнешеуіне, әдетте стандартты OpenShiftSDN және қосымша интерфейске қосылады. SR-IOV құрылғылары, стандартты Linux Bridge, MACVLAN және IPVLAN құрылғылары VM қажет болса, барлығын пайдалануға болады. Төмендегі суретте eth1 интерфейсіндегі көпір желісі үшін Multus CNI орнату жолы көрсетілген:

apiVersion: operator.openshift.io/v1
kind: Network
metadata:
  name: cluster
spec:
  additionalNetworks:
  - name: multus1
rawCNIConfig: '{ "cniVersion": "0.3.1", "type": "bridge", "master": "eth1", "ipam":
   { "type": "static", "addresses": [ { "address": "191.168.1.1/24" } ] } }'
   type: Raw

OpenShift виртуализациясына қатысты бұл виртуалды компьютерді SDN-ді айналып өтіп, сыртқы желіге тікелей қосуға болатындығын білдіреді. Бұл Red Hat Virtualization немесе VMware vSphere жүйесінен OpenShift жүйесіне көшірілген виртуалды машиналар үшін маңызды, өйткені екінші OSI деңгейіне рұқсатыңыз болса, желі параметрлерінде ешқандай өзгеріс болмайды. Бұл сонымен қатар VM-де SDN-ді айналып өтетін желі мекенжайы болуы мүмкін дегенді білдіреді. Осылайша, біз арнайы желілік адаптерлерді тиімді пайдалана аламыз немесе желі арқылы сақтау жүйесіне тікелей қосыла аламыз...

OpenShift виртуалдандыру виртуалды машиналарын желіге жасау және қосу жолы туралы көбірек біле аласыз осында. Сонымен қатар, nmstate операторы, OpenShift виртуализациясының бөлігі ретінде орналастырылған, гипервизорлар астында пайдаланылатын физикалық түйіндерде желі конфигурацияларын жасау және басқарудың басқа таныс әдісін ұсынады.

Сақтау

OpenShift виртуализациясында виртуалды машина дискілерін қосу және басқару StorageClasses, PersistentVolumeClaims (PVC) және PersistentVolume (PV) сияқты Kubernetes тұжырымдамаларын, сондай-ақ Kubernetes ортасы үшін сақтау протоколдарын стандартты пайдалану арқылы орындалады. Бұл Kubernetes әкімшілері мен қолданба топтарына контейнерлерді де, виртуалды машиналарды да басқарудың жалпы, таныс әдісін береді. Виртуализация орталарының көптеген әкімшілері үшін бұл тұжырымдама таныс болуы мүмкін, өйткені ол OpenStack және басқа да көптеген бұлттық платформаларда қолданылатын VM конфигурация файлдары мен дискілерін бөлудің бірдей принципін пайдаланады.

Дегенмен, біз әрқашан виртуалды компьютер үшін жаңа диск жасай алмаймыз, өйткені гипервизордан OpenShift-ке көшкен кезде деректерді сақтау керек. Иә, біз жаңа VM-ді қолданған кезде де, оны нөлден жасағаннан гөрі үлгіден жасау әрқашан жылдамырақ. Осылайша, бізге бар дискілерді импорттау үшін функционалдылық қажет.

Бұл тапсырманы жеңілдету үшін OpenShift виртуализациясы Контейнерленген деректерді импорттаушы (CDI) жобасын қолданады, ол дискілердің диск кескіндерін бірнеше көздерден импорттауды ПВХ жазбасын жасауға дейін азайтады.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: "fedora-disk0"
  labels:
    app: containerized-data-importer
  annotations:
    cdi.kubevirt.io/storage.import.endpoint: "http://10.0.0.1/images/Fedora-Cloud-Base-31-1.9.x86_64.qcow2"
spec:
  storageClassName: ocs-gold
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi

Төмендегі суретте көрсетілген әрекеттер тізбегін іске қоса отырып, CDI іске қосатын осы жазба:

OpenShift виртуализациясы: контейнерлер, KVM және виртуалды машиналар

CDI аяқталғаннан кейін ПВХ пайдалануға дайын виртуалды машина дискісін қамтиды және стандартты OpenShift пішіміне түрлендіріледі...
OpenShift виртуализациясымен жұмыс істегенде, контейнерлер үшін тұрақты сақтау функционалдығын жүзеге асыратын Ceph файлдық жүйесіне негізделген Red Hat шешімі OpenShift Container Storage (OCS) да пайдалы. Стандартты PVC қатынау әдістеріне қосымша - RWO (блок) және RWX (файл) - OCS өңделмеген блок құрылғылары үшін RWX қамтамасыз етеді, ол өнімділігі жоғары талаптары бар қолданбалар үшін блоктық қатынасты бөлісу үшін өте пайдалы. Сонымен қатар, OCS қолданбаларға нысан деректерін сақтауды тікелей пайдалануға мүмкіндік беретін жаңа Object Bucket Claim стандартын қолдайды.

Контейнерлердегі виртуалды машиналар

Егер сіз оның қалай жұмыс істейтінін тексергіңіз келсе, OpenShift виртуализациясы OpenShift 3.11 және одан жоғары нұсқасының бөлігі ретінде Tech Preview нұсқасында бұрыннан бар екенін біліңіз. Қолданыстағы OpenShift жазылымының иелері OpenShift виртуализациясын толығымен тегін және ешқандай қосымша қадамдарсыз пайдалана алады. Осы жазба кезінде OpenShift 4.4 және OpenShift виртуализациясы 2.3 ағымдағы; алдыңғы нұсқаларды пайдалансаңыз, соңғы мүмкіндіктерді алу үшін жаңартуыңыз керек. OpenShift виртуализациясының толық қолдау көрсетілетін нұсқасы 2020 жылдың екінші жартысында шығарылуы керек.

Қосымша ақпарат алу үшін қараңыз OpenShift құжаттамасы орнату нұсқаулары үшін, соның ішінде Multis баптау бөлімі, ол сыртқы желілерді орнату туралы ақпаратты береді.

Ақпарат көзі: www.habr.com

пікір қалдыру