Виртуализатсияи OpenShift: контейнерҳо, KVM ва мошинҳои виртуалӣ

Виртуализатсияи OpenShift (лоиҳаи болоӣ - Kubernetes: KubeVirt, нигаред дар ин ҷо и дар ин ҷо), nee Virtualization-и Контейнерӣ, ҳамчун вазифаи платформаи OpenShift муаррифӣ шудааст, ки барои ҷойгиркунӣ ва идоракунии мошинҳои виртуалӣ (VM) ҳамчун объектҳои асосии Kubernetes пешбинӣ шудааст. Ин гуна вазифа бо сабаби фарқиятҳои куллӣ дар технология аз ҷиҳати техникӣ душвор аст. Барои ноил шудан ба ин ҳадаф мо технологияҳои шиносро дар асоси Red Hat Enterprise Linux ва KVM истифода бурдем, ки солҳои зиёд бо мо буданд ва самаранокии худро собит кардаанд.

Виртуализатсияи OpenShift: контейнерҳо, KVM ва мошинҳои виртуалӣ

Дар ин мақола, мо ҷанбаҳои техникии виртуализатсияи OpenShift-ро дида мебароем, ки имкон медиҳад VM ва контейнерҳо дар як платформаи ягона, ки онҳоро ҳамчун як воҳиди ягона идора мекунанд, якҷоя зиндагӣ кунанд.

Вазифаҳои ҳисоббарорӣ

Контейнерҳо барои ҷудо кардани равандҳо ва идоракунии захираҳо механизмҳои ядрои Linux, ба монанди фазоҳои номҳо ва гурӯҳҳоро истифода мебаранд. Одатан равандҳо ҳамчун барномаҳои Python, Java ё файлҳои иҷрошаванда фаҳмида мешаванд, аммо дар асл онҳо метавонанд ҳама гуна равандҳо бошанд, ба монанди bash, Emacs ё vim.

Мошини виртуалӣ чист? Аз нуқтаи назари гипервизор, ин ҳам раванд аст. Аммо на раванди дархост, балки раванди KVM барои иҷрои VM-и мушаххас масъул аст.

Виртуализатсияи OpenShift: контейнерҳо, KVM ва мошинҳои виртуалӣ

Тасвири контейнер дорои тамоми асбобҳо, китобхонаҳо ва файлҳои барои мошини виртуалии KVM лозим аст. Агар мо поди VM-ро тафтиш кунем, мо дар он чо ёрдамчиён ва процессхои qemu-kvm-ро мебинем. Илова бар ин, мо ба асбобҳои KVM барои идоракунии мошинҳои виртуалӣ ба монанди qemu-img, qemu-nbd ва virsh дастрасӣ дорем.

Виртуализатсияи OpenShift: контейнерҳо, KVM ва мошинҳои виртуалӣ

Азбаски мошини маҷозӣ подкаст аст, он ба таври худкор тамоми функсияҳои подкастро дар Кубернетес мерос мегирад. Подшоҳҳои VM, ба монанди подкҳои муқаррарӣ, ба схемаҳо ва меъёрҳои банақшагирӣ, аз қабили доғҳо, таҳаммулпазирӣ, наздикӣ ва зиддиҳамбастагӣ қарор доранд. Шумо инчунин бартариҳои дастрасии баланд ва ғайра мегиред. Бо вуҷуди ин, як фарқияти муҳим вуҷуд дорад: қуттиҳои муқаррарӣ ба маънои муқаррарӣ аз мизбон ба мизбон муҳоҷират намекунанд. Агар гиреҳ офлайн шавад, подкоҳи он қатъ карда мешавад ва ба гиреҳи дигари кластер таъин карда мешавад. Ва дар мавриди мошини маҷозӣ, мо интизорем, ки муҳоҷирати зиндаро бубинем.

Барои бартараф кардани ин норасоӣ, таърифи захираҳои фармоишӣ (CDR) барои тавсифи механизми муҳоҷирати зинда, ки барои оғоз, назорат ва идоракунии муҳоҷирати зиндаи VMҳо байни гиреҳҳои коргар масъул аст, сохта шудааст.

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

Вақте ки гиреҳ ғайрифаъол карда мешавад, вазифаҳои муҳоҷират ба таври худкор барои он мошинҳои виртуалӣ, ки Муҳоҷирати Зиндагӣ ҳамчун стратегияи ихроҷи онҳо таъин шудаанд, эҷод карда мешаванд. Бо ин роҳ шумо метавонед рафтори мошинҳои виртуалиро ҳангоми ҳаракат байни гиреҳҳои кластер назорат кунед. Шумо ҳам метавонед Мигратсияи Liveро танзим кунед ва VM-ро ба мисли ҳама подкастҳои дигар идора кунед.

Шабака

Ҳама гуна системаи Kubernetes иртибот байни гиреҳҳо ва подкҳоро бо истифода аз шабакаҳои нармафзори SDN таъмин мекунад. OpenShift истисно нест ва аз версияи 3 сар карда, барои ин OpenShiftSDN-ро бо нобаёнӣ истифода мебарад. Илова бар ин, OpenShift 4 боз як хусусияти нав бо номи Multus дорад, ки ба шумо имкон медиҳад шабакаҳои сершуморро дастрас кунед ва ҳамзамон подкҳоро ба онҳо пайваст кунед.

Виртуализатсияи OpenShift: контейнерҳо, KVM ва мошинҳои виртуалӣ

Бо истифода аз Multus, администратор метавонад шабакаҳои иловагии CNI-ро муайян кунад, ки баъдан аз ҷониби Оператори махсуси Шабакаи Кластер дар кластер ҷойгир ва танзим карда мешавад. Пас аз он, поддонҳо ба як ё якчанд ин шабакаҳо пайваст мешаванд, одатан OpenShiftSDN стандартӣ ва интерфейси иловагӣ. Дастгоҳҳои SR-IOV, стандартии Linux Bridge, дастгоҳҳои MACVLAN ва IPVLAN ҳама метавонанд истифода шаванд, агар VM-и шумо ба он ниёз дошта бошад. Дар расми зер нишон дода шудааст, ки чӣ тавр Multus CNI барои шабакаи пул дар интерфейси 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

Дар робита ба виртуализатсияи OpenShift, ин маънои онро дорад, ки VM метавонад мустақиман ба шабакаи беруна пайваст шуда, аз SDN гузашт. Ин барои мошинҳои маҷозӣ, ки аз Red Hat Virtualization ё VMware vSphere ба OpenShift кӯчонида шудаанд, муҳим аст, зеро агар шумо ба қабати дуюми OSI дастрасӣ дошта бошед, дар танзимоти шабака тағирот ба амал намеояд. Ин инчунин маънои онро дорад, ки VM метавонад суроғаи шабака дошта бошад, ки SDN-ро гузарад. Ҳамин тариқ, мо метавонем адаптерҳои махсуси шабакавиро самаранок истифода барем ё мустақиман ба системаи нигоҳдорӣ тавассути шабака пайваст шавем...

Шумо метавонед дар бораи чӣ гуна эҷод ва пайваст кардани мошинҳои виртуалии OpenShift ба шабака маълумоти бештар гиред дар ин ҷо. Илова бар ин, оператори nmstate, ки ҳамчун як қисми виртуализатсияи OpenShift ҷойгир шудааст, роҳи дигари шиноси эҷод ва идоракунии конфигуратсияҳои шабакаро дар гиреҳҳои физикӣ, ки зери гипервизорҳо истифода мешаванд, пешниҳод мекунад.

Нигоҳдорӣ

Пайвастшавӣ ва идоракунии дискҳои мошини виртуалӣ дар доираи виртуализатсияи OpenShift бо истифода аз консепсияҳои Kubernetes ба монанди StorageClasses, PersistentVolumeClaims (PVC) ва PersistentVolume (PV), инчунин протоколҳои нигаҳдории стандартӣ барои муҳити Kubernetes анҷом дода мешавад. Ин ба маъмурон ва гурӯҳҳои барномавии Kubernetes роҳи маъмул ва шиноси идоракунии ҳам контейнерҳо ва ҳам мошинҳои виртуалиро медиҳад. Ва барои бисёре аз маъмурони муҳитҳои виртуализатсия, ин консепсия метавонад шинос бошад, зеро он ҳамон принсипи ҷудо кардани файлҳои конфигуратсияи VM ва дискҳоро, ки дар OpenStack ва бисёр платформаҳои абрии дигар истифода мешаванд, истифода мебарад.

Аммо, мо наметавонем ҳар дафъа диски навро барои VM эҷод кунем, зеро ҳангоми гузаштан аз гипервизор ба OpenShift, мо бояд маълумотро захира кунем. Бале, ҳатто вақте ки мо VM-и навро ҷойгир мекунем, он ҳамеша аз қолаб иҷро кардани он тезтар аст, назар ба сохтани он аз сифр. Ҳамин тариқ, мо барои ворид кардани дискҳои мавҷуда функсия лозим аст.

Барои содда кардани ин вазифа, виртуализатсияи OpenShift лоиҳаи Containerized Data Importer (CDI) -ро истифода мебарад, ки воридоти тасвирҳои диски дискҳоро аз сарчашмаҳои гуногун то эҷоди вуруди 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

Маҳз ин сабт аст, ки CDI-ро фаъол карда, пайдарпайии амалҳои дар расми зер нишон додашударо оғоз мекунад:

Виртуализатсияи OpenShift: контейнерҳо, KVM ва мошинҳои виртуалӣ

Пас аз анҷоми CDI, PVC диски мошини виртуалиро дар бар мегирад, ки барои истифода омода аст ва ба формати стандартии OpenShift табдил дода мешавад...
Ҳангоми кор бо виртуализатсияи OpenShift, OpenShift Container Storage (OCS), як ҳалли Red Hat дар асоси системаи файлии Ceph, ки функсияҳои нигоҳдории доимиро барои контейнерҳо амалӣ мекунад, низ муфид аст. Илова ба усулҳои стандартии дастрасии PVC - RWO (блок) ва RWX (файл) - OCS RWX-ро барои дастгоҳҳои блоки хом таъмин мекунад, ки барои мубодилаи дастрасии блок барои замимаҳои дорои талаботи баланди иҷроиш хеле муфид аст. Илова бар ин, OCS стандарти нави Object Bucket Claim -ро дастгирӣ мекунад, ки ба барномаҳо имкон медиҳад, ки бевосита нигаҳдории додаҳои объектиро истифода баранд.

Мошинҳои виртуалӣ дар контейнерҳо

Агар шумо ба тафтиш кардани он, ки чӣ тавр кор мекунад, таваҷҷӯҳ дошта бошед, пас бидонед, ки виртуализатсияи OpenShift аллакай дар версияи пешнамоиши техникӣ ҳамчун як қисми OpenShift 3.11 ва навтар дастрас аст. Соҳибони обунаи мавҷудаи OpenShift метавонанд виртуализатсияи OpenShift-ро комилан ройгон ва бидуни қадамҳои иловагӣ истифода баранд. Дар замони интишор, OpenShift 4.4 ва OpenShift virtualization 2.3 ҷорӣ мебошанд; Агар шумо версияҳои қаблиро истифода баред, шумо бояд навсозӣ кунед, то хусусиятҳои навтаринро ба даст оред. Версияи пурра дастгирӣшудаи виртуализатсияи OpenShift бояд дар нимаи дуюми соли 2020 бароварда шавад.

Барои маълумоти иловагӣ ба руҷӯъ кунед Ҳуҷҷатҳои OpenShift барои дастурҳои насб, аз ҷумла Бахши танзимоти Multis, ки дар бораи танзими шабакаҳои беруна маълумот медиҳад.

Манбаъ: will.com

Илова Эзоҳ