Virtualizace OpenShift: kontejnery, KVM a virtuální stroje

Virtualizace OpenShift (upstream projekt - Kubernetes: KubeVirt, viz. zde и zde), dříve Container-native Virtualization, byla představena jako funkce platformy OpenShift určená k nasazení a správě virtuálních strojů (VM) jakožto klíčových entit Kubernetes. Tento typ úkolu je technicky náročný kvůli zásadním rozdílům v technologii. K dosažení tohoto cíle byly použity známé technologie založené na Red Hat Enterprise. Linux a KVM, které jsou s námi již mnoho let a prokázaly svou účinnost.

Virtualizace OpenShift: kontejnery, KVM a virtuální stroje

V tomto článku se podíváme na technické aspekty virtualizace OpenShift, které umožňují virtuálním počítačům a kontejnerům koexistovat v rámci jediné platformy, která je spravuje jako jeden celek.

Výpočtové úlohy

Kontejnery používají mechanismy Linux- základní funkce, jako jsou jmenné prostory a kontrolní skupiny, pro izolaci procesů a správu zdrojů. Procesy jsou obvykle považovány za aplikace nebo spustitelné soubory v Pythonu nebo Javě, ale ve skutečnosti se může jednat o jakýkoli proces, například bash, Emacs nebo vim.

Co je virtuální stroj? Z pohledu hypervizoru jde také o proces. Ale ne proces aplikace, ale proces KVM zodpovědný za spuštění konkrétního virtuálního počítače.

Virtualizace OpenShift: kontejnery, KVM a virtuální stroje

Obraz kontejneru obsahuje všechny nástroje, knihovny a soubory potřebné pro virtuální stroj KVM. Pokud prohlédneme pod běžícího VM, uvidíme tam pomocníky a procesy qemu-kvm. Navíc máme přístup k nástrojům KVM pro správu virtuálních strojů, jako jsou qemu-img, qemu-nbd a virsh.

Virtualizace OpenShift: kontejnery, KVM a virtuální stroje

Protože virtuální počítač je pod, automaticky zdědí všechny funkce pod v Kubernetes. Moduly virtuálních počítačů, stejně jako běžné moduly, podléhají plánovacím schématům a kritériím, jako jsou znečištění, tolerance, afinita a antiafinita. Získáte také výhody vysoké dostupnosti atd. Je tu však jeden důležitý rozdíl: běžné lusky nemigrují z hostitele na hostitele v obvyklém smyslu. Pokud uzel přejde do režimu offline, modul na něm se ukončí a znovu přiřadí jinému uzlu v clusteru. A v případě virtuálního stroje očekáváme živou migraci.

K vyřešení této mezery byla vytvořena vlastní definice prostředků (CDR), která popisuje mechanismus živé migrace, který je zodpovědný za inicializaci, monitorování a správu živých migrací virtuálních počítačů mezi pracovními uzly.

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

Když je uzel deaktivován, automaticky se vytvoří úlohy migrace pro ty virtuální počítače, které mají jako strategii vyřazení nastavenou migraci za provozu. Tímto způsobem můžete ovládat chování virtuálních strojů při pohybu mezi uzly clusteru. Můžete nakonfigurovat migraci za provozu a spravovat virtuální počítač, stejně jako všechny ostatní moduly.

Síť

Jakýkoli systém Kubernetes poskytuje komunikaci mezi uzly a pody pomocí softwarových sítí SDN. OpenShift není výjimkou a od verze 3 k tomu standardně používá OpenShiftSDN. OpenShift 4 má navíc další novou funkci nazvanou Multus, která umožňuje zpřístupnit více sítí a připojit k nim moduly současně.

Virtualizace OpenShift: kontejnery, KVM a virtuální stroje

Pomocí Multusu může administrátor definovat další sítě CNI, které jsou poté nasazeny a konfigurovány v clusteru pomocí vyhrazeného operátora sítě clusteru. Pody jsou poté připojeny k jedné nebo více z těchto sítí, obvykle ke standardní síti OpenShiftSDN a dalšímu rozhraní. Zařízení SR-IOV, standardní Linux Zařízení Bridge, MACVLAN a IPVLAN lze v případě potřeby použít pro váš virtuální počítač. Obrázek níže ukazuje, jak nakonfigurovat Multus CNI pro síť bridge 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

Ve vztahu k virtualizaci OpenShift to znamená, že virtuální počítač lze připojit k externí síti přímo a obejít SDN. To je důležité pro virtuální stroje migrované na OpenShift z Red Hat Virtualization nebo VMware vSphere, protože pokud máte přístup k druhé vrstvě OSI, nedojde k žádné změně v nastavení sítě. To také znamená, že virtuální počítač může mít síťovou adresu, která obchází SDN. Můžeme tak efektivně využít specializované síťové adaptéry, nebo se připojit přímo k úložnému systému přes síť...

Můžete se dozvědět více o tom, jak vytvořit a připojit virtualizační virtuální stroje OpenShift k síti zde. Kromě toho, operátor nmstate, nasazený jako součást virtualizace OpenShift, nabízí další známý způsob vytváření a správy síťových konfigurací na fyzických uzlech, které se používají pod hypervizory.

Opatrování

Připojování a správa disků virtuálních strojů v rámci virtualizace OpenShift se provádí pomocí konceptů Kubernetes, jako jsou StorageClasses, PersistentVolumeClaims (PVC) a PersistentVolume (PV), a také pomocí standardů úložných protokolů pro prostředí Kubernetes. To dává správcům a aplikačním týmům Kubernetes běžný, známý způsob správy kontejnerů i virtuálních počítačů. A pro mnoho administrátorů virtualizačních prostředí může znít tento koncept povědomě, protože využívá stejný princip oddělení konfiguračních souborů virtuálních počítačů a disků, jaký se používá v OpenStacku a mnoha dalších cloudových platformách.

Nemůžeme však pokaždé jednoduše vytvořit nový disk pro VM, protože při migraci z hypervisoru na OpenShift musíme uložit data. Ano, i když nasadíme nový virtuální počítač, je vždy rychlejší to udělat ze šablony, než ji vytvořit od začátku. Potřebujeme tedy funkcionalitu pro import stávajících disků.

Pro zjednodušení tohoto úkolu virtualizace OpenShift nasazuje projekt Containerized Data Importer (CDI), který omezuje import diskových obrazů disků z více zdrojů na vytváření 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 tato položka, která aktivuje CDI a spouští sekvenci akcí zobrazenou na obrázku níže:

Virtualizace OpenShift: kontejnery, KVM a virtuální stroje

Po dokončení CDI bude PVC obsahovat disk virtuálního stroje připravený k použití a převedený do standardního formátu OpenShift...
Při práci s virtualizací OpenShift je také užitečné OpenShift Container Storage (OCS), řešení Red Hat založené na souborovém systému Ceph, které implementuje funkci trvalého úložiště pro kontejnery. Kromě standardních metod přístupu z PVC - RWO (blok) a RWX (soubor) - OCS poskytuje RWX pro zařízení s nezpracovanými bloky, což je velmi užitečné pro sdílení blokového přístupu pro aplikace s vysokými požadavky na výkon. OCS navíc podporuje nový standard Object Bucket Claim, který aplikacím umožňuje přímo využívat úložiště objektových dat.

Virtuální stroje v kontejnerech

Pokud vás zajímá, jak to funguje, pak vězte, že virtualizace OpenShift je již dostupná ve verzi Tech Preview jako součást OpenShift 3.11 a vyšší. Majitelé stávajícího předplatného OpenShift mohou virtualizaci OpenShift používat zcela zdarma a bez dalších kroků. V době tohoto příspěvku jsou aktuální OpenShift 4.4 a OpenShift virtualizace 2.3; pokud používáte předchozí verze, měli byste upgradovat, abyste získali nejnovější funkce. Plně podporovaná verze virtualizace OpenShift by měla být vydána v druhé polovině roku 2020.

Více informací naleznete na Dokumentace OpenShift návod k instalaci, včetně Sekce nastavení Multius, který poskytuje informace o nastavení externích sítí.

Zdroj: www.habr.com

Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster