Virtualizácia OpenShift: kontajnery, KVM a virtuálne stroje

Virtualizácia OpenShift (upstream projekt - Kubernetes: KubeVirt, viď. tu и tu), nee Container-native Virtualization, bola predstavená ako funkcionalita platformy OpenShift, ktorá je určená na nasadenie a správu virtuálnych strojov (VM) ako základných entít Kubernetes. Tento druh úlohy je technicky náročný kvôli zásadným rozdielom v technológii. Na dosiahnutie tohto cieľa sme použili známe technológie založené na Red Hat Enterprise Linux a KVM, ktoré sú s nami už mnoho rokov a preukázali svoju účinnosť.

Virtualizácia OpenShift: kontajnery, KVM a virtuálne stroje

V tomto článku sa pozrieme na technické aspekty virtualizácie OpenShift, ktoré umožňujú koexistenciu virtuálnych počítačov a kontajnerov v rámci jednej platformy, ktorá ich spravuje ako jeden celok.

Výpočtové úlohy

Kontajnery používajú mechanizmy jadra Linuxu, ako sú menné priestory a skupiny cgroups, na izoláciu procesov a správu zdrojov. Procesmi sa zvyčajne rozumejú Python, Java aplikácie alebo spustiteľné súbory, ale v skutočnosti to môžu byť akékoľvek procesy, ako bash, Emacs alebo vim.

Čo je virtuálny stroj? Z pohľadu hypervízora je to tiež proces. Nie však proces aplikácie, ale proces KVM zodpovedný za spustenie konkrétneho VM.

Virtualizácia OpenShift: kontajnery, KVM a virtuálne stroje

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

Virtualizácia OpenShift: kontajnery, KVM a virtuálne stroje

Keďže virtuálny počítač je modul, automaticky zdedí všetky funkcie modulu v Kubernetes. VM moduly, rovnako ako bežné moduly, podliehajú plánovacím schémam a kritériám, ako sú kontaminácie, tolerancie, afinita a anti-afinita. Získate tiež výhody vysokej dostupnosti atď. Je tu však jeden dôležitý rozdiel: bežné struky nemigrujú z hostiteľa na hostiteľa v obvyklom zmysle. Ak uzol prejde do režimu offline, modul na ňom sa ukončí a znova sa pridelí inému uzlu v klastri. A v prípade virtuálneho počítača očakávame živú migráciu.

Na vyriešenie tejto medzery bola vytvorená definícia vlastného zdroja (CDR), ktorá popisuje mechanizmus živej migrácie, ktorý je zodpovedný za inicializáciu, monitorovanie a správu živých migrácií virtuálnych počítačov medzi pracovnými uzlami.

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

Keď je uzol deaktivovaný, automaticky sa vytvoria úlohy migrácie pre tie virtuálne počítače, ktoré majú nastavenú migráciu v reálnom čase ako stratégiu vysťahovania. Týmto spôsobom môžete ovládať správanie virtuálnych počítačov pri pohybe medzi uzlami klastra. Môžete nakonfigurovať Live Migration a spravovať VM, ako všetky ostatné moduly.

Sieť

Akýkoľvek systém Kubernetes poskytuje komunikáciu medzi uzlami a modulmi pomocou softvérových sietí SDN. OpenShift nie je výnimkou a od verzie 3 na to štandardne používa OpenShiftSDN. Okrem toho má OpenShift 4 ďalšiu novú funkciu s názvom Multus, ktorá vám umožňuje sprístupniť viacero sietí a pripojiť k nim moduly súčasne.

Virtualizácia OpenShift: kontajnery, KVM a virtuálne stroje

Pomocou Multus môže správca definovať ďalšie siete CNI, ktoré potom nasadí a nakonfiguruje v klastri špeciálny operátor klastrovej siete. Moduly sú potom pripojené 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, MACVLAN a IPVLAN zariadenia môžu byť použité, ak to váš VM potrebuje. Obrázok nižšie ukazuje, ako nastaviť Multus CNI pre mostovú 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 virtualizácii OpenShift to znamená, že virtuálny počítač môže byť pripojený k externej sieti priamo, čím sa obíde SDN. To je dôležité pre virtuálne stroje migrované na OpenShift z Red Hat Virtualization alebo VMware vSphere, pretože ak máte prístup k druhej vrstve OSI, nedôjde k žiadnym zmenám v nastaveniach siete. To tiež znamená, že VM môže mať sieťovú adresu, ktorá obchádza SDN. Môžeme tak efektívne využívať špecializované sieťové adaptéry, alebo sa pripojiť priamo k úložnému systému cez sieť...

Môžete sa dozvedieť viac o tom, ako vytvoriť a pripojiť virtualizačné virtuálne stroje OpenShift k sieti tu... Okrem toho, operátor nmstate, nasadený ako súčasť virtualizácie OpenShift, ponúka ďalší známy spôsob vytvárania a správy konfigurácií siete na fyzických uzloch, ktoré sa používajú pod hypervízormi.

Skladovanie

Pripojenie a správa diskov virtuálnych strojov v rámci virtualizácie OpenShift sa vykonáva pomocou konceptov Kubernetes, ako sú StorageClasses, PersistentVolumeClaims (PVC) a PersistentVolume (PV), ako aj štandardných protokolov ukladania pre prostredie Kubernetes. To dáva správcom a aplikačným tímom Kubernetes bežný, známy spôsob správy kontajnerov aj virtuálnych počítačov. A pre mnohých správcov virtualizačných prostredí môže znieť tento koncept povedome, pretože využíva rovnaký princíp oddeľovania konfiguračných súborov VM a diskov, aký sa používa v OpenStack a mnohých iných cloudových platformách.

Nemôžeme však vždy jednoducho vytvoriť nový disk pre VM, pretože pri migrácii z hypervízora na OpenShift musíme uložiť dáta. Áno, aj keď nasadíme nový VM, je vždy rýchlejšie to urobiť zo šablóny, ako ju vytvoriť od začiatku. Preto potrebujeme funkcionalitu na import existujúcich diskov.

Na zjednodušenie tejto úlohy virtualizácia OpenShift nasadzuje projekt Containerized Data Importer (CDI), ktorý obmedzuje importovanie diskových obrazov diskov z viacerých zdrojov na vytváranie záznamu 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

Je to táto položka, ktorá aktivuje CDI a spúšťa postupnosť akcií zobrazených na obrázku nižšie:

Virtualizácia OpenShift: kontajnery, KVM a virtuálne stroje

Po dokončení CDI bude PVC obsahovať disk virtuálneho stroja pripravený na použitie a skonvertovaný do štandardného formátu OpenShift...
Pri práci s virtualizáciou OpenShift je užitočné aj OpenShift Container Storage (OCS), riešenie Red Hat založené na súborovom systéme Ceph, ktoré implementuje funkciu trvalého úložiska pre kontajnery. Okrem štandardných metód prístupu z PVC - RWO (blok) a RWX (súbor) - OCS poskytuje RWX pre zariadenia so surovým blokom, čo je veľmi užitočné na zdieľanie blokového prístupu pre aplikácie s vysokými požiadavkami na výkon. Okrem toho OCS podporuje nový štandard Object Bucket Claim, ktorý umožňuje aplikáciám priamo využívať ukladanie údajov o objektoch.

Virtuálne stroje v kontajneroch

Ak máte záujem skontrolovať, ako to funguje, tak vedzte, že virtualizácia OpenShift je už dostupná vo verzii Tech Preview ako súčasť OpenShift 3.11 a vyššej. Majitelia existujúceho predplatného OpenShift môžu využívať virtualizáciu OpenShift úplne zadarmo a bez akýchkoľvek ďalších krokov. V čase tohto príspevku sú aktuálne OpenShift 4.4 a OpenShift virtualizácia 2.3; ak používate predchádzajúce verzie, mali by ste inovovať, aby ste získali najnovšie funkcie. Plne podporovaná verzia virtualizácie OpenShift by mala byť vydaná v druhej polovici roku 2020.

Viac informácií nájdete na Dokumentácia OpenShift návod na inštaláciu vrátane Sekcia nastavenia Multius, ktorý poskytuje informácie o nastavení externých sietí.

Zdroj: hab.com

Pridať komentár