ProHoster > Blog > Ma'muriyat > CRI-O Kubernetes uchun ish vaqti muhiti sifatida Docker o'rniga: CentOS 8 da o'rnatish
CRI-O Kubernetes uchun ish vaqti muhiti sifatida Docker o'rniga: CentOS 8 da o'rnatish
Salom! Mening ismim Sergey, men Surfdagi DevOpsman. Surfdagi DevOps bo'limi nafaqat mutaxassislar o'rtasidagi o'zaro aloqani o'rnatish va ish jarayonlarini integratsiyalash, balki o'z infratuzilmasida ham, mijozning infratuzilmasida ham joriy texnologiyalarni faol tadqiq qilish va joriy etishni maqsad qilgan.
Quyida men tarqatishni o'rganishda duch kelgan konteynerlar uchun texnologiya stekidagi o'zgarishlar haqida bir oz gaplashaman. CentOS 8 va bu nima haqida CRI-O va bajariladigan muhitni qanday tezda sozlash Kubernetes.
Nima uchun Docker CentOS 8 ga kiritilmagan?
Eng so'nggi yirik versiyalarni o'rnatgandan so'ng REL 8 yoki CentOS 8 E'tibor bermaslik mumkin emas: bu tarqatishlar va rasmiy omborlarda dastur mavjud emas Docker, mafkuraviy va funktsional jihatdan paketlarni almashtiradi podman, Buildah (sukut bo'yicha taqsimotda mavjud) va CRI-O. Bu Red Hat tomonidan boshqa narsalar qatori Open Container Initiative (OCI) loyihasi doirasida ishlab chiqilgan standartlarning amaliy tatbiq etilishi bilan bog'liq.
Linux fondining bir qismi bo'lgan OCI maqsadi bir vaqtning o'zida bir nechta muammolarni hal qiladigan konteyner formatlari va ish vaqtlari uchun ochiq sanoat standartlarini yaratishdir. Birinchidan, ular Linux falsafasiga zid emas edi (masalan, har bir dastur bitta amalni bajarishi kerak bo'lgan qismida va Docker yaxlit kombaynning bir turi). Ikkinchidan, ular dasturiy ta'minotdagi barcha mavjud kamchiliklarni bartaraf etishlari mumkin edi Docker. Uchinchidan, ular konteynerlashtirilgan ilovalarni (masalan, Red Hat OpenShift) joylashtirish, boshqarish va ularga xizmat ko‘rsatish bo‘yicha yetakchi tijorat platformalarining biznes talablariga to‘liq mos keladi.
kamchiliklar Docker va yangi dasturiy ta'minotning afzalliklari allaqachon batafsil tavsiflangan Ushbu maqola, va OCI loyihasi doirasida taqdim etilgan barcha dasturiy ta'minot to'plamining batafsil tavsifi va uning arxitektura xususiyatlari Red Hatning o'zidan rasmiy hujjatlar va maqolalarda (yomon emas) maqola Red Hat blogida) va uchinchi tomonda sharhlar.
Taklif etilayotgan stekning tarkibiy qismlari qanday funksiyalarga ega ekanligini ta'kidlash muhimdir:
podman — RunC jarayoni orqali konteynerlar va tasvirlarni saqlash bilan bevosita o‘zaro aloqa qilish;
Buildah — tasvirlarni yig‘ish va reestrga yuklash;
CRI-O — konteyner orkestrlash tizimlari uchun bajariladigan muhit (masalan, Kubernetes).
O'ylaymanki, stekning tarkibiy qismlari o'rtasidagi o'zaro ta'sirning umumiy sxemasini tushunish uchun bu erda ulanish diagrammasini taqdim etish tavsiya etiladi. Kubernetes c yugurishC va past darajadagi kutubxonalar yordamida CRI-O:
CRI-O и Kubernetes bir xil chiqarish va qo'llab-quvvatlash tsikliga rioya qiling (moslik matritsasi juda oddiy: asosiy versiyalar Kubernetes и CRI-O mos keladi) va bu ishlab chiquvchilar tomonidan ushbu stekning ishlashini to'liq va har tomonlama sinovdan o'tkazishga e'tiborni hisobga olgan holda, har qanday foydalanish stsenariylarida ishlashda maksimal erishish mumkin bo'lgan barqarorlikni kutish huquqini beradi (nisbiy engillik bu erda ham foydalidir) CRI-O bilan solishtirganda Docker funksionallikning maqsadli cheklanishi tufayli).
O'rnatish paytida Kubernetes "to'g'ri yo'l" usuli (OCI bo'yicha, albatta) foydalanish CRI-O haqida CentOS 8 Biz kichik qiyinchiliklarga duch keldik, ammo ularni muvaffaqiyatli yengib chiqdik. Men siz bilan o'rnatish va sozlash bo'yicha ko'rsatmalarni baham ko'rishdan xursand bo'laman, jami 10 daqiqa davom etadi.
CRI-O ramkasidan foydalangan holda CentOS 8-da Kubernetes-ni qanday joylashtirish mumkin
Majburiy shartlar: o'rnatilgan kamida bitta xost (2 yadro, 4 GB RAM, kamida 15 GB saqlash) mavjudligi CentOS 8 ("Server" o'rnatish profili tavsiya etiladi), shuningdek mahalliy DNS-dagi yozuvlar (so'nggi chora sifatida siz /etc/hosts-ga kirish orqali olishingiz mumkin). Va unutmang almashtirishni o'chirish.
Biz hostda barcha operatsiyalarni root foydalanuvchi sifatida bajaramiz, ehtiyot bo'ling.
Birinchi bosqichda biz operatsion tizimni sozlaymiz, CRI-O uchun dastlabki bog'liqliklarni o'rnatamiz va sozlaymiz.
Keling, operatsion tizimni yangilaymiz:
dnf -y update
Keyin xavfsizlik devori va SELinux-ni sozlashingiz kerak. Bu erda hamma narsa bizning xostimiz yoki xostlarimiz ishlaydigan muhitga bog'liq. Siz tavsiyalarga muvofiq xavfsizlik devorini o'rnatishingiz mumkin hujjatlar, yoki, agar siz ishonchli tarmoqda boʻlsangiz yoki uchinchi tomon xavfsizlik devoridan foydalansangiz, standart zonani ishonchli qilib oʻzgartiring yoki xavfsizlik devorini oʻchirib qoʻying:
kerakli versiyani o'rnating CRI-O (asosiy versiya CRI-O, allaqachon aytib o'tilganidek, kerakli versiyaga mos keladi Kubernetes), so'nggi barqaror versiyadan beri Kubernetes hozirda 1.18:
O'rnatish jarayonida biz duch keladigan birinchi nuancega e'tibor bering: siz konfiguratsiyani tahrirlashingiz kerak CRI-O xizmatni boshlashdan oldin, chunki kerakli umumiy komponent ko'rsatilganidan boshqa joyga ega:
sed -i 's//usr/libexec/crio/conmon//usr/bin/conmon/' /etc/crio/crio.conf
Endi siz demonni faollashtirishingiz va ishga tushirishingiz mumkin CRI-O:
Ikkinchi muhim nuance: chunki biz demondan foydalanmaymiz Docker, lekin biz demondan foydalanamiz CRI-O, ishga tushirish va ishga tushirishdan oldin Kubernetes avval kerakli katalogni yaratgandan so'ng /var/lib/kubelet/config.yaml konfiguratsiya faylida tegishli sozlamalarni o'rnatishingiz kerak:
O'rnatish paytida biz duch keladigan uchinchi muhim nuqta: biz foydalanilgan drayverni ko'rsatganimizga qaramay guruh, va o'tkazilgan argumentlar orqali uning konfiguratsiyasi kublet eskirgan (hujjatlarda aniq ko'rsatilgan), biz faylga argumentlar qo'shishimiz kerak, aks holda bizning klasterimiz ishga tushirilmaydi:
Endi biz demonni faollashtirishimiz mumkin kublet:
sudo systemctl enable --now kubelet
Moslashtirish uchun boshqaruv tekisligi yoki ishchi daqiqalarda tugunlar, siz foydalanishingiz mumkin bu skript bilan.
Klasterimizni ishga tushirish vaqti keldi.
Klasterni ishga tushirish uchun quyidagi buyruqni bajaring:
kubeadm init --pod-network-cidr=10.244.0.0/16
Chiqish oxirida ishlatishingiz so'raladigan "kubeadm join ..." klasteriga qo'shilish buyrug'ini yoki hech bo'lmaganda belgilangan tokenlarni yozishni unutmang.
Pod tarmog'i uchun plaginni (CNI) o'rnatamiz. Men foydalanishni tavsiya qilaman Calico. Ehtimol, mashhurroq Flanel bilan muvofiqlik muammolari mavjud nftables, ha va Calico - loyiha tomonidan tavsiya etilgan va to'liq sinovdan o'tgan yagona CNI dasturi Kubernetes:
Ishchi tugunni bizning klasterimizga ulash uchun siz uni 1 va 2 ko'rsatmalarga muvofiq sozlashingiz yoki foydalanishingiz kerak. skript, keyin biz oldingi bosqichda yozgan "kubeadm init..." chiqishidan buyruqni ishga tushiring:
Keling, bizning klasterimiz ishga tushirilganligini va ishlay boshlaganini tekshiramiz:
kubectl --kubeconfig=/etc/kubernetes/admin.conf get pods -A
Tayyor! Siz allaqachon K8s klasteringizda foydali yuklarni joylashtirishingiz mumkin.
Oldinda bizni nima kutmoqda
Umid qilamanki, yuqoridagi ko'rsatmalar sizga biroz vaqt va asablarni tejashga yordam berdi.
Sanoatda sodir bo'ladigan jarayonlarning natijasi ko'pincha oxirgi foydalanuvchilar va tegishli tarmoqdagi boshqa dasturiy ta'minotni ishlab chiquvchilar tomonidan qanday qabul qilinishiga bog'liq. OCI tashabbuslari bir necha yil ichida nimaga olib kelishi hozircha aniq emas, lekin biz zavq bilan kuzatamiz. O'z fikringizni izohlarda hoziroq baham ko'rishingiz mumkin.
Yangiliklarni kuzatib boring, xabardor bo'lib boring; Biz bilan qoling!
Ushbu maqola quyidagi manbalar tufayli paydo bo'ldi: