OpenShift'i virtualiseerimine (ĂŒlemineku projekt - Kubernetes: KubeVirt, vt. ja ), varem tuntud kui Container-native Virtualization, esitati OpenShift'i platvormi funktsionaalsusena, mis on mĂ”eldud virtuaalmasinate (VM) juurutamiseks ja haldamiseks kui Kubernetes'e pĂ”hielementideks. Sellise ĂŒlesande tĂ€itmine on tehniliselt keeruline, pĂ”hjusel, et tehnoloogiate fundamentaalsed erinevused. Selle eesmĂ€rgi saavutamiseks kasutati kĂ”ikidele tuttavaid tehnoloogiaid, mis pĂ”hinevad Red Hat Enterprise Linuxil ja KVM-il, mis on meiega olnud aastaid ja tĂ”estanud oma efektiivsust.

Selles artiklis vaatleme OpenShift'i virtualiseerimise tehnilisi aspekte, mis vĂ”imaldavad VM-de ja konteinerite samaaegset eksisteerimist ĂŒhes platvormis, mis haldab neid kui tervikut.
ArvutusĂŒlesanded
Konteinerid kasutavad Linuxi kerneli mehhanisme, nagu nimed ja cgroups, protsesside isoleerimiseks ja ressursside haldamiseks. Tavaliselt mÔistetakse protsessina rakendusi nagu Python, Java vÔi tÀidesaatvad failid, kuid tegelikult vÔivad need olla igasugused protsessid, nÀiteks bash, Emacs vÔi vim.
Mis on virtuaalne masin? HĂŒperviisori vaatenurgast on see samuti protsess. Kuid see ei ole rakenduse protsess, vaid KVM-protsess, mis vastutab konkreetse virtuaalse masina töö eest.

Konteineripilt sisaldab kÔiki tööriistu, raamatukogusid ja faile, mis on vajalikud KVM virtuaalse masina jaoks. Kui vaatame töötava virtuaalse masina pod'i, nÀeme seal abisaid ja qemu-kvm protsesse. Lisaks on meil juurdepÀÀs KVM-tööriistadele virtuaalsete masinate haldamiseks, nÀiteks qemu-img, qemu-nbd ja virsh.

Kuna virtuaalne masin on pod, pĂ€rib see automaatselt kogu pod'i funktsionaalsuse Kuberneteses. Virtuaalsetele masinatele ka rakenduvad samad skeemid ja planeerimise kriteeriumid nagu tavapĂ€rastele pod'idele, nĂ€iteks taints, tolerations, affinity ja anti-affinity. Samuti saate eeliseid kĂ”rgest saadavusest jne. Siiski on ĂŒks oluline erinevus: tavalised pod'id ei rĂ€ndavad hostilt hostile meie harjumuslikus tĂ€henduses. Kui sĂ”lm lĂŒlitatakse vĂ€lja, katkeb sellel olev pod ning see mÀÀratakse ĂŒmber teisele sĂ”lmele klastris. Virtuaalse masina puhul ootame aga nĂ€gevat elavat rĂ€ndamist.
Selle probleemi lahendamiseks loodi kohandatud ressursside mÀÀratlemine (CDR), mis kirjeldab elava migreerimise mehhanismi, mis vastutab VM-ide elava migreerimise algatamise, jÀlgimise ja haldamise eest töötlusnode vahel.
apiVersion: kubevirt.io/v1alpha3
kind: VirtualMachineInstanceMigration
metadata:
name: migration-job
spec:
vmiName: fedora
Node deaktiveerimise korral luuakse automaatselt migreerimisĂŒlesanded nende virtuaalmasinate jaoks, mille eviction strategy on seadistatud Live Migration-iks. Nii on vĂ”imalik kontrollida virtuaalmasinate kĂ€itumist klastrinodeside vahel liikumise ajal. Saate nii seadistada Live Migration-i kui ka hallata VM-e nagu kĂ”iki teisi pod'e.
VÔrk
Iga Kubernetes-sĂŒsteem tagab suhtluse node'ide ja pod'ide vahel tarkvaraliste SDN-vĂ”rkude kaudu. OpenShift ei ole erand ning alates 3. versioonist kasutab see selleks vaikimisi OpenShiftSDN-i. Lisaks on OpenShift 4-s lisandunud uus funktsioon nimega Multus, mis vĂ”imaldab juurdepÀÀsu mitmele vĂ”rgule ja nende ĂŒhendamisele samaaegselt pod'idega.

Multusiga saab administraator mÀÀrata tĂ€iendavaid CNI vĂ”rke, mille seejĂ€rel spetsiaalne Cluster Network Operator juurutab ja konfigureerib klastris. PĂ€rast seda ĂŒhendatakse podâid ĂŒhte vĂ”i mitmesse neist vĂ”rkudest, tavaliselt standardse OpenShiftSDN ja tĂ€iendava liidese kaudu. SR-IOV seadmeid, standardseid Linuxi sildasid, MACVLAN ja IPVLAN seadmeid â kĂ”ike seda saab kasutada, kui see on teie VM-i jaoks vajalik. Alloleval joonisel on kujutatud, kuidas seadistada Multus CNI bridge vĂ”rku liidese eth1 peal:
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 virtualiseerimise kontekstis tĂ€hendab see, et virtuaalmasinaid saab otse liita vĂ€lise vĂ”rgu kaudu, möödaminnes SDN-ist. See on oluline virtuaalmasinate jaoks, mis on viidud OpenShift'i Red Hat Virtualization'ist vĂ”i VMware vSphere'ist, kuna teise OSI taseme juurdepÀÀsu korral ei muutu vĂ”rguseaded. See tĂ€hendab ka, et virtuaalmasinal vĂ”ib olla vĂ”rguaadress, millele pÀÀsemine mööda SDN-i ei kĂ€i. Seega saame efektiivselt kasutada spetsialiseeritud vĂ”rguadaptereid vĂ”i ĂŒhendada otse vĂ”rgu kaudu andmesalvestusseâŠ
Rohkem teavet OpenShift virtualiseerimise virtuaalmasinate loomise ja vĂ”rguga ĂŒhendamise kohta leiate . Lisaks, , mis on juurutatud OpenShift virtualiseerimise koosseisus, pakub veel ĂŒht tuttavat viisi fĂŒĂŒsiliste sĂ”lmede vĂ”rgukonfiguratsioonide loomiseks ja haldamiseks, mida kasutatakse hypervisorite all.
Hoidmine
OpenShift'i virtualiseerimise raames toimuvad virtuaalmasinate kettade ĂŒhendamine ja haldamine Kubernetes'i kontseptsioonide, nagu StorageClasses, PersistentVolumeClaims (PVC) ja PersistentVolume (PV), ning Kubernetes'i keskkonnale tavapĂ€raste salvestusprotokollide abil. Seega saavad Kubernetes'i administraatorid ja rakenduste meeskonnad ĂŒhtse ja tuttava haldussĂŒsteemi nii konteinerite kui ka virtuaalmasinate jaoks. Paljude virtualiseerimisadministraatorite jaoks vĂ”ib see kontseptsioon olla tuttav, kuna see kasutab sama pĂ”himĂ”tet, et eraldada VM-i konfigureerimise failid ja kettad, nagu nĂ€iteks OpenStack'is ja paljudes teistes pilveplatvormides.
Kuid ei ole vĂ”imalik iga kord luua uut ketast VM-ile, kuna OpenShift'i hĂŒperviisori migreerimise korral peame andmeid sĂ€ilitama. Isegi kui kĂ€ivitame uue VM-i, on seda alati kiiremini teha mallist, kui nullist. Seega vajame olemasolevate ketaste importimise funktsionaalsust.
Selle ĂŒlesande lihtsustamiseks kĂ€ivitab OpenShift virtualization projekti Containerized Data Importer (CDI), mis koondab ketta piltide importimise mitmest allikast PVC-sse salvestamise.
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
Just see entry activates CDI, triggering the sequence of actions shown in the image below:

PÀrast CDI töö lÔppemist sisaldab PVC virtuaalmasina ketast, mis on valmis kasutamiseks ja viidud OpenShift'i formaati...
OpenShift virtualiseerimise puhul on kasulik ka OpenShift Container Storage (OCS), Red Hati lahendus, mis pĂ”hineb Cephi failisĂŒsteemil ning rakendab konteinerite pĂŒsihalduse funktsioone. OCS pakub lisaks standardsetele PVC-juurdepÀÀsumeetoditele â RWO (plokihaldus) ja RWX (failihaldus) â RWX-i toorbloki seadmetele, mis on vĂ€ga kasulik kĂ”rge jĂ”udluse nĂ”udvate rakenduste ĂŒhiseks plokihaldamiseks. Lisaks toetab OCS uut objektihaarde rĂŒhma nĂ”udmise standardit (Object Bucket Claim), mis vĂ”imaldab rakendustel otse objektiandmete salvestust kasutada.
Konteinerites asuvad virtuaalsed masinad
Kui teid huvitab, kuidas see töötab, siis teadke, et OpenShift virtualiseerimine on juba saadaval Tech Preview versioonis OpenShift 3.11 ja uuemates. Aktiivse OpenShift'i tellimuse omanikud saavad kasutada OpenShift virtualiseerimist tÀiesti tasuta ja ilma igasuguste lisategevusteta. KÀesoleva postituse avaldamise hetkeks on aktuaalsed OpenShift 4.4 ja OpenShift virtualiseerimine 2.3, ning kui kasutate varasemaid versioone, siis on soovitatav uuendada, et saada uusimad funktsioonid. TÀielikult toetatav versioon OpenShift virtualiseerimisest peaks vÀlja tulema 2020. aasta teises pooles.
Lisainformatsiooni saamiseks vĂ”tke ĂŒhendust paigaldamise juhiste osas, sealhulgas , kus on teave vĂ€liste vĂ”rkude seadistamise kohta.
Allikas: habr.com
