Virtualització OpenShift: contenidors, KVM i màquines virtuals

Virtualització OpenShift (projecte amunt - Kubernetes: KubeVirt, vegeu. aquí и aquí), nee Virtualization nativa de contenidors, es va presentar com a funcionalitat de la plataforma OpenShift, que està dissenyada per desplegar i gestionar màquines virtuals (VM) com a entitats bàsiques de Kubernetes. Aquest tipus de tasca és tècnicament difícil a causa de les diferències fonamentals en la tecnologia. Per tal d'aconseguir aquest objectiu, hem utilitzat tecnologies familiars basades en Red Hat Enterprise Linux i KVM, que porten molts anys amb nosaltres i han demostrat la seva eficàcia.

Virtualització OpenShift: contenidors, KVM i màquines virtuals

En aquest article, analitzarem els aspectes tècnics de la virtualització OpenShift que fan possible que les màquines virtuals i els contenidors coexisteixin dins d'una única plataforma que els gestiona com una única entitat.

Tasques computacionals

Els contenidors utilitzen mecanismes del nucli de Linux com ara espais de noms i grups c per aïllar processos i gestionar recursos. Normalment els processos s'entenen com Python, aplicacions Java o fitxers executables, però de fet poden ser qualsevol procés, com bash, Emacs o vim.

Què és una màquina virtual? Des del punt de vista de l'hipervisor, això també és un procés. Però no el procés d'aplicació, sinó el procés KVM responsable d'executar una VM específica.

Virtualització OpenShift: contenidors, KVM i màquines virtuals

La imatge del contenidor conté totes les eines, biblioteques i fitxers necessaris per a la màquina virtual KVM. Si inspeccionem el pod d'una màquina virtual en execució, hi veurem ajudants i processos qemu-kvm. A més, tenim accés a eines KVM per gestionar màquines virtuals com ara qemu-img, qemu-nbd i virsh.

Virtualització OpenShift: contenidors, KVM i màquines virtuals

Com que una màquina virtual és un pod, hereta automàticament tota la funcionalitat d'un pod a Kubernetes. Els pods VM, igual que els pods normals, estan subjectes a esquemes de planificador i criteris com ara taques, toleracions, afinitat i antiafinitat. També obteniu els avantatges de l'alta disponibilitat, etc. Tanmateix, hi ha una diferència important: les beines normals no migren d'amfitrió a amfitrió en el sentit habitual. Si un node queda fora de línia, el pod que hi ha s'acaba i es reassigna a un altre node del clúster. I en el cas d'una màquina virtual, esperem veure una migració en directe.

Per abordar aquesta bretxa, es va crear una definició de recursos personalitzada (CDR) per descriure el mecanisme de migració en directe que és responsable d'inicialitzar, supervisar i gestionar les migracions en directe de màquines virtuals entre nodes de treball.

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

Quan es desactiva un node, les tasques de migració es creen automàticament per a aquelles màquines virtuals que tenen la Live Migration establerta com a estratègia de desallotjament. D'aquesta manera podeu controlar el comportament de les màquines virtuals quan us moveu entre nodes de clúster. Podeu configurar Live Migration i gestionar la VM, com tots els altres pods.

Xarxa

Qualsevol sistema Kubernetes proporciona comunicació entre nodes i pods mitjançant xarxes SDN de programari. OpenShift no és una excepció i, a partir de la versió 3, utilitza OpenShiftSDN per defecte per a això. A més, OpenShift 4 té una altra característica nova anomenada Multus, que us permet fer disponibles diverses xarxes i connectar-hi pods simultàniament.

Virtualització OpenShift: contenidors, KVM i màquines virtuals

Mitjançant Multus, l'administrador pot definir xarxes CNI addicionals, que després seran desplegades i configurades al clúster per un operador de xarxa de clúster especial. Aleshores, els pods es connecten a una o més d'aquestes xarxes, normalment l'OpenShiftSDN estàndard i una interfície addicional. Els dispositius SR-IOV, Linux Bridge estàndard, MACVLAN i dispositius IPVLAN es poden utilitzar si la vostra màquina virtual ho necessita. La figura següent mostra com configurar Multus CNI per a la xarxa pont a la interfície 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

En relació a la virtualització OpenShift, això significa que una màquina virtual es pot connectar directament a una xarxa externa, sense passar per SDN. Això és important per a les màquines virtuals migrades a OpenShift des de Red Hat Virtualization o VMware vSphere, ja que si teniu accés a la segona capa OSI, no hi haurà cap canvi en la configuració de la xarxa. Això també significa que la màquina virtual pot tenir una adreça de xarxa que passa per alt SDN. Així, podem utilitzar eficaçment adaptadors de xarxa especialitzats o connectar-nos directament al sistema d'emmagatzematge a través de la xarxa...

Podeu obtenir més informació sobre com crear i connectar màquines virtuals de virtualització OpenShift a la xarxa aquí... A més, operador nmstate, desplegat com a part de la virtualització OpenShift, ofereix una altra manera familiar de crear i gestionar configuracions de xarxa en nodes físics que s'utilitzen sota els hipervisors.

emmagatzematge

La connexió i la gestió de discos de màquines virtuals dins de la virtualització OpenShift es realitza mitjançant conceptes de Kubernetes com StorageClasses, PersistentVolumeClaims (PVC) i PersistentVolume (PV), així com protocols d'emmagatzematge estàndard per a l'entorn Kubernetes. Això ofereix als administradors i als equips d'aplicacions de Kubernetes una manera habitual i familiar de gestionar tant els contenidors com les màquines virtuals. I per a molts administradors d'entorns de virtualització, aquest concepte pot semblar familiar perquè utilitza el mateix principi de separació de fitxers i discs de configuració de VM que s'utilitza a OpenStack i moltes altres plataformes de núvol.

No obstant això, no podem crear simplement un disc nou per a la màquina virtual cada vegada, ja que en migrar de l'hipervisor a OpenShift, hem de desar les dades. Sí, fins i tot quan despleguem una màquina virtual nova, sempre és més ràpid fer-ho des d'una plantilla que crear-la des de zero. Per tant, necessitem una funcionalitat per importar discs existents.

Per simplificar aquesta tasca, la virtualització OpenShift desplega el projecte Containerized Data Importer (CDI), que redueix la importació d'imatges de disc de discs de diverses fonts per crear una entrada de 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

És aquesta entrada la que activa CDI, activant la seqüència d'accions que es mostra a la figura següent:

Virtualització OpenShift: contenidors, KVM i màquines virtuals

Un cop finalitzat el CDI, el PVC contindrà el disc de la màquina virtual llest per al seu ús i es convertirà al format estàndard d'OpenShift...
Quan es treballa amb la virtualització OpenShift, també és útil l'OpenShift Container Storage (OCS), una solució de Red Hat basada en el sistema de fitxers Ceph que implementa la funcionalitat d'emmagatzematge persistent per als contenidors. A més dels mètodes estàndard d'accés de PVC - RWO (bloc) i RWX (fitxer) - OCS proporciona RWX per a dispositius de blocs en brut, que és molt útil per compartir l'accés de blocs per a aplicacions amb requisits d'alt rendiment. A més, OCS admet el nou estàndard Object Bucket Claim, que permet a les aplicacions utilitzar directament l'emmagatzematge de dades d'objectes.

Màquines virtuals en contenidors

Si esteu interessats a comprovar com funciona, sabeu que la virtualització d'OpenShift ja està disponible a la versió Tech Preview com a part d'OpenShift 3.11 i posterior. Els propietaris d'una subscripció a OpenShift existent poden utilitzar la virtualització d'OpenShift de manera totalment gratuïta i sense cap pas addicional. En el moment de la publicació d'aquesta publicació, OpenShift 4.4 i OpenShift virtualization 2.3 són actuals; si utilitzeu versions anteriors, hauríeu d'actualitzar per obtenir les últimes funcions. Una versió totalment compatible de la virtualització OpenShift s'hauria de llançar a la segona meitat del 2020.

Per a més informació contacteu Documentació OpenShift per obtenir instruccions d'instal·lació, inclòs Secció de configuració de Multus, que proporciona informació sobre la configuració de xarxes externes.

Font: www.habr.com

Afegeix comentari