Virtualizacija OpenShift: vsebniki, KVM in virtualni stroji

Virtualizacija OpenShift (projekt navzgor - Kubernetes: KubeVirt, glejte. tukaj и tukaj), nee Container-native Virtualization, je bil uveden kot funkcionalnost platforme OpenShift, ki je zasnovana za uvajanje in upravljanje virtualnih strojev (VM) kot osnovnih entitet Kubernetes. Tovrstna naloga je tehnično zahtevna zaradi temeljnih razlik v tehnologiji. Za dosego tega cilja smo uporabili znane tehnologije na osnovi Red Hat Enterprise Linux in KVM, ki so z nami že vrsto let in so dokazale svojo učinkovitost.

Virtualizacija OpenShift: vsebniki, KVM in virtualni stroji

V tem članku si bomo ogledali tehnične vidike virtualizacije OpenShift, ki omogočajo sobivanje virtualnih strojev in vsebnikov znotraj ene platforme, ki jih upravlja kot eno samo entiteto.

Računske naloge

Vsebniki uporabljajo mehanizme jedra Linuxa, kot so imenski prostori in skupine c, za izolacijo procesov in upravljanje virov. Običajno procese razumemo kot Python, Java aplikacije ali izvedljive datoteke, v resnici pa so lahko kateri koli procesi, kot so bash, Emacs ali vim.

Kaj je virtualni stroj? Z vidika hipervizorja je tudi to proces. Vendar ne proces aplikacije, ampak proces KVM, ki je odgovoren za izvajanje določenega VM.

Virtualizacija OpenShift: vsebniki, KVM in virtualni stroji

Slika vsebnika vsebuje vsa orodja, knjižnice in datoteke, potrebne za virtualni stroj KVM. Če pregledamo pod delujočega VM, bomo tam videli pomočnike in procese qemu-kvm. Poleg tega imamo dostop do orodij KVM za upravljanje virtualnih strojev, kot so qemu-img, qemu-nbd in virsh.

Virtualizacija OpenShift: vsebniki, KVM in virtualni stroji

Ker je virtualni stroj pod, samodejno podeduje vse funkcije poda v Kubernetesu. Podi VM, tako kot običajni podi, so predmet shem razporejevalnika in meril, kot so madeži, tolerance, afiniteta in anti-afiniteta. Dobite tudi prednosti visoke razpoložljivosti itd. Vendar pa obstaja ena pomembna razlika: navadni stroki se ne selijo od gostitelja do gostitelja v običajnem smislu. Če vozlišče prekine povezavo, se pod na njem prekine in znova dodeli drugemu vozlišču v gruči. In v primeru virtualnega stroja pričakujemo migracijo v živo.

Za odpravo te vrzeli je bila ustvarjena definicija virov po meri (CDR), ki opisuje mehanizem migracije v živo, ki je odgovoren za inicializacijo, spremljanje in upravljanje migracij v živo navideznih računalnikov med delovnimi vozlišči.

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

Ko je vozlišče deaktivirano, se naloge selitve samodejno ustvarijo za tiste virtualne stroje, ki imajo Live Migration nastavljeno kot svojo strategijo izselitve. Na ta način lahko nadzirate obnašanje virtualnih strojev pri premikanju med vozlišči gruče. Konfigurirate lahko selitev v živo in upravljate navidezni računalnik, tako kot vse druge sklope.

Сеть

Vsak sistem Kubernetes zagotavlja komunikacijo med vozlišči in podi z uporabo programskih omrežij SDN. OpenShift ni izjema in od različice 3 za to privzeto uporablja OpenShiftSDN. Poleg tega ima OpenShift 4 še eno novo funkcijo, imenovano Multus, ki vam omogoča, da naredite na voljo več omrežij in nanje hkrati povežete enote.

Virtualizacija OpenShift: vsebniki, KVM in virtualni stroji

Z uporabo Multusa lahko skrbnik določi dodatna omrežja CNI, ki jih bo nato namestil in konfiguriral v gruči poseben operater omrežja gruče. Stroki so nato povezani z enim ali več teh omrežij, običajno s standardnim OpenShiftSDN in dodatnim vmesnikom. Naprave SR-IOV, standardni Linux Bridge, naprave MACVLAN in IPVLAN lahko uporabite, če vaš VM to potrebuje. Spodnja slika prikazuje, kako nastaviti Multus CNI za premostitveno omrežje na vmesniku 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

V zvezi z virtualizacijo OpenShift to pomeni, da je VM mogoče neposredno povezati z zunanjim omrežjem, mimo SDN. To je pomembno za virtualne stroje, preseljene na OpenShift iz Red Hat Virtualization ali VMware vSphere, saj če imate dostop do druge plasti OSI, ne bo sprememb v omrežnih nastavitvah. To tudi pomeni, da ima VM morda omrežni naslov, ki obide SDN. Tako lahko učinkovito uporabljamo specializirane omrežne adapterje, ali pa se preko omrežja povežemo neposredno s sistemom za shranjevanje...

Izvedete lahko več o tem, kako ustvariti in povezati virtualizacijske virtualne stroje OpenShift v omrežje tukaj... Poleg tega operater nmstate, uveden kot del virtualizacije OpenShift, ponuja še en znan način za ustvarjanje in upravljanje omrežnih konfiguracij na fizičnih vozliščih, ki se uporabljajo pod hipervizorji.

Skladiščenje

Povezovanje in upravljanje diskov navideznih strojev znotraj virtualizacije OpenShift se izvaja z uporabo konceptov Kubernetes, kot so StorageClasses, PersistentVolumeClaims (PVC) in PersistentVolume (PV), ter s protokoli za shranjevanje, standardnimi za okolje Kubernetes. To daje skrbnikom Kubernetes in skupinam aplikacij običajen, znan način za upravljanje vsebnikov in virtualnih strojev. Za mnoge skrbnike virtualizacijskih okolij se ta koncept morda sliši znano, ker uporablja isto načelo ločevanja konfiguracijskih datotek in diskov VM, kot se uporablja v OpenStacku in številnih drugih platformah v oblaku.

Ne moremo pa vsakič preprosto ustvariti novega diska za VM, saj moramo pri selitvi s hipervizorja na OpenShift podatke shraniti. Da, tudi ko uvedemo nov VM, je to vedno hitreje narediti iz predloge kot ustvariti iz nič. Zato potrebujemo funkcionalnost za uvoz obstoječih diskov.

Za poenostavitev te naloge virtualizacija OpenShift uvede projekt Containerized Data Importer (CDI), ki zmanjša uvoz slik diskov iz več virov na ustvarjanje vnosa PVC.

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

Ta vnos aktivira CDI in sproži zaporedje dejanj, prikazanih na spodnji sliki:

Virtualizacija OpenShift: vsebniki, KVM in virtualni stroji

Ko je CDI končan, bo PVC vseboval disk virtualnega stroja, pripravljen za uporabo in pretvorjen v standardni format OpenShift ...
Pri delu z virtualizacijo OpenShift je uporabna tudi OpenShift Container Storage (OCS), rešitev Red Hat, ki temelji na datotečnem sistemu Ceph in izvaja funkcijo obstojnega shranjevanja za vsebnike. Poleg standardnih metod dostopa PVC - RWO (blok) in RWX (datoteka) - OCS zagotavlja RWX za neobdelane blokovne naprave, kar je zelo uporabno za skupno rabo blokovnega dostopa za aplikacije z visokimi zahtevami glede zmogljivosti. Poleg tega OCS podpira nov standard Object Bucket Claim, ki aplikacijam omogoča neposredno uporabo shranjevanja podatkov o objektih.

Virtualni stroji v kontejnerjih

Če vas zanima, kako deluje, vedite, da je virtualizacija OpenShift že na voljo v različici Tech Preview kot del OpenShift 3.11 in novejših. Lastniki obstoječe naročnine na OpenShift lahko uporabljajo virtualizacijo OpenShift popolnoma brezplačno in brez dodatnih korakov. V času te objave sta OpenShift 4.4 in OpenShift virtualizacija 2.3 aktualni; če uporabljate prejšnje različice, morate nadgraditi, da dobite najnovejše funkcije. Popolnoma podprta različica virtualizacije OpenShift bi morala biti izdana v drugi polovici leta 2020.

Za več informacij glejte Dokumentacija OpenShift za navodila za namestitev, vključno z Razdelek za več nastavitev, ki nudi informacije o nastavitvi zunanjih omrežij.

Vir: www.habr.com

Dodaj komentar