Kubernetes 101: Podlar, tugunlar, idishlar va klasterlar

Kubernetes tezda dasturiy ta'minotni bulutda joylashtirish va boshqarish uchun yangi standartga aylanmoqda. Ammo Kubernetes butun kuch bilan ta'minlaydi, ammo buning uchun tik o'rganish chizig'i keladi. Yangi kelgan kishi sifatida rasmiy hujjatlarni tahlil qilishga urinish juda katta bo'lishi mumkin. Tizimni tashkil etuvchi juda ko'p turli xil qismlar mavjud va ulardan qaysi biri sizning foydalanishingiz uchun tegishli ekanligini aytish qiyin. Ushbu blog posti Kubernetesning soddalashtirilgan ko'rinishini taqdim etadi, ammo u eng muhim tarkibiy qismlar va ularning bir-biriga qanday mos kelishi to'g'risida yuqori darajadagi sharh berishga harakat qiladi.

Birinchidan, apparat qanday taqdim etilishini ko'rib chiqamiz

Uskuna

Tugunlar

Tugun Kubernetesdagi eng kichik hisoblash texnik vositasidir. Bu sizning klasteringizda bitta mashinaning vakili. Ko'pgina ishlab chiqarish tizimlarida, tugun, ehtimol ma'lumotlar markazidagi jismoniy mashina yoki Google Cloud Platform kabi bulut provayderida joylashgan virtual mashina bo'lishi mumkin. Ammo anjumanlar sizni cheklashga yo'l qo'ymang; nazariy jihatdan, siz deyarli har qanday narsadan tugun qilishingiz mumkin.

Mashinani "tugun" deb o'ylash, mavhumlik qatlamini qo'shishimizga imkon beradi. Endi har qanday alohida mashinaning o'ziga xos xususiyatlari haqida qayg'urishning o'rniga, har bir mashinani ishlatilishi mumkin bo'lgan CPU va RAM manbalari to'plami sifatida ko'rib chiqishimiz mumkin. Shu tarzda, har qanday mashina Kubernetes klasteridagi boshqa har qanday mashinani o'rnini bosishi mumkin.

Klaster

Alohida tugunlar bilan ishlash foydali bo'lishi mumkin, ammo bu Kubernetes usuli emas. Umuman olganda, alohida tugunlarning holati haqida tashvishlanishning o'rniga, umuman klaster haqida o'ylashingiz kerak.

Kubernetesda tugunlar yanada kuchli mashinani shakllantirish uchun o'z resurslarini birlashtiradi. Dasturlarni klasterga joylashtirganingizda, u siz uchun alohida tugunlarga ishlarni tarqatishni oqilona amalga oshiradi. Agar biron bir tugun qo'shilsa yoki olib tashlansa, klaster kerak bo'lganda ish atrofida siljiydi. Bu dastur yoki alohida dasturlar aslida kodni ishlatadigan dasturchi uchun ahamiyatli bo'lmasligi kerak.

Agar bu kabi uy hayvonlariga o'xshash tizim Star Trek-dan Borgni eslatsa, siz yolg'iz emassiz; "Borg" bu Kubernetes asosidagi Google ichki loyihasining nomi.

Doimiy jildlar

O'zingizning klasteringizda ishlaydigan dasturlarning ma'lum bir tugun bilan ishlashi kafolatlanmaganligi sababli, ma'lumotlarni fayl tizimidagi biron bir ixtiyoriy joyga saqlash mumkin emas. Agar dastur keyinchalik ma'lumotlarni faylga saqlashga harakat qilsa-yu, lekin yangi tugunga joylashtirilsa, fayl endi dastur kutayotgan joyda bo'lmaydi. Shuning uchun har bir tugun bilan bog'langan an'anaviy mahalliy saqlash dasturlarni ushlab turish uchun vaqtincha kesh sifatida ko'rib chiqiladi, ammo mahalliy saqlangan har qanday ma'lumot saqlanib qolmaydi.

Ma'lumotni doimiy saqlash uchun Kubernetes Doimiy Volume-dan foydalanadi. Barcha tugunlarning protsessor va operativ xotiralari klaster tomonidan samarali ravishda birlashtirilib, boshqarilsa-da, fayllarni doimiy saqlash imkoni yo'q. Buning o'rniga, mahalliy yoki bulutli drayvlar klasterga Doimiy hajm sifatida biriktirilishi mumkin. Buni tashqi qattiq diskni klasterga ulash deb o'ylash mumkin. Doimiy hajmlar biron bir tugun bilan bog'lanmasdan, klasterga o'rnatilishi mumkin bo'lgan fayl tizimini ta'minlaydi.

Dasturiy ta'minot

Konteynerlar

Kubernetes-da ishlaydigan dasturlar Linux konteynerlari sifatida qadoqlangan. Konteynerlar keng tarqalgan standartdir, shuning uchun Kubernetes-da joylashtirilishi mumkin bo'lgan oldindan tayyorlangan ko'plab rasmlar mavjud.

Konteynerizatsiya sizga o'z-o'zidan ishlaydigan Linux ishlash muhiti yaratishga imkon beradi. Har qanday dastur va uning barcha qaramliklari bitta faylga birlashtirilib, keyin ularni Internetda bo'lishishi mumkin. Har kim konteynerni yuklab olishi va uni infratuzilmasiga joylashtirishi mumkin, buning uchun juda kam sozlash talab etiladi. Konteynerni yaratish dasturiy ravishda amalga oshirilishi mumkin, bu CI va CD quvurlarining kuchli shakllanishiga imkon beradi.

Bir nechta dasturlarni bitta konteynerga qo'shish mumkin, ammo iloji bo'lsa, har bir idishda bitta jarayon bilan cheklanishingiz kerak. Bitta katta konteynerga qaraganda ko'plab kichik idishlarga ega bo'lish yaxshiroqdir. Agar har bir idishda diqqat markazida bo'lsa, yangilanishlarni joylashtirish osonroq va muammolarni tashxislash osonroq.

Podlar

Ilgari ishlatgan boshqa tizimlardan farqli o'laroq, Kubernetes to'g'ridan-to'g'ri idishlarni ishlatmaydi; buning o'rniga u bir yoki bir nechta konteynerni pod deb nomlangan yuqori darajadagi strukturaga soladi. Bitta podadagi har qanday konteyner bir xil manbalardan va mahalliy tarmoqdan foydalanadi. Konteynerlar boshqa idishlar bilan bir xil qutida osongina bog'lanishlari mumkin, xuddi xuddi shu mashinada bo'lgani kabi, boshqalardan izolyatsiya darajasini saqlab turadilar.

Podlar Kubernetesda replikatsiya birligi sifatida ishlatiladi. Agar sizning dasturingiz juda mashhur bo'lib qolsa va bitta podstantsiya yukni ko'tarolmasa, Kubernetes sizning klasteringizga yangi nusxalarini kerak bo'lganda joylashtirishi mumkin. Kuchli yuk ostida bo'lmaganda ham, yukni muvozanatlash va ishdan chiqishga qarshilik ko'rsatish uchun ishlab chiqarish tizimida podaning har qanday vaqtda bir nechta nusxasini ishlatish odatiy holdir.

Podlar bir nechta idishni ushlab turishi mumkin, ammo iloji bo'lsa, o'zingizni cheklashingiz kerak. Qoplamalar bir birlik sifatida yuqoriga va pastga siljitilganligi sababli, idishdagi barcha idishlar, ularning shaxsiy ehtiyojlaridan qat'i nazar, bir-biridan kattalashishi kerak. Bu isrof qilingan resurslar va qimmat hisob-kitoblarga olib keladi. Buni hal qilish uchun podlar iloji boricha kichikroq bo'lishi kerak, odatda ular faqat asosiy jarayonni va mahkam bog'langan yordamchi konteynerlarni ushlab turishadi (bu yordamchi idishlar odatda "yonma-yon mashinalar" deb nomlanadi).

Joylashtirishlar

Podernetes Kubernetesda hisoblashning asosiy birligi bo'lsa-da, ular odatda to'g'ridan-to'g'ri klasterga ishga tushirilmaydi. Buning o'rniga, podslar odatda yana bir abstraktsiya qatlami tomonidan boshqariladi: joylashtirish.

Joylashtirishning asosiy maqsadi bir vaqtning o'zida necha dona podkasning ishlashini e'lon qilishdir. Joylashtirish klasterga qo'shilsa, u avtomatik ravishda kerakli sonlarni to'playdi va ularni kuzatib boradi. Agar pod o'lsa, tarqatish avtomatik ravishda uni qayta yaratadi.

Joylashtirishdan foydalanib, podlarni qo'l bilan hal qilish kerak emas. Siz shunchaki tizimning istalgan holatini e'lon qilishingiz mumkin va u avtomatik ravishda siz uchun boshqariladi.

Inqiroz

Yuqorida tavsiflangan kontseptsiyalardan foydalanib, siz tugunlar klasterini yaratishingiz va klasterga podalarni o'rnatishni boshlashingiz mumkin. Biroq, echilishi kerak bo'lgan oxirgi muammo mavjud: sizning ilovangizga tashqi trafikka ruxsat berish.

Odatiy bo'lib, Kubernetes podlar va tashqi dunyo o'rtasidagi izolyatsiyani ta'minlaydi. Agar siz podkastda ishlaydigan xizmat bilan aloqa qilmoqchi bo'lsangiz, siz aloqa uchun kanal ochishingiz kerak. Bunga ingress deyiladi.

O'zingizning klasteringizga kirishni ko'p usullari mavjud. Eng keng tarqalgan usullar - bu Ingress kontrolleri yoki LoadBalancer qo'shilishi. Ushbu ikkita variantning aniq savdolari ushbu lavozimga kirmaydi, ammo shuni bilishingiz kerakki, siz Kubernetes bilan tajriba o'tkazishdan oldin hal qilish kerak.

Keyingisi nima

Yuqorida tavsiflangan narsalar Kubernetes-ning kengaytirilgan versiyasi, ammo u sizga tajriba qilishni boshlashingiz kerak bo'lgan asoslarni berishi kerak. Tizimni tashkil etuvchi qismlarni tushunganingiz uchun endi ularni haqiqiy ilovani o'rnatish uchun ishlatadigan vaqt keldi. Kubernetes 110-ni tekshirib ko'ring: boshlash uchun birinchi joylashtirishingiz.

Mahalliy Kubernetes bilan tajriba o'tkazish uchun Minikube sizning shaxsiy qurilmangizda virtual klaster yaratadi. Agar siz bulut xizmatini sinab ko'rishga tayyor bo'lsangiz, Google Kubernetes Engine-da sizni boshlash uchun qo'llanmalar to'plami mavjud.

Agar siz konteynerlar va veb-infratuzilmalar dunyosiga yangi bo'lsangiz, men sizga 12 Faktor App metodologiyasini o'qishni taklif qilaman. Bu Kubernetes kabi muhitda ishlash uchun dasturiy ta'minotni ishlab chiqishda yodda tutish kerak bo'lgan eng yaxshi tajribalarni tavsiflaydi.

Va nihoyat, shunga o'xshash qo'shimcha tarkibni olish uchun meni O'rta va Twitter-da (@ DanSanche21) kuzatib borishingizga ishonch hosil qiling.