OpenShift virtuelizacija: kontejneri, KVM i virtuelne mašine

OpenShift virtuelizacija (upstream projekat - Kubernetes: KubeVirt, vidi. ovdje и ovdje), rođena u Kontejneru native Virtualization, predstavljena je kao funkcionalnost OpenShift platforme, koja je dizajnirana za implementaciju i upravljanje virtuelnim mašinama (VM) kao osnovnim Kubernetes entitetima. Ova vrsta zadatka je tehnički izazovna zbog fundamentalnih razlika u tehnologiji. Da bismo ostvarili ovaj cilj, koristili smo poznate tehnologije bazirane na Red Hat Enterprise Linux-u i KVM-u, koje su s nama već dugi niz godina i dokazale su svoju efikasnost.

OpenShift virtuelizacija: kontejneri, KVM i virtuelne mašine

U ovom članku ćemo pogledati tehničke aspekte OpenShift virtuelizacije koji omogućavaju da VM i kontejneri koegzistiraju unutar jedne platforme koja njima upravlja kao jedan entitet.

Računski zadaci

Kontejneri koriste mehanizme Linux kernela kao što su prostori imena i cgroups za izolaciju procesa i upravljanje resursima. Obično se procesi shvataju kao Python, Java aplikacije ili izvršne datoteke, ali u stvari to mogu biti bilo koji procesi, kao što su bash, Emacs ili vim.

Šta je virtuelna mašina? Sa tačke gledišta hipervizora, ovo je takođe proces. Ali ne proces aplikacije, već KVM proces odgovoran za izvršavanje određene VM.

OpenShift virtuelizacija: kontejneri, KVM i virtuelne mašine

Slika kontejnera sadrži sve alate, biblioteke i datoteke potrebne za KVM virtuelnu mašinu. Ako pregledamo pod pokrenute VM, vidjet ćemo tamo pomoćnike i qemu-kvm procese. Dodatno, imamo pristup KVM alatima za upravljanje virtuelnim mašinama kao što su qemu-img, qemu-nbd i virsh.

OpenShift virtuelizacija: kontejneri, KVM i virtuelne mašine

Pošto je virtuelna mašina pod, ona automatski nasljeđuje svu funkcionalnost pod u Kubernetesu. VM podovi, baš kao i obični podovi, podliježu shemama rasporeda i kriterijima kao što su mrlje, tolerancije, afinitet i anti-afinitet. Također dobijate prednosti visoke dostupnosti itd. Međutim, postoji jedna važna razlika: obične mahune ne migriraju s domaćina na domaćina u uobičajenom smislu. Ako čvor pređe van mreže, pod na njemu se prekida i ponovo dodjeljuje drugom čvoru u klasteru. A u slučaju virtuelne mašine očekujemo migraciju uživo.

Da bi se riješio ovaj jaz, kreirana je prilagođena definicija resursa (CDR) koja opisuje mehanizam žive migracije koji je odgovoran za inicijalizaciju, praćenje i upravljanje živim migracijama VM-a između radnih čvorova.

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

Kada je čvor deaktiviran, zadaci migracije se automatski kreiraju za one virtuelne mašine koje imaju Live Migration postavljenu kao strategiju izbacivanja. Na ovaj način možete kontrolirati ponašanje virtualnih mašina kada se krećete između čvorova klastera. Možete i konfigurirati Live Migration i upravljati VM-om, kao i svim ostalim podovima.

Mreža

Bilo koji Kubernetes sistem pruža komunikaciju između čvorova i podova koristeći softverske SDN mreže. OpenShift nije izuzetak i, počevši od verzije 3, za ovo podrazumevano koristi OpenShiftSDN. Osim toga, OpenShift 4 ima još jednu novu funkciju pod nazivom Multus, koja vam omogućava da više mreža učinite dostupnim i povežete podove na njih istovremeno.

OpenShift virtuelizacija: kontejneri, KVM i virtuelne mašine

Koristeći Multus, administrator može definirati dodatne CNI mreže, koje će zatim biti raspoređene i konfigurirane na klasteru od strane posebnog Operatora mreže klastera. Podovi se zatim povezuju na jednu ili više ovih mreža, obično standardni OpenShiftSDN i dodatni interfejs. SR-IOV uređaji, standardni Linux Bridge, MACVLAN i IPVLAN uređaji se mogu koristiti ako je potrebno vašem VM-u. Slika ispod pokazuje kako postaviti Multus CNI za bridge mrežu na eth1 sučelju:

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

U odnosu na OpenShift virtuelizaciju, to znači da se VM može direktno povezati na eksternu mrežu, zaobilazeći SDN. Ovo je važno za virtuelne mašine koje su migrirane na OpenShift sa Red Hat Virtualization ili VMware vSphere, jer ako imate pristup drugom OSI sloju, neće biti promena u mrežnim postavkama. To također znači da VM može imati mrežnu adresu koja zaobilazi SDN. Tako možemo efikasno koristiti specijalizovane mrežne adaptere ili se direktno povezati na sistem za skladištenje preko mreže...

Možete saznati više o tome kako kreirati i povezati OpenShift virtuelne virtuelne mašine na mrežu ovdje... Osim toga, nmstate operator, primijenjen kao dio OpenShift virtuelizacije, nudi još jedan poznati način za kreiranje i upravljanje mrežnim konfiguracijama na fizičkim čvorovima koji se koriste pod hipervizorima.

Skladištenje

Povezivanje i upravljanje diskovima virtuelnih mašina u okviru OpenShift virtuelizacije vrši se korišćenjem Kubernetes koncepata kao što su StorageClasses, PersistentVolumeClaims (PVC) i PersistentVolume (PV), kao i protokola za skladištenje standardnih za Kubernetes okruženje. Ovo daje Kubernetes administratorima i timovima aplikacija uobičajen, poznat način upravljanja i kontejnerima i virtuelnim mašinama. Mnogim administratorima virtualizacijskih okruženja ovaj koncept može zvučati poznato jer koristi isti princip odvajanja konfiguracijskih datoteka i diskova VM-a koji se koristi u OpenStack-u i mnogim drugim platformama u oblaku.

Međutim, ne možemo svaki put jednostavno kreirati novi disk za VM, jer kada prelazimo sa hipervizora na OpenShift, moramo sačuvati podatke. Da, čak i kada implementiramo novi VM, uvijek je brže to učiniti iz šablona nego kreirati ga od nule. Dakle, potrebna nam je funkcionalnost za uvoz postojećih diskova.

Da bi pojednostavila ovaj zadatak, OpenShift virtuelizacija primenjuje projekat Containerized Data Importer (CDI), koji smanjuje uvoz slika diskova iz više izvora na kreiranje PVC unosa.

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

Upravo ovaj unos aktivira CDI, pokrećući niz radnji prikazanih na donjoj slici:

OpenShift virtuelizacija: kontejneri, KVM i virtuelne mašine

Nakon što se CDI završi, PVC će sadržavati disk virtuelne mašine spreman za upotrebu i konvertovan u standardni OpenShift format...
Kada radite sa OpenShift virtuelizacijom, OpenShift Container Storage (OCS), Red Hat rešenje bazirano na Ceph sistemu datoteka koje implementira trajnu funkcionalnost skladištenja za kontejnere, takođe je korisno. Pored standardnih PVC metoda pristupa - RWO (blok) i RWX (fajl) - OCS obezbeđuje RWX za neobrađene blok uređaje, što je veoma korisno za deljenje bloka pristupa za aplikacije sa visokim zahtevima za performanse. Osim toga, OCS podržava novi Object Bucket Claim standard, koji omogućava aplikacijama da direktno koriste pohranu podataka objekata.

Virtuelne mašine u kontejnerima

Ako ste zainteresovani da proverite kako funkcioniše, znajte da je OpenShift virtuelizacija već dostupna u verziji Tech Preview kao deo OpenShift 3.11 i novije verzije. Vlasnici postojeće OpenShift pretplate mogu koristiti OpenShift virtualizaciju potpuno besplatno i bez ikakvih dodatnih koraka. U trenutku objavljivanja ove objave, OpenShift 4.4 i OpenShift virtuelizacija 2.3 su aktuelni; ako koristite prethodne verzije, trebali biste nadograditi da biste dobili najnovije funkcije. Potpuno podržana verzija virtuelizacije OpenShift trebala bi biti objavljena u drugoj polovini 2020.

Za više informacija pogledajte OpenShift dokumentacija za upute za instalaciju, uključujući Multius setup sekcija, koji pruža informacije o postavljanju eksternih mreža.

izvor: www.habr.com

Dodajte komentar