What Does Kubernetes Actually Do?
Kubernetes aslida nima qiladi?
Katta dengiz portini tasavvur qiling: har kuni minglab konteyner kemalardan tushiriladi, va ularni qaysi yuk mashinasiga, qachon yuklashni odam QO'LDA hal qilsa nima bo'ladi? Bitta kran ishdan chiqsa, kimdir buni payqab, ishni boshqa kranga qayta yo'naltirishi kerak. Talab birdan oshsa, kimdir qo'shimcha ishchi va texnika chaqirishi kerak. Endi tasavvur qiling — bu portda avtomatik boshqaruv tizimi bor: siz shunchaki "menda har doim 5 ta konteyner tayyor turishi kerak" deysiz, tizimning O'ZI esa kran ishdan chiqsa avtomatik almashtiradi, talab oshsa ko'proq resurs taqsimlaydi. Kubernetes — dasturiy konteynerlar uchun aynan shu avtomatik boshqaruv tizimi.
"Docker for Go Developers" kursida bitta konteynerni bitta kompyuterda qo'lda ishga tushirishni (docker run) o'rgangan edingiz. Lekin production muhitda bitta emas — o'nlab, yuzlab konteyner, ko'plab serverlarda birga ishlaydi. Server o'chib qolsa — kim buni payqaydi va konteynerlarni boshqa serverga ko'chiradi? Trafik keskin oshsa — kim ko'proq nusxa ishga tushiradi? Yangi versiya chiqarilganda — kim eskisini xizmatni to'xtatmasdan, asta-sekin yangisiga almashtiradi? Bularning barchasini QO'LDA kuzatib turish, o'nlab serverlik klasterda, amalda IMKONSIZ. Kubernetes — aynan shu muammoni hal qiluvchi container orchestration (konteynerlarni boshqarish) tizimi.
Siz AYTASIZ ("desired state" — xohlangan holat):
"Men bu ilovadan har doim 5 ta nusxa ishlashini xohlayman"
Kubernetes DOIM buni ta'minlashga harakat qiladi ("actual state" — joriy holat):
4 nusxa qoldimi? -> yana 1 tasini yaratadi
6 nusxa bo'lib qoldimi? -> ortiqchasini o'chiradi
server o'chib qoldimi? -> o'sha yerdagi nusxalarni boshqa serverda qayta yaratadi
Bu tsikl — "kuzat, solishtir, harakat qil" — butun Kubernetes'ning yuragi,
va bu kursda "The Reconciliation Loop Pattern" darsida uni o'zingiz yozasiz.- •Pod — bir yoki bir nechta konteynerdan iborat, birga joylashtiriladigan eng kichik birlik
- •ReplicaSet — belgilangan sondagi Pod nusxasini doim ishlab turishini ta'minlaydi
- •Deployment — ReplicaSet'lar orasida bosqichma-bosqich yangilanishni (rolling update) boshqaradi
- •Service — Pod'lar o'zgarib tursa ham, ularga murojaat qilish uchun BARQAROR nom/manzil beradi
- •Node — konteynerlar jismonan ishlaydigan bitta server (mashina)
- •Scheduler — har bir Pod'ni QAYSI Node'ga joylashtirishni hal qiladi
- •Controller — "kuzat, solishtir, harakat qil" tsiklini bajaradigan umumiy naqsh
- •Namespace — bitta klaster ichida resurslarni mantiqiy guruhlarga ajratadi
- •ConfigMap & Secret — konfiguratsiya va maxfiy ma'lumotlarni koddan ajratib saqlaydi
Diqqat: bizning interaktiv o'quv muhitimiz haqiqiy Kubernetes klasterini, kubectlni yoki client-go kutubxonasini ishga tushira olmaydi (xuddi "Docker for Go Developers" kursida haqiqiy Docker dvigatelini ishga tushira olmagani kabi). Shuning uchun bu kursning ASOSIY qismida siz Kubernetes'ning ichki g'oyalarini — Pod, ReplicaSet, Scheduler va boshqalarni — o'zingiz, sof Go bilan, noldan qayta yaratasiz. Faqat haqiqiy YAML fayllar, kubectl buyruqlari va klasterning o'zigagina xos ichki ishlash tafsilotlariga bag'ishlangan darslar "faqat o'qish uchun" formatida bo'ladi.
Key Takeaway
Key Takeaway:
Kubernetes — siz AYTGAN "xohlangan holat"ni (masalan, "5 ta nusxa ishlasin") doimiy ravishda joriy holat bilan solishtirib, ular orasidagi farqni avtomatik BARTARAF qiluvchi boshqaruv tizimi; bu kursda siz uning asosiy qismlarini o'zingiz Go'da qurib, ichida qanday ishlashini tushunasiz.
NEXT UP
Pod: The Smallest Unit