OpenShift virtualizácia (upstream projekt – Kubernetes: KubeVirt, pozri) a ), v mladosti Container-native Virtualization, bola predstavená ako funkcia platformy OpenShift, ktorá je určená na nasadzovanie a správu virtuálnych strojov (VM) ako základných entít Kubernetes. Takáto úloha je technicky zložitá kvôli fundamentálnym rozdielom v technológiach. Na dosiahnutie tohto cieľa boli využité všetkým známe technológie založené na Red Hat Enterprise Linux a KVM, ktoré sú s nami už niekoľko rokov a preukázali svoju efektívnosť.

V tomto článku sa pozrieme na technické aspekty OpenShift virtualizácie, ktoré umožňujú koexistenciu VM a kontajnerov na jednej platforme, ktorá ich spravuje ako celok.
Výpočtové úlohy
Kontajnery využívajú mechanizmy Linuxového jadra, ako sú namespaces a cgroups, na izoláciu procesov a správu zdrojov. Zvyčajne sa pod pojmom procesy rozumejú aplikácie ako Python, Java alebo vykonateľné súbory, ale v skutočnosti to môžu byť akékoľvek procesy, napríklad bash, Emacs alebo vim.
A čo je virtuálny stroj? Z pohľadu hypervízora – to je tiež proces. Ale nie proces aplikácie, ale KVM-proces, zodpovedný za vykonávanie konkrétneho VM.

Kontajnerový obraz obsahuje všetky nástroje, knižnice a súbory potrebné pre virtuálny stroj KVM. Ak by sme preskúmali pod bežiaceho VM, uvidíme tam pomocníkov a procesy qemu-kvm. Okrem toho máme prístup k KVM-nástrojom na správu virtuálnych strojov, ako sú qemu-img, qemu-nbd a virsh.

Keďže virtuálny stroj je pod, automaticky zdedí všetku funkcionalitu podu v Kubernetes. K VM-podom sa rovnako ako k bežným podom aplikujú schémy a kritériá plánovača, ako sú tainty, tolerancie, affinity a anti-affinity. Taktiež získavate výhody vo forme vysokej dostupnosti atď. Existuje však jeden dôležitý rozdiel: bežné pody sa nepresúvajú z hostiteľa na hostiteľa v bežnom zmysle. Ak sa uzol odpojí, pod na ňom sa preruší a pridelí sa inému uzlu v klastri. A v prípade virtuálneho stroja očakávame, že uvidíme živú migráciu.
Na odstránenie tejto medzery bol vytvorený custom resource definition (CDR), ktorý popisuje mechanizmus živej migrácie, zodpovedný za inicializáciu, monitorovanie a správu živých migrácií VM medzi pracovnými uzlami.
apiVersion: kubevirt.io/v1alpha3
kind: VirtualMachineInstanceMigration
metadata:
name: migration-job
spec:
vmiName: fedora
Keď je uzol deaktivovaný, pre tie virtuálne stroje, pre ktoré je ako stratégia evakuácie nastavená Live Migration, automaticky sa vytvárajú migračné úlohy. Týmto spôsobom je možné kontrolovať správanie virtuálnych strojov pri presune medzi uzlami klastra. Môžete nastaviť Live Migration aj spravovať VM ako všetky ostatné pody.
Sieť
Akýkoľvek systém Kubernetes zabezpečuje komunikáciu medzi uzlami a pod’ami pomocou softvérových SDN sietí. OpenShift nie je výnimkou a od 3. verzie zadarmo používa OpenShiftSDN. Okrem toho, v OpenShift 4 sa objavila ďalšia nová funkcia nazvaná Multus, ktorá umožňuje sprístupniť viaceré siete a súčasne pripojiť k nim pod.

Pomocou Multus môže administrátor nastaviť ďalšie siete CNI, ktoré sa následne nasadia a nakonfigurujú v klastri špeciálnym operátorom Cluster Network Operator. Následne sa pod’ pripoja k jednej alebo viacerým z týchto sietí, zvyčajne k štandardnému OpenShiftSDN a ďalšiemu rozhraniu. Zariadenia SR-IOV, štandardné Linux Bridge, zariadenia MACVLAN a IPVLAN – to všetko je tiež možné použiť, ak je to potrebné pre vašu VM. Na obrázku nižšie je zobrazené, ako nastaviť Multus CNI pre bridge sieť na rozhraní 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
Vo vzťahu k OpenShift virtualizácii to znamená, že VM môžu byť pripojené priamo k vonkajšej sieti, obchádzajúc SDN. To je dôležité pre virtuálne stroje, ktoré boli presunuté do OpenShift z Red Hat Virtualization alebo VMware vSphere, pretože pri prístupe na druhej úrovni OSI nedôjde k zmene sieťových nastavení. To tiež znamená, že VM môže mať sieťovú adresu, ktorej prístup obchádza SDN. Týmto spôsobom môžeme efektívne využiť špecializované sieťové adaptéry alebo sa pripojiť k SÚD priamo...
Podrobnejšie informácie o tom, ako vytvárať a pripojiť virtuálne stroje OpenShift virtualizácie k sieti, môžete získať . Okrem toho, , nasadený ako súčasť OpenShift virtualizácie, ponúka ďalší známy spôsob vytvárania a správy sieťových konfigurácií na fyzických uzloch, ktoré sa používajú pod hypervizormi.
Ukladanie
Pripojenie a správa diskov virtuálnych strojov v rámci OpenShift virtualizácie sa vykonáva pomocou konceptov Kubernetes, ako sú StorageClasses, PersistentVolumeClaims (PVC) a PersistentVolume (PV), ako aj štandardných protokolov úložiska v prostredí Kubernetes. Týmto spôsobom získavajú administrátori Kubernetes a zodpovedné tímy pre aplikácie jednotný a známy mechanizmus správy pre kontejnery aj virtuálne stroje. Pre mnohých administrátorov virtuálnych prostredí môže byť tento koncept známy, pretože použitie rovnakého princípu rozdelenia konfiguračných súborov VM a diskov sa aplikuje aj v OpenStack a na mnohých iných cloudových platformách.
Avšak nemožno zakaždým vytvárať nový disk pre VM, pretože pri migrácii z hypervízora do OpenShift musíme zachovať dáta. Dokonca aj pri nasadzovaní novej VM je vždy rýchlejšie to urobiť z šablóny ako vytvoriť od nuly. Takže potrebujeme funkciu importu existujúcich diskov.
Na zjednodušenie tohto úlohy OpenShift virtualization zavádza projekt Containerized Data Importer (CDI), ktorý zjednodušuje import diskových obrazov z viacerých zdrojov na vytvorenie záznamu v 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
Práve tento záznam aktivuje CDI, spúšťajúc sekvenciu činností, zobrazenú na obrázku nižšie:

Akonáhle CDI dokončí svoju prácu, PVC bude obsahovať disk virtuálneho stroja pripravený na použitie a prevedený do štandardného formátu pre OpenShift...
Pri práci s OpenShift virtualization sa tiež hodí OpenShift Container Storage (OCS), riešenie Red Hat založené na súborovom systéme Ceph, ktoré implementuje funkčnosť trvalého úložiska pre kontajnery. Okrem štandardných prístupových metód PVC – RWO (blokový) a RWX (súborový) – OCS poskytuje RWX pre zariadenia raw block, čo je veľmi užitočné pri organizovaní zdieľaného blokového prístupu pre aplikácie s vysokými požiadavkami na výkon. Okrem toho OCS podporuje nový štandard požiadavky skupiny objektov Object Bucket Claim, ktorý umožňuje aplikáciám priamo využívať objektové úložisko dát.
Virtuálne stroje v kontajnerech
Ak máte záujem zistiť, ako to funguje, vedzte, že OpenShift virtualization je už dostupná v technickom prehľade ako súčasť OpenShift 3.11 a vyššie. Majitelia aktívneho predplatného na OpenShift môžu využiť OpenShift virtualization úplne zadarmo a bez akýchkoľvek ďalších úkonov. K dátumu publikovania tohto príspevku sú aktuálne OpenShift 4.4 a OpenShift virtualization 2.3. Ak používate predchádzajúce verzie, pre získanie najnovších funkcií by ste sa mali aktualizovať. Plne podporovaná verzia OpenShift virtualization by mala vyjsť v druhej polovici roku 2020.
Pre ďalšie informácie sa obráťte na pre inštrukcie na inštaláciu, vrátane , kde sú uvedené informácie o nastavení externých sietí.
Zdroj: habr.com
