Salam dostlar,
Bu məqalədə sizə "Kubernetes" haqqında bəhs edəcəm. Kubernetes nədir? Bu barədə kiçik bir giriş vermək istərdim. Beləliklə:
Kubernetes, həm nəqli konfiqurasiyanı, həm avtomatlaşdırmanı, həm də konteynerləşdirilmiş iş yükü və xidmətlərini təmin edən və "manual" proseslərin avtomatlaşdırılmasını həyata keçirən açıq mənbəli bir platformadır. Xidmətləri, dəstək və vasitələri geniş yayılmış Kubernetes əhatəli və sürətlə böyüyən bir ekosistemə malikdir. Kubernetes yunan dilindən tərcümədə "sükançı" (qayıq, gəmini idarə edən) və ya "pilot" anlamını ifadə edir. Kubernetes qısaca olaraq "k8s" (K-u1-b2-e3-r4-n5-e6-t7-e8-s, ilk "k" hərfindən son "s" hərfinə olan "8" hərf "ubernete" olduğu üçün k8s) və ya "kube" kimi də adlandırılır. Kubernetes "Go" proqramlaşdırma dilində yazılmış və 2014-cü ildə "Google" şirkəti tərəfindən "open-source" kimi təqdim edilmişdir.
Dostlar, keçmişə səhayət və keçmiş ilə indiki dövrü müqayisə edərək, Kubernetes-in niyə bu qədər əlverişli və faydalı olduğunu bilmək istərdinizmi?! O zaman aşağıdakı şəkildə olan keçmiş və indiki dövrü özündə əks etdirən müqayisəli izaha başlayaq.
"Traditional deployment" dövrü: Bu dövrü ənənəvi dövr adlandırmaq olar. Hansı ki, bu dövrdə şirkətlər, idarələr, müəssisələr və s. ənənəvi olaraq fiziki server-lərdən istifadə edirdilər. Bu zaman, maliyyə imkanları yüksək olan bəzi böyük şirkətlər həddindən artıq maliyyə xərcləri çəkərək tətbiqlərin mükəmməl, fasiləsiz işləməsi və sistemin stabilliyinin təmin edilməsi, iş yükünün asan bölüşdürülməsi və s. istiqamətində hər bir tətbiq üçün ayrıca bir fiziki server və əməliyyat sistemi qurmaq məcburiyyətində qalırdılar. Maliyyə imkanları az olan bəzi şirkət və müəssisələr isə tətbiqləri bir fiziki server-də istifadə edirdilər ki, bu zaman bir tətbiqin funksionallığı bütün fiziki server-in resurslarını həddindən artıq əhatə edirdisə, bu da eyni fiziki server-də yer alan digər tətbiqlərin funksionallığına öz mənfi təsirini göstərmiş olurdu.
"Virtualized deployment" dövrü: Ənənəvi dövrə nisbətən bu dövr daha məqsədə uyğun dövr hesab olunur və bu dövrü virtuallaşdırma dövrü kimi adlandırsaq, fikrimcə heç də yanılmarıq. Bu zaman virtualizasiya anlayışı meydana gəldi ki, ənənəvi dövrdə olan hər bir fiziki server üçün ayrıca əməliyyat sistemi qurub, üzərində tətbiqlər həyata keçirməkdənsə, (əhatəli və geniş resurslara malik) bir fiziki server üzərində virtualizasiya qurub, həmin virtualizasiya üzərində də bir çox virtual maşınlar (VM) yaradaraq, müxtəlif tətbiqlərin həyata keçirilməsini təmin etmək mümkün olurdu. Bu zaman hər bir virtual maşını əməliyyat sistemi daxil olmaqla, bütün komponentləri virtualizasiya edilmiş cihazın üzərində işləyən bütöv bir maşın fərz etmək olar.
Container deployment dövrü: Bu dövrü konteynerləşdirmə dövrü adlandırmaq olar. Virtual maşına (VM) bənzəyən konteyner, əməliyyat sistemini tətbiqetmələr arasında bölüşmək üçün izolyasiya xüsusiyyətlərinə malikdir və həmçinin virtual maşın kimi hər bir konteynerin öz fayl sistemi, mərkəzi nüvə payı, yaddaş, (hesablama) emal sahəsi və s. vardır. Konteynerlər əsas (fiziki) infrastrukturdan ayrıldıqları üçün "cloud" və "distribution"-lar arasında daşına bilir. Beləliklə, konteynerlər bu günümüzdə verdikləri aşağıdakı əlavə xüsusiyyətlərinə və istifadəsinə görə virtualizasiyadan daha çox məhşur olmuşdur:
- Tətbiqetmənin asan, sürətli yaradılması və yerləşdirilməsi: VM "image" ilə müqayisədə konteyner-də "image" yaradılmasının daha asan və səmərəli olması;
- Davamlı inkişaf, inteqrasiya və yerləşdirmə: Konteyner sürətli və effektiv "rollback" ilə etibarlı "image" qurmağı və yerləşdirilməni təmin edir;
- Dev və Ops-un ayrılması (Dev-Development və Ops-Operations): Proqram inkişaf nəticəsində sərbəst buraxıldıqda, konteynerə çevrilir. Daha sonra konteyner müvafiq infrastruktura yerləşdirilir ki, bu zaman tətbiqlər infrastrukturdan ayrılır;
- Tətbiqi müşahidələr yalnız əməliyyat sistemi səviyyəsində məlumatları və metrikləri deyil, sağlamlığı və digər göstəriciləri da səthə çıxarır;
- İnkişaf, sınaq və istehsalda ətraf mühitin tutarlılığı və uyğunluğu: "Cloud"-da olduğu kimi fiziki olaraq kompüterdə də eyni şəkildə işləyir;
- Cloud və əməliyyat sisteminin portativliyi (daşınması): "Ubuntu", "RHEL", "CoreOS" "cloud" ilə yanaşı "on premise" kimi daxili (fiziki) mühitdə də işləyir;
- Tətbiqi mərkəzli idarəetmə: Tətbiqləri inkişaf etdirərkən, tətbiqetmənin işləyəcəyi virtual maşınların yerləşməsi, tətbiqetmələrin bir-birləri əlaqə qurması və idarə olunmasına diqqət yetirilir;
- Mikroservislər: Proqramlar monolitik toplum kimi deyil, böyük bir maşın üzərində işləyir və daha kiçik, müstəqil hissələrə bölünür, eləcə də proqramlar dinamik şəkildə yerləşdirilə və idarə edilə bilər;
- Resurs izolyasiyası: Proqnozlaşdırılan tətbiqetmə performansı;
- Resursdan istifadə: Yüksək effektivlik və intensivlik.
Kubernetes istifadəçilərə hansı üstünlükləri verir?
- Böyüyən ekosistemi nəzarət altında saxlamağa, sistemdə axtardığınız hər bir məlumatı saniyələr içərisində tapmağa imkan verir;
- Proqramı istifadə edərək tətbiqlərinizdə baş verən problemləri qısa müddətdə həll edə bilərsiniz;
- Proqram sayəsində "cloud"-dakı yük balanslarına nəzarət edə və anbarınızı daim nəzarət altında saxlaya bilərsiniz;
- Kubernetes hibrid "cloud" texnologiyasını da dəstəklədiyindən, fərqli nöqtələrə keçməyinizi və konteynerlərinizi nəql etməyinizi təmin edir. Beləliklə, sürətli bir şəkildə inteqrasiya prosesi imkanı əldə etdiyiniz üçün birdən çox mühitdə işləmək fürsəti də əldə edirsiniz;
- Sistem sayəsində tətbiqlərin yeniləmələrini nəzarət altında saxlaya, proqram ilə versiya keçidlərini idarə edə, eləcə də bu zaman qaynaqlanan hər hansı bir problemi qısa müddətdə aradan qaldıra bilərsiniz. Bu şəkildə hər bir proqram üçün ayrıca bir nəzarət prosesi olmadığından vaxtınıza qənaət etmiş olursunuz;
- Kubernetes, tətbiqlərdə çatışmazlıqlar aşkar etdikdən sonra işi sizə həvalə etmədən avtomatik düzəlişlərə başlayır ki, bu zaman işiniz heç bir fasilə vermədən sağlam və effektiv bir şəkildə davam edir.
Beləliklə, dünyada texnoloji inkişaf sürətlə gedir və bu baxımdan Kubernetes artan yüklərin öhdəsindən gəlmək üçün istifadə edilməli bir vasitəyə çevrilir. Artan iş qabiliyyəti ilə bəzi böyük şirkət və idarələrin bu yükləri təkbaşına idarə etməsi çox çətin olduğundan Kubernetes, konteynerlərimizi və tətbiqlərimizi daha asan idarə etməyimizə kömək edir. Konteynerlər tətbiqləri toplamaq və idarə etmək üçün yaxşı bir yoldur. Bir konteyner sönərsə, başqa bir konteyner dərhal fəaliyyətə başlamalıdır. Beləliklə, Kubernetes tam olaraq paylanmış sistemləri sürətli şəkildə idarə etmək üçün bir çərçivə təqdim edir ki, bu da Kubernetes-in iş funksiyasının tam və xüsusi olmasını təşkil edir. Kubernetes-in ilk və ən vacib funksiyası, istifadəçilərin "cloud" -da işlərinin optimallaşdırmasına imkan verməkdir. Bu da, konteynerlərdə işi asanlaşdırır və ən böyük istifadə sahələrindən biri olan "cloud" -dakı konteynerlərdə mövcud olan tətbiqləri asanlıqla idarə etmək mümkün olur. Əslində, Kubernetes "Docker" xaricindəki konteyner mühərriklərini də dəstəkləyir ki, məhz bu səbəbdən də konteyner texnologiyası ilə uyğun şəkildə işləyir. Konteyner texnologiyası qısa müddətdə böyük yüklərin daşınması, hətta "petabayt" həcmində yer tutan yüklərin istifadəsi və idarə olunması üçün istifadə olunan bir texnologiyadır. Bununla birlikdə, konteynerin də həcmi həddindən artıq böyüyə bilər və bu zaman konteynerə nəzarət etmək çətinləşə bilər ki, irihəcmli konteynerlərin asan və effektiv idarə edilməsi üçün Kubernetes texnologiyası ortaya çıxdı.
Dostlar,
Fikrimcə, Kubernetes haqqında məqalənin ilk (I) hissəsində bu qədər, növbəti (II) hissədə Kubernetes haqqında daha da dərin və müfəssəl məlumatları sizə təqdim edəcəm. Güman edirəm ki, məqalə bilgilənmə istiqamətində işinizə yarayacaqdır.
Təşəkkür edirəm və uğurlar!
Hörmətlə,
Müəllif
Araz Əhmədov
Comments
Post a Comment