OpenShift virtuaalitute (ylĂ€virta projekti â Kubernetes: KubeVirt, ks. ja ), aiemmin tunnettu nimellĂ€ Container-native Virtualization, esiteltiin toiminto, joka on suunniteltu OpenShift-alustalle virtuaalikoneiden (VM) kĂ€yttöönottoon ja hallintaan perus Kubernetessa. TĂ€mĂ€ntyyppinen tehtĂ€vĂ€ on teknisesti haastava johtuen teknologioiden perustavanlaatuisista eroista. Tavoitteeseen pÀÀsemiseksi kĂ€ytettiin kaikille tuttuja teknologioita Red Hat Enterprise Linuxin ja KVM:n pohjalta, jotka ovat olleet kanssamme jo vuosia ja todistaneet tehokkuutensa.

TÀssÀ artikkelissa tarkastelemme OpenShift-virtuaalitesteihin liittyviÀ teknisiÀ nÀkökohtia, jotka mahdollistavat VM:ien ja konttien yhteiselon yhdellÀ alustalla, joka hallitsee niitÀ yhtenÀ kokonaisuutena.
LaskentatehtÀvÀt
Konteissa kÀytetÀÀn Linux-ytimen mekanismeja, kuten nimiavaruuksia ja cgroups, prosessien eristÀmiseen ja resurssien hallintaan. YleensÀ prosessina ymmÀrretÀÀn Python-, Java- tai suoritettavat tiedostot, mutta todellisuudessa ne voivat olla mitÀ tahansa prosesseja, kuten bash, Emacs tai vim.
EntĂ€ mitĂ€ virtuaalikone on? Hypervisorin nĂ€kökulmasta â se on myös prosessi. Mutta ei sovellusprosessi, vaan KVM-prosessi, joka vastaa erityisen VM:n suorittamisesta.

Konteinerikuva sisÀltÀÀ kaikki työkalut, kirjastot ja tiedostot, jotka tarvitaan KVM-virtuaalikoneelle. Jos tarkastamme toimivan VM:n podia, nÀemme siellÀ apuohjelmia ja qemu-kvm-prosesseja. MeillÀ on myös pÀÀsy KVM-työkaluihin virtuaalikoneiden hallintaan, kuten qemu-img, qemu-nbd ja virsh.

Koska virtuaalikone on pod, se automaattisesti perii koko podin toiminnallisuuden Kubernetessa. VM-podeihin sovelletaan samoja suunnittelu- ja kriteerikaavioita kuin tavallisiin podeihin, kuten taintit, toleraatiot, affiniteetti ja anti-affiniteetti. Saat myös etuja, kuten korkean saatavuuden jne. On kuitenkin yksi tÀrkeÀ ero: tavalliset podit eivÀt migroi isÀnnÀltÀ toiselle meille tutulla tavalla. Jos solmu sammuu, pod siinÀ katkesi ja siirretÀÀn toiselle solmulle klusterissa. Mutta virtuaalikoneen osalta odotamme nÀkevÀmme elÀvÀn migraation.
TÀmÀn aukon poistamiseksi luotiin mukautettu resurssimÀÀritelmÀ (CDR), joka kuvaa elÀvÀn migraation mekanismia, joka vastaa VM:ien elÀvien migraatioiden aloituksesta, seurannasta ja hallinnasta työntekijÀsolmujen vÀlillÀ.
apiVersion: kubevirt.io/v1alpha3
kind: VirtualMachineInstanceMigration
metadata:
name: migration-job
spec:
vmiName: fedora
KlĂ”psamisel sĂ”lme deaktiveerimise korral, nende virtuaalsete masinate jaoks, mille vĂ€ljaviimise strateegia on mÀÀratud Live Migration, luuakse automaatselt migreerimisĂŒlesanded. See vĂ”imaldab teil kontrollida virtuaalsete masinate kĂ€itumist, kui neid liigutatakse klastris sĂ”lmede vahel. Saate seadistada Live Migrationi ja hallata VM-e, nagu kĂ”iki teisi pod'e.
VÔrk
Iga Kubernetes-sĂŒsteem tagab sĂ”lmede ja pod'ide vahelise ĂŒhenduse tarkvara SDN-vĂ”rkude kaudu. OpenShift ei ole erand ning alates 3. versioonist kasutatakse seda vaikimisi OpenShiftSDN-i. Lisaks on OpenShift 4-s lisandunud uus funktsioon nimega Multus, mis vĂ”imaldab mitut vĂ”rku korraga kergesti kĂ€tte saada ja pod'e neile ĂŒhendada.

Multus'e abil saab administraator mÀÀrata tĂ€iendavad CNI-vĂ”rgud, mis seejĂ€rel paigaldatakse ja seadistatakse klastris erilise Cluster Network Operator'i abil. PĂ€rast seda ĂŒhendatakse pod'id ĂŒhte vĂ”i mitmesse neist vĂ”rkudest, tavaliselt tavapĂ€rase OpenShiftSDN-i ja tĂ€iendava liidese kaudu. SR-IOV seadmed, tavalised Linux Bridge'id, MACVLAN ja IPVLAN seadmed â kĂ”ik neid saab samuti kasutada, kui see on teie VM-ile vajalik. Alloleval joonisel on nĂ€idatud, kuidas seadistada Multus CNI bridge-vĂ”rku liideses eth1:
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 VM-ide saab otse vĂ€lise vĂ”rgu ĂŒhendada, mööda minnes SDN-ist. See on oluline virtuaalmasinate jaoks, mis on OpenShift'i viidud Red Hat Virtualization'ist vĂ”i VMware vSphere'ist, kuna juurdepÀÀsu olemasolu korral teisel OSI tasandil ei toimu vĂ”rguseadete muutusi. See tĂ€hendab ka, et VM-il vĂ”ib olla vĂ”rgu aadress, millele pöördumised mööda SDN-i. Nii saame tĂ”husalt kasutada spetsialiseeritud vĂ”rkarteid vĂ”i ĂŒhendada otse SAN-iga...
Lisateabe saamiseks selle kohta, kuidas luua ja ĂŒhendada OpenShift virtualiseerimise virtuaalseid masinaid vĂ”rku, vaadake . Lisaks , mis on paigaldatud OpenShift virtualiseerimise koosseisus, pakub veel ĂŒht hĂ€sti tuttavat viisi fĂŒĂŒsiliste sĂ”lmede vĂ”rgukonfiguratsioonide loomiseks ja haldamiseks, mida kasutatakse hyperviisorite all.
Salvestamine
Virtuaalmasinate ketaste ĂŒhendamine ja haldamine OpenShift virtualiseerimise raames toimub, kasutades selliseid Kubernetes'i kontseptsioone nagu StorageClasses, PersistentVolumeClaims (PVC) ja PersistentVolume (PV), samuti Kubernetes'i keskkonna standardseid salvestusprotokolle. Seega saavad Kubernetes'i administraatorid ja rakenduste eest vastutavad meeskonnad ĂŒhtse ja tuttava haldussĂŒsteemi nii konteinerite kui ka virtuaalmasinate jaoks. Paljude virtualiseerimiskeskkondade administraatorite jaoks vĂ”ib see kontseptsioon tunduda tuttav, kuna see kasutab sama pĂ”himĂ”tet VM-i konfiguratsioonifailide ja ketaste eraldamiseks nagu OpenStack ja paljudel teistel pilveplatvormidel.
Siiski ei ole vÔimalik iga kord uut ketast loomine VM-i jaoks, kuna OpenShift'ile migreerimisel peame andmeid sÀilitama. I even when we deploy a new VM, it is always faster to do so from a template than to create one from scratch. Thus, we need the functionality to import existing disks.
Selle ĂŒlesande lihtsustamiseks kĂ€ivitab OpenShift virtualiseerimine Containerized Data Importer (CDI) projekti, mis vĂ€hendab ketaspiltide importimist erinevatest allikatest PVC-sse kirje loomisega.
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 this entry activates CDI, initiating the sequence of actions shown in the figure below:

PÀrast CDI töötlemist sisaldab PVC virtuaalmasina ketast, mis on kasutamiseks valmis ja viidud OpenShift'i standardformaati...
OpenShift virtualiseerimisega töötamisel on samuti kasulik OpenShift Container Storage (OCS), Red Hati lahendus, mis pĂ”hineb Ceph failisĂŒsteemil ja rakendab pĂŒsiva salvestuslahenduse konteineritele. Lisaks standardsetele PVC ligipÀÀsu meetoditele â RWO (plokk) ja RWX (fail) â pakub OCS RWX toore plokiseadmete jaoks, mis on vĂ€ga kasulik kĂ”rge jĂ”udlusnĂ”udega rakenduste jaoks koos blokiga juurdepÀÀsu korraldamiseks. Lisaks toetab OCS uut objektidegruppeerimise taotlemise standardit Object Bucket Claim, mis vĂ”imaldab rakendustel andmete objektide salvestust otse kasutada.
Virtuaalmasinad konteinerites
Kui teid huvitab, kuidas see töötab, siis teadke, et OpenShift virtualiseerimine on juba saadaval Tech Preview versioonina OpenShift 3.11 ja uuemates. OpenShift'i aktiivsete tellimuste omanikud saavad kasutada OpenShift virtualiseerimist tÀiesti tasuta ja ilma igasuguste lisategevusteta. Selle postituse kirjutamise hetkeks on aktuaalsed OpenShift 4.4 ja OpenShift virtualiseerimine 2.3; kui kasutate varasemaid versioone, siis tasub uuendada, et saada uusimaid funktsioone. TÀielikult toetatav versioon OpenShift virtualiseerimisest peaks vÀlja tulema 2020. aasta teises pooles.
Lisainformatsiooni saamiseks vĂ”tke ĂŒhendust paigaldusjuhiste saamiseks, sealhulgas , mis sisaldab teavet vĂ€liste vĂ”rkude seadistamise kohta.
Allikas: habr.com
