OpenShift virtualisering: containrar, KVM och virtuella maskiner

OpenShift virtualisering (uppströmsprojekt – Kubernetes: KubeVirt, se. hĂ€r och hĂ€r), tidigare kallad Container-native Virtualization, presenterades som en funktionalitet inom OpenShift-plattformen, avsedd för att distribuera och hantera virtuella maskiner (VM) som grundlĂ€ggande enheter i Kubernetes. Denna typ av uppgift Ă€r tekniskt komplex pĂ„ grund av de fundamentala skillnaderna mellan teknologierna. För att uppnĂ„ det angivna mĂ„let har de vĂ€lkĂ€nda teknologierna baserade pĂ„ Red Hat Enterprise Linux och KVM anvĂ€nts, vilka har varit med oss under mĂ„nga Ă„r och visat sin effektivitet.

OpenShift virtualisering: containrar, KVM och virtuella maskiner

I denna artikel kommer vi att undersöka de tekniska aspekterna av OpenShift virtualisering som möjliggör samexistens av VM och containrar inom en och samma plattform som hanterar dem som en enhet.

BerÀkningsuppgifter

Containrar utnyttjar mekanismer i Linux-kÀrnan, sÄsom namespaces och cgroups, för processisolering och resursförvaltning. Vanligtvis förstÄs processer som applikationer som Python, Java eller körbara filer, men i sjÀlva verket kan det vara vilka processer som helst, samma bash, Emacs eller vim.

Vad Àr en virtuell maskin? Ur hypervisorns perspektiv Àr det ocksÄ en process. Men inte en applikationsprocess, utan en KVM-process som ansvarar för att köra en specifik VM.

OpenShift virtualisering: containrar, KVM och virtuella maskiner

Containeravbildningen innehÄller alla verktyg, bibliotek och filer som behövs för en KVM-virtuell maskin. Om vi inspekterar en pod av en aktiv VM kommer vi att se hjÀlpprogram och processer för qemu-kvm. Dessutom har vi tillgÄng till KVM-verktyg för att hantera virtuella maskiner, sÄsom qemu-img, qemu-nbd och virsh.

OpenShift virtualisering: containrar, KVM och virtuella maskiner

Eftersom en virtuell maskin Àr en pod, Àr den automatisktverkligadverkan av pod-funktionaliteten i Kubernetes. För VM-podder gÀller pÄ samma sÀtt som för vanliga podder scheman och kriterier för schemalÀggning, sÄsom taints, tolerations, affinitet och anti-affinitet. Du fÄr ocksÄ fördelar som hög tillgÀnglighet osv. Det finns dock en viktig skillnad: vanliga poddar migrerar inte mellan vÀrdar pÄ det sÀtt som vi Àr vana vid. Om en nod stÀngs av, avbryts podden pÄ den och omfördelas till en annan nod i klustret. Men nÀr det gÀller virtuella maskiner förvÀntar vi oss att se levande migration.

För att ÄtgÀrda denna brist skapades en anpassad resursdefinition (CDR) som beskriver mekanismen för levande migration, vilket ansvarar för initiering, övervakning och hantering av levande migrationer av VM mellan arbetsnoder.

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

Vid avaktivering av en nod för de virtuella maskiner vars evakueringsstrategi Àr Live Migration, skapas automatiskt migreringsuppgifter. PÄ sÄ sÀtt kan beteendet hos de virtuella maskinerna kontrolleras nÀr de flyttas mellan noder i klustret. Du kan bÄde konfigurera Live Migration och hantera VM, precis som med alla andra pods.

NĂ€tverk

Alla Kubernetes-system tillhandahÄller kommunikation mellan noder och poddar genom mjukvarubaserade SDN-nÀtverk. OpenShift Àr inget undantag och anvÀnder som standard OpenShiftSDN för detta frÄn och med version 3. Dessutom har OpenShift 4 fÄtt en ny funktion som heter Multus, som gör det möjligt att göra flera nÀtverk tillgÀngliga och koppla poddar till dem samtidigt.

OpenShift virtualisering: containrar, KVM och virtuella maskiner

Med Multus kan administratören ange ytterligare CNI-nĂ€tverk som sedan distribueras och konfigureras i klustret av den speciella Cluster Network Operator. Efter detta ansluts poddar till ett eller flera av dessa nĂ€tverk, vanligtvis till standard OpenShiftSDN och en extra grĂ€nssnitt. SR-IOV-enheter, standard Linux Bridge, MACVLAN- och IPVLAN-enheter – allt detta kan ocksĂ„ anvĂ€ndas om det behövs för din VM. Nedan visas hur man konfigurerar Multus CNI för bro-nĂ€tverket pĂ„ grĂ€nssnittet 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

NÀr det gÀller OpenShift-virtualisering innebÀr detta att VM kan anslutas direkt till det externa nÀtverket, utan att gÄ via SDN. Detta Àr viktigt för virtuella maskiner som flyttats till OpenShift frÄn Red Hat Virtualization eller VMware vSphere, eftersom det inte kommer att ske nÄgra Àndringar i nÀtverksinstÀllningarna med andra nivÄns Ätkomst pÄ OSI-modellen. Detta innebÀr ocksÄ att VM kan ha en nÀtverksadress som gör att Ätkomsten sker utan att gÄ via SDN. PÄ sÄ sÀtt kan vi effektivt anvÀnda specialiserade nÀtverksadaptrar eller ansluta direkt till lagringssystemet...

För att lÀra dig mer om hur man skapar och ansluter virtuella maskiner i OpenShift-virtualisering till nÀtverket kan du hÀr. Dessutom, nmstate operator, som distribueras som en del av OpenShift-virtualisering, erbjuder ytterligare ett vÀlkÀnt sÀtt att skapa och hantera nÀtverkskonfigurationer pÄ fysiska noder som anvÀnds av hypervisorer.

Lagring

Anslutning och hantering av diskar för virtuella maskiner inom OpenShift virtualization sker med hjÀlp av Kubernetes-koncept som StorageClasses, PersistentVolumeClaims (PVC) och PersistentVolume (PV), samt de standardlagringsprotokoll som anvÀnds i Kubernetes-miljöer. PÄ sÄ sÀtt fÄr Kubernetes-administratörer och applikationsteam en enhetlig och vÀlkÀnd mekanism för att hantera bÄde containrar och virtuella maskiner. MÄnga av administratörerna inom virtualiseringsmiljö kan ocksÄ kÀnna igen denna koncept, eftersom den anvÀnder samma princip för att separera konfigurationsfiler för VM och diskar, som tillÀmpas i OpenStack och mÄnga andra molnplattformar.

Men man kan inte bara skapa en ny disk för VM varje gĂ„ng, eftersom vi vid migrering frĂ„n hypervisor till OpenShift behöver bevara data. Även nĂ€r vi sĂ€tter upp en ny VM Ă€r det alltid snabbare att skapa den frĂ„n en mall Ă€n att börja frĂ„n grunden. DĂ€rför behöver vi funktionalitet för att importera befintliga diskar.

För att förenkla denna uppgift implementerar OpenShift virtualization projektet Containerized Data Importer (CDI), som förenar import av diskbilder frÄn flera kÀllor genom att skapa en post i 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

Det Àr just denna post som aktiverar CDI och startar sekvensen av ÄtgÀrder som visas i bilden nedan:

OpenShift virtualisering: containrar, KVM och virtuella maskiner

NĂ€r CDI har fullföljt sin uppgift kommer PVC att innehĂ„lla en disk för den virtuella maskinen, redo att anvĂ€ndas och i standardformatet för OpenShift

NĂ€r man arbetar med OpenShift virtualization Ă€r Ă€ven OpenShift Container Storage (OCS) anvĂ€ndbart, en lösning frĂ„n Red Hat baserad pĂ„ Ceph-filssystemet som implementerar funktionalitet för permanent lagring för containrar. Utöver de standard PVC-Ă„tkomstmetoderna – RWO (block) och RWX (fil) – erbjuder OCS RWX för rĂ„ block, vilket Ă€r mycket anvĂ€ndbart för att organisera delad blockĂ„tkomst för applikationer med höga prestandakrav. Dessutom stöder OCS den nya standarden för objektgruppförfrĂ„gan, Object Bucket Claim, vilket tillĂ„ter applikationer att direkt anvĂ€nda objektlagring.

Virtuella maskiner i containrar

Om du Ă€r nyfiken pĂ„ att se hur det fungerar, sĂ„ vet att OpenShift-virtualisering redan finns tillgĂ€nglig i Tech Preview-version inom OpenShift 3.11 och högre. Ägare av en aktiv prenumeration pĂ„ OpenShift kan anvĂ€nda OpenShift-virtualisering helt gratis och utan nĂ„gra ytterligare rörelser. Vid tidpunkten för publiceringen av detta inlĂ€gg Ă€r OpenShift 4.4 och OpenShift-virtualisering 2.3 aktuella; om du anvĂ€nder tidigare versioner, bör du uppgradera för att fĂ„ de senaste funktionerna. Den fullt stödjda versionen av OpenShift-virtualisering berĂ€knas slĂ€ppas under andra halvan av 2020.

För mer information, vÀnligen kontakta dokumentationen för OpenShift för installationsanvisningar, inklusive avsnittet om Multus-konfiguration, dÀr information om att konfigurera externa nÀtverk ges.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster