Kubernetes: açıq mənbə və satıcıya xas

Salam, mənim adım Dmitri Krasnovdur. Beş ildən artıqdır ki, mən Kubernetes klasterlərini idarə edirəm və mürəkkəb mikroservis arxitekturaları qururam. Bu ilin əvvəlində biz Containerum-a əsaslanan Kubernetes klasterlərinin idarə edilməsi xidmətini işə saldıq. Bu fürsətdən istifadə edərək, sizə Kubernetes-in nə olduğunu və satıcı ilə inteqrasiyanın açıq mənbədən nə ilə fərqləndiyini söyləyəcəyəm.

Başlamaq üçün, nədir Kubernetes. Bu, çox sayda hostda konteynerləri idarə etmək üçün bir sistemdir. Yeri gəlmişkən, yunan dilindən "pilot" və ya "sükançı" kimi tərcümə olunur. Əvvəlcə Google tərəfindən hazırlanmış və sonra dünyanın aparıcı tərtibatçılarını, son istifadəçilərini və konteyner texnologiyası təminatçılarını bir araya gətirən beynəlxalq qeyri-kommersiya təşkilatı olan Cloud Native Computing Foundation-a texnologiya töhfəsi olaraq bağışlanmışdır.

Kubernetes: açıq mənbə və satıcıya xas

Çox sayda konteyneri idarə edin

İndi bunların hansı qablar olduğunu anlayaq. Bu, bütün mühiti olan bir tətbiqdir - əsasən proqramın asılı olduğu kitabxanalar. Bütün bunlar arxivlərdə qablaşdırılır və əməliyyat sistemindən asılı olmayaraq işlədilə bilən, sınaqdan keçirilə bilən və s. şəkil şəklində təqdim olunur. Ancaq bir problem var - çox sayda hostda konteynerləri idarə etmək çox çətindir. Buna görə Kubernetes yaradıldı.

Konteyner şəkli tətbiqi və onun asılılıqlarını təmsil edir. Tətbiq, onun asılılıqları və OS fayl sisteminin təsviri təsvirin müxtəlif hissələrində, sözdə təbəqələrdə yerləşir. Laylar müxtəlif konteynerlər üçün təkrar istifadə edilə bilər. Məsələn, şirkətdəki bütün proqramlar Ubuntu baza qatından istifadə edə bilər. Konteynerləri işlədərkən, hostda bir əsas təbəqənin birdən çox nüsxəsini saxlamağa ehtiyac yoxdur. Bu, təsvirin saxlanmasını və çatdırılmasını optimallaşdırmağa imkan verir.

Tətbiqi konteynerdən işə salmaq istədikdə, lazımi təbəqələr bir-birinin üstünə qoyulur və üst-üstə düşən fayl sistemi yaranır. Üstünə bir qeyd təbəqəsi qoyulur, konteyner dayandıqda çıxarılır. Bu, konteyner işlədiyi zaman tətbiqin həmişə dəyişdirilə bilməyən eyni mühitə malik olmasını təmin edir. Bu, müxtəlif host OS-lərdə ətraf mühitin təkrar istehsalına zəmanət verir. İstər Ubuntu və ya CentOS olsun, mühit həmişə eyni olacaq. Bundan əlavə, konteyner Linux nüvəsinə quraşdırılmış mexanizmlərdən istifadə edərək hostdan təcrid olunur. Konteynerdəki proqramlar faylları, hostun proseslərini və qonşu konteynerləri görmür. Tətbiqlərin ana OS-dən bu şəkildə təcrid edilməsi əlavə təhlükəsizlik səviyyəsini təmin edir.

Hostda konteynerləri idarə etmək üçün çoxlu alətlər mövcuddur. Onlardan ən populyarı Docker-dir. Bu, konteynerlərin tam həyat dövrünü təmin etməyə imkan verir. Bununla belə, yalnız bir hostda işləyir. Birdən çox hostda konteynerləri idarə etmək lazımdırsa, Docker mühəndislər üçün həyatı cəhənnəmə çevirə bilər. Buna görə Kubernetes yaradıldı.

Kubernetes-ə olan tələbat, bir növ tək varlıq kimi birdən çox hostda konteyner qruplarını idarə etmək qabiliyyəti ilə bağlıdır. Sistemin populyarlığı, bu DevOps-un proseslərini idarə etmək üçün Kubernetes-in istifadə edildiyi DevOps və ya İnkişaf Əməliyyatları qurmaq imkanı verir.

Kubernetes: açıq mənbə və satıcıya xas

Şəkil 1. Kubernetesin necə işlədiyinin sxematik təsviri

Tam avtomatlaşdırma

DevOps əsasən inkişaf prosesinin avtomatlaşdırılmasıdır. Təxminən desək, tərtibatçılar depoya yüklənən kodu yazır. Sonra bu kod avtomatik olaraq bütün kitabxanaları olan konteynerə yığıla, sınaqdan keçirilə və növbəti mərhələyə - Səhnələşdirməyə, sonra isə dərhal İstehsala "yatırıla" bilər.

Kubernetes ilə birlikdə DevOps bu prosesi avtomatlaşdırmağa imkan verir ki, o, tərtibatçıların özlərinin praktiki olaraq heç bir iştirakı olmadan baş versin. Bununla əlaqədar olaraq, tərtibat əhəmiyyətli dərəcədə daha sürətli olur, çünki tərtibatçı bunu kompüterində etməli deyil - o, sadəcə bir kod parçası yazır, kodu depoya itələyir, bundan sonra prosesi əhatə edə bilən boru kəməri işə salınır. qurmaq, sınaqdan keçirmək və yaymaq. Və bu, hər öhdəçiliklə baş verir, buna görə də sınaq davamlı olaraq baş verir.

Eyni zamanda, konteynerdən istifadə bu proqramın bütün mühitinin sınaqdan keçirildiyi formada istehsala buraxılacağına əmin olmağa imkan verir. Yəni “testdə bəzi versiyalar var idi, digərləri istehsalda idi, amma biz onları quraşdıranda hər şey düşdü” kimi problemlər olmayacaq. Və bu gündən mikroservis arxitekturasına doğru meylimiz var, bir nəhəng proqram əvəzinə yüzlərlə kiçik tətbiq olduqda, onları əl ilə idarə etmək üçün böyük bir işçi heyəti tələb olunacaq. Buna görə biz Kubernetes-dən istifadə edirik.

Müsbətlər, üstünlüklər, üstünlüklər


Kubernetes-in bir platforma kimi üstünlükləri haqqında danışsaq, o zaman mikroservis arxitekturasının idarə olunması baxımından əhəmiyyətli üstünlüklərə malikdir.

  • Çoxsaylı replikaların idarə edilməsi. Ən vacib şey konteynerləri birdən çox hostda idarə etməkdir. Daha da əhəmiyyətlisi, konteynerlərdə birdən çox tətbiq replikasını tək bir qurum kimi idarə edin. Bunun sayəsində mühəndislər hər bir konteyner üçün narahat olmayacaqlar. Konteynerlərdən biri qəzaya uğrasa, Kubernetes bunu görəcək və yenidən işə salacaq.
  • Klaster şəbəkəsi. Kubernetes də öz ünvan sahəsinə malik sözdə klaster şəbəkəsinə malikdir. Bunun sayəsində hər podun öz ünvanı var. Subpod konteynerlərin birbaşa işə salındığı klasterin minimum struktur vahidi kimi başa düşülür. Bundan əlavə, Kubernetes yük balanslaşdırıcısını və Xidmət Kəşfini birləşdirən funksionallığa malikdir. Bu, əl ilə IP ünvan idarəetməsindən qurtulmağa və bu tapşırığı Kubernetes-ə həvalə etməyə imkan verir. Avtomatik sağlamlıq yoxlamaları problemləri aşkar etməyə və trafiki işləyən podlara yönləndirməyə kömək edəcək.
  • Konfiqurasiyanın idarə edilməsi. Çox sayda tətbiqi idarə edərkən, proqram konfiqurasiyasını idarə etmək çətinləşir. Bu məqsədlə Kubernetes xüsusi ConfigMap resurslarına malikdir. Onlar konfiqurasiyaları mərkəzləşdirilmiş şəkildə saxlamağa və proqramları işləyərkən onları podlara ifşa etməyə imkan verir. Bu mexanizm bizə ən azı on və ya yüz tətbiq replikasında konfiqurasiyanın ardıcıllığına zəmanət verməyə imkan verir.
  • Davamlı həcmlər. Konteynerlər təbii olaraq dəyişməzdir və konteyner dayandırıldıqda fayl sisteminə yazılan bütün məlumatlar məhv ediləcək. Lakin bəzi proqramlar məlumatları birbaşa diskdə saxlayır. Bu problemi həll etmək üçün Kubernetes disk yaddaşının idarə edilməsi funksiyasına malikdir - Persistent Volumes. Bu mexanizm məlumat üçün xarici yaddaşdan istifadə edir və davamlı yaddaşı, bloku və ya faylı konteynerlərə köçürə bilər. Bu həll sizə məlumatları işçilərdən ayrı saxlamağa imkan verir ki, bu da eyni işçilər sıradan çıxdıqda onları saxlayır.
  • Yük balanslaşdırıcısı. Kubernetes-də biz Yerləşdirmə, StatefulSet və s. kimi mücərrəd obyektləri idarə etsək də, nəticədə konteynerlər adi virtual maşınlarda və ya hardware serverlərində işləyir. Onlar mükəmməl deyillər və hər an düşə bilərlər. Kubernetes bunu görəcək və daxili trafiki digər replikalara yönləndirəcək. Bəs kənardan gələn trafiklə nə etməli? Əgər siz sadəcə olaraq trafiki işçilərdən birinə yönəltsəniz, qəza baş verərsə, xidmət əlçatan olacaq. Bu problemi həll etmək üçün Kubernetes-də Load Balancer kimi xidmətlər var. Onlar klasterdəki bütün işçilər üçün xarici bulud balanslaşdırıcısını avtomatik konfiqurasiya etmək üçün hazırlanmışdır. Bu xarici balanslaşdırıcı xarici trafiki işçilərə yönəldir və onların vəziyyətinə özü nəzarət edir. Bir və ya bir neçə işçi əlçatmaz olarsa, trafik başqalarına yönləndirilir. Bu, Kubernetes istifadə edərək yüksək əlçatan xidmətlər yaratmağa imkan verir.

Kubernetes mikroservis arxitekturasını işlədən zaman ən yaxşı işləyir. Sistemi klassik arxitekturaya tətbiq etmək mümkündür, lakin mənasızdır. Tətbiq birdən çox replikada işləyə bilmirsə, onda nə fərqi var - Kubernetes-də, ya yox?

Açıq mənbə Kubernetes


Açıq mənbəli Kubernetes əla bir şeydir: mən onu quraşdırdım və işləyir. Siz onu öz hardware serverlərinizdə, öz infrastrukturunuzda yerləşdirə, bütün proqramların işləyəcəyi ustaları və işçiləri quraşdıra bilərsiniz. Ən əsası isə bütün bunlar pulsuzdur. Bununla belə, nüanslar var.

  • Birincisi, bütün bunları yerləşdirəcək və dəstəkləyəcək idarəçilərin və mühəndislərin bilik və təcrübə tələbidir. Müştəri klasterdə tam fəaliyyət azadlığı əldə etdiyinə görə, o, klasterin icrasına cavabdehdir. Və burada hər şeyi pozmaq çox asandır.
  • İkincisi, inteqrasiyanın olmamasıdır. Kubernetes-i məşhur virtuallaşdırma platforması olmadan işlədirsinizsə, proqramın bütün üstünlüklərini əldə etməyəcəksiniz. Davamlı Həcmlər və Yük balansı xidmətlərindən istifadə kimi.

Kubernetes: açıq mənbə və satıcıya xas

Şəkil 2. k8s memarlığı

Satıcıdan Kubernetes


Bulud provayderi ilə inteqrasiya iki variant təqdim edir:

  • Birincisi, bir şəxs sadəcə olaraq “klaster yarat” düyməsini sıxaraq artıq konfiqurasiya edilmiş və istifadəyə hazır olan klaster əldə edə bilər.
  • İkincisi, satıcı özü klasteri quraşdırır və buludla inteqrasiyanı qurur.

Burada necə olur. Klasteri işə salan mühəndis ona neçə işçi lazım olduğunu və hansı parametrlərlə (məsələn, hər biri 5 CPU, 10 GB operativ yaddaş və məsələn, 16 GB disk olan 100 işçi) dəqiqləşdirir. Bundan sonra artıq formalaşmış klasterə giriş əldə edir. Bu halda, yükün işə salındığı işçilər tamamilə müştəriyə verilir, lakin bütün idarəetmə müstəvisi satıcının məsuliyyəti altında qalır (xidmət idarə olunan xidmət modelinə uyğun olaraq verilirsə).

Ancaq bu sxemin çatışmazlıqları var. İdarəetmə təyyarəsinin satıcıda qalması səbəbindən satıcı müştəriyə tam giriş imkanı vermir və bu, Kubernetes ilə işləməkdə çevikliyi azaldır. Bəzən elə olur ki, müştəri Kubernetes-ə bəzi xüsusi funksionallıq əlavə etmək istəyir, məsələn, LDAP vasitəsilə autentifikasiya, lakin idarəetmə planının konfiqurasiyası buna imkan vermir.

Kubernetes: açıq mənbə və satıcıya xas

Şəkil 3. Bulud provayderindən Kubernetes klasterinin nümunəsi

Nə seçmək lazımdır: açıq mənbə və ya satıcı


Beləliklə, Kubernetes açıq mənbə və ya satıcıya xasdır? Əgər açıq mənbəli Kubernetes-i götürsək, istifadəçi onunla istədiyini edir. Ancaq özünü ayağından vurmaq şansı böyükdür. Satıcı ilə bu daha çətindir, çünki hər şey şirkət üçün düşünülmüş və konfiqurasiya edilmişdir. Açıq mənbəli Kubernetes-in ən böyük çatışmazlığı mütəxəssislərə olan tələbdir. Satıcı seçimi ilə şirkət bu başağrısından qurtulsa da, öz mütəxəssislərinə, yoxsa satıcıya pul ödəməli olacağına qərar verməli olacaq.

Kubernetes: açıq mənbə və satıcıya xas

Kubernetes: açıq mənbə və satıcıya xas

Yaxşı, müsbət tərəfləri göz qabağındadır, mənfi cəhətləri də məlumdur. Bir şey sabitdir: Kubernetes bir çox konteynerin idarə edilməsini avtomatlaşdıraraq bir çox problemi həll edir. Hansı birini seçmək, açıq mənbə və ya satıcı - hər kəs öz qərarını verir.

Məqalə #CloudMTS provayderinin Konteyner xidmətinin aparıcı memarı Dmitri Krasnov tərəfindən hazırlanmışdır.

Mənbə: www.habr.com

Добавить комментарий