OpenShift virtualizatsiyasi: konteynerlar, KVM va virtual mashinalar

OpenShift virtualizatsiyasi (yuqoridagi loyiha - Kubernetes: KubeVirt, qarang. shu yerda и shu yerda), nee Container-native Virtualization, virtual mashinalarni (VM) asosiy Kubernetes ob'ektlari sifatida joylashtirish va boshqarish uchun mo'ljallangan OpenShift platformasining funksionalligi sifatida taqdim etildi. Ushbu turdagi vazifa texnologiyadagi tub farqlar tufayli texnik jihatdan qiyin. Ushbu maqsadga erishish uchun biz ko'p yillar davomida biz bilan birga bo'lgan va o'z samaradorligini isbotlagan Red Hat Enterprise Linux va KVM asosidagi tanish texnologiyalardan foydalandik.

OpenShift virtualizatsiyasi: konteynerlar, KVM va virtual mashinalar

Ushbu maqolada biz OpenShift virtualizatsiyasining texnik jihatlarini ko'rib chiqamiz, bu esa VM va konteynerlarning ularni yagona ob'ekt sifatida boshqaradigan yagona platformada birga yashashiga imkon beradi.

Hisoblash vazifalari

Konteynerlar jarayonlarni ajratish va resurslarni boshqarish uchun nomlar maydoni va guruhlar kabi Linux yadro mexanizmlaridan foydalanadi. Odatda jarayonlar Python, Java ilovalari yoki bajariladigan fayllar deb tushuniladi, lekin aslida ular bash, Emacs yoki vim kabi har qanday jarayonlar bo'lishi mumkin.

Virtual mashina nima? Gipervisor nuqtai nazaridan bu ham jarayondir. Ammo dastur jarayoni emas, balki ma'lum bir VMni bajarish uchun mas'ul bo'lgan KVM jarayoni.

OpenShift virtualizatsiyasi: konteynerlar, KVM va virtual mashinalar

Konteyner tasvirida KVM virtual mashinasi uchun zarur bo'lgan barcha vositalar, kutubxonalar va fayllar mavjud. Agar biz ishlaydigan VM podini tekshirsak, u erda yordamchilar va qemu-kvm jarayonlarini ko'ramiz. Bundan tashqari, biz qemu-img, qemu-nbd va virsh kabi virtual mashinalarni boshqarish uchun KVM vositalaridan foydalanishimiz mumkin.

OpenShift virtualizatsiyasi: konteynerlar, KVM va virtual mashinalar

Virtual mashina pod bo'lgani uchun u Kubernetesdagi podning barcha funksiyalarini avtomatik ravishda meros qilib oladi. VM podslari, xuddi oddiy podlar singari, rejalashtirish sxemalari va mezonlarga bo'ysunadi, masalan, ifloslanish, bardoshlik, yaqinlik va anti-affinlik. Shuningdek, siz yuqori darajadagi mavjudlik va boshqalarning afzalliklariga ega bo'lasiz. Biroq, bitta muhim farq bor: oddiy podalar odatiy ma'noda xostdan xostga o'tmaydi. Agar tugun oflayn bo'lsa, undagi podkast tugatiladi va klasterdagi boshqa tugunga qayta tayinlanadi. Va virtual mashina holatida biz jonli migratsiyani ko'rishni kutamiz.

Ushbu bo'shliqni bartaraf etish uchun ishchi tugunlari orasidagi VMlarning jonli migratsiyasini ishga tushirish, kuzatish va boshqarish uchun mas'ul bo'lgan jonli migratsiya mexanizmini tavsiflash uchun maxsus resurs ta'rifi (CDR) yaratildi.

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

Tugun o'chirilganda, ko'chirish strategiyasi sifatida Live Migratsiya o'rnatilgan virtual mashinalar uchun migratsiya vazifalari avtomatik ravishda yaratiladi. Shunday qilib, siz klaster tugunlari o'rtasida harakatlanayotganda virtual mashinalarning harakatini boshqarishingiz mumkin. Siz ham Live Migratsiyani sozlashingiz, ham boshqa barcha podlar kabi VMni boshqarishingiz mumkin.

Tarmoq

Har qanday Kubernetes tizimi dasturiy ta'minot SDN tarmoqlari yordamida tugunlar va podlar o'rtasidagi aloqani ta'minlaydi. OpenShift bundan mustasno emas va 3-versiyadan boshlab buning uchun sukut bo'yicha OpenShiftSDN-dan foydalanadi. Bundan tashqari, OpenShift 4-da Multus deb nomlangan yana bir yangi xususiyat mavjud bo'lib, u bir vaqtning o'zida bir nechta tarmoqlarni mavjud qilish va ularga podkastlarni ulash imkonini beradi.

OpenShift virtualizatsiyasi: konteynerlar, KVM va virtual mashinalar

Multus-dan foydalanib, administrator qo'shimcha CNI tarmoqlarini belgilashi mumkin, ular keyinchalik maxsus Klaster tarmoq operatori tomonidan klasterda joylashtiriladi va sozlanadi. Keyin podlar ushbu tarmoqlarning biriga yoki bir nechtasiga, odatda standart OpenShiftSDN va qo'shimcha interfeysga ulanadi. SR-IOV qurilmalari, standart Linux Bridge, MACVLAN va IPVLAN qurilmalari VMga kerak bo'lsa ishlatilishi mumkin. Quyidagi rasmda eth1 interfeysidagi ko'prik tarmog'i uchun Multus CNI qanday o'rnatilishi ko'rsatilgan:

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 virtualizatsiyasiga kelsak, bu VM SDN-ni chetlab o'tib, to'g'ridan-to'g'ri tashqi tarmoqqa ulanishi mumkinligini anglatadi. Bu Red Hat Virtualization yoki VMware vSphere-dan OpenShift-ga ko'chirilgan virtual mashinalar uchun muhim, chunki agar siz ikkinchi OSI qatlamiga kirish imkoniga ega bo'lsangiz, tarmoq sozlamalarida hech qanday o'zgarish bo'lmaydi. Bu shuningdek, VM SDNni chetlab o'tuvchi tarmoq manziliga ega bo'lishi mumkinligini anglatadi. Shunday qilib, biz maxsus tarmoq adapterlaridan samarali foydalanishimiz yoki tarmoq orqali to'g'ridan-to'g'ri saqlash tizimiga ulanishimiz mumkin...

OpenShift virtualizatsiya virtual mashinalarini qanday yaratish va tarmoqqa ulash haqida ko'proq bilib olishingiz mumkin shu yerda. Bundan tashqari, nmstate operatori, OpenShift virtualizatsiyasining bir qismi sifatida joylashtirilgan hipervisorlar ostida ishlatiladigan jismoniy tugunlarda tarmoq konfiguratsiyasini yaratish va boshqarishning yana bir tanish usulini taklif etadi.

saqlash

OpenShift virtualizatsiyasi doirasida virtual mashina disklarini ulash va boshqarish Kubernetesning StorageClasses, PersistentVolumeClaims (PVC) va PersistentVolume (PV) kabi tushunchalari hamda Kubernetes muhiti uchun standart saqlash protokollari yordamida amalga oshiriladi. Bu Kubernetes ma'murlari va dastur guruhlariga konteynerlar va virtual mashinalarni boshqarishning umumiy, tanish usulini beradi. Virtualizatsiya muhitlarining ko'plab ma'murlari uchun bu tushuncha tanish bo'lishi mumkin, chunki u OpenStack va boshqa ko'plab bulutli platformalarda ishlatiladigan VM konfiguratsiya fayllari va disklarini ajratishning bir xil printsipidan foydalanadi.

Biroq, biz har safar VM uchun yangi disk yarata olmaymiz, chunki gipervisordan OpenShift-ga o'tishda biz ma'lumotlarni saqlashimiz kerak. Ha, biz yangi VM ni ishga tushirganimizda ham, uni noldan yaratishdan ko'ra, uni shablon orqali bajarish har doim tezroq bo'ladi. Shunday qilib, biz mavjud disklarni import qilish uchun funksionallikka muhtojmiz.

Ushbu vazifani soddalashtirish uchun OpenShift virtualizatsiyasi Containerized Data Importer (CDI) loyihasini qo'llaydi, bu esa bir nechta manbalardan disklarning disk tasvirlarini import qilishni PVX yozuvini yaratishgacha kamaytiradi.

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

Aynan shu yozuv CDI ni faollashtiradi va quyidagi rasmda ko'rsatilgan harakatlar ketma-ketligini ishga tushiradi:

OpenShift virtualizatsiyasi: konteynerlar, KVM va virtual mashinalar

CDI tugagandan so'ng, PVX foydalanishga tayyor virtual mashina diskini o'z ichiga oladi va standart OpenShift formatiga o'zgartiriladi...
OpenShift virtualizatsiyasi bilan ishlashda konteynerlar uchun doimiy saqlash funksiyasini amalga oshiradigan Ceph fayl tizimiga asoslangan Red Hat yechimi OpenShift Container Storage (OCS) ham foydalidir. Standart PVX kirish usullariga qo'shimcha ravishda - RWO (blok) va RWX (fayl) - OCS xom blokli qurilmalar uchun RWX ni taqdim etadi, bu esa yuqori ishlash talablari bo'lgan ilovalar uchun blokirovkaga kirishni almashish uchun juda foydalidir. Bundan tashqari, OCS yangi Object Bucket Claim standartini qo'llab-quvvatlaydi, bu esa ilovalarga ob'ekt ma'lumotlarini saqlashdan bevosita foydalanish imkonini beradi.

Konteynerlardagi virtual mashinalar

Agar siz uning qanday ishlashini tekshirmoqchi bo'lsangiz, bilingki, OpenShift virtualizatsiyasi OpenShift 3.11 va undan yuqori versiyalarining bir qismi sifatida Tech Preview versiyasida allaqachon mavjud. Mavjud OpenShift obunasi egalari OpenShift virtualizatsiyasidan mutlaqo bepul va qo'shimcha qadamlarsiz foydalanishlari mumkin. Ushbu postda OpenShift 4.4 va OpenShift virtualizatsiya 2.3 joriy; agar siz avvalgi versiyalardan foydalanayotgan bo'lsangiz, eng so'nggi funksiyalarni olish uchun yangilashingiz kerak. OpenShift virtualizatsiyasining to'liq qo'llab-quvvatlanadigan versiyasi 2020 yilning ikkinchi yarmida chiqarilishi kerak.

Qo'shimcha ma'lumot uchun qarang OpenShift hujjatlari o'rnatish ko'rsatmalari uchun, shu jumladan Multis-ni sozlash bo'limi, bu tashqi tarmoqlarni o'rnatish haqida ma'lumot beradi.

Manba: www.habr.com

a Izoh qo'shish