Павел
Səviyyə
Docker, Kubernetes, OpenShift kimdir və onlar bir-biri ilə necə əlaqəlidirlər?
Hamısı qablaşdırma ilə başlayır. Sənaye inkişafında, yığılmış tətbiqetməni, məsələn, işləyəcəyi serverə, tərtibatçının kompüterində yığdığı formada, belə bir "qablaşdırmada" ötürülə bilməsi üçün "qablaşdırma" ehtiyacı var. bir növ qoruma rolunu oynamalıdır. Bu, sınaq zamanı tətbiqin işləməsi kimi sürprizləri aradan qaldırır, lakin istehsala köçürüldükdə pozulur. Həmçinin, “qablaşdırma” eyni serverdə yerləşən bir proqramı digərindən təcrid edir, belə izolyasiya bir proqrama digərinin işinə mane olmamağa imkan verir (məsələn: bir proqram serverin bütün operativ yaddaşını ələ keçirə bilməyəcək, taleyinə ikinci müraciət). Mikroservis arxitekturası ilə "qablaşdırmanın" üstünlükləri xüsusilə nəzərə çarpır və bu başa düşüləndir; bir çox mikroxidmətlər var - bir-biri ilə əlaqə qurmalı, lakin eyni zamanda bir-birinə müdaxilə etməməli olan çoxlu kiçik proqramlar. Nümunə olaraq bir komod (server) göstərmək olar ki, orada çoxlu müxtəlif çekmeceler var və biz müxtəlif corabları bir çekmecedən digərinə asanlıqla köçürə bilərik və eyni zamanda onlar bir-birinə və ya qısa tuman ilə qarışmayacaqlar. Qablaşdırma virtuallaşdırma vasitələri ilə yaradılmışdır. Bir zamanlar virtual maşınlar (VM) “qablaşdırma” kimi istifadə olunurdu. Yaşlı insanlar Windows XP-ni Vista-da virtual maşında necə yerləşdirdiklərini xatırlayacaqlar. İndi proqramların qablaşdırılması üçün VM keçmişdə qaldı. Konteynerlər dünyanı zəbt etdi. Çünki onlar: daha yüngül, daha məhsuldar və daha təhlükəsizdirlər. Daha ətraflı: konteyner virtual maşından nə ilə fərqlənir? Konteynerlərin bəzi üstünlüklərini xatırlamaq lazımdır: • onlar daha kiçik ölçülüdür (serverdə daha az yaddaş tutur); • paylaşılan server resurslarına (RAM, prosessorun hesablama vaxtı) çıxış imkanı; • digər mühitlərə (sınaqdan sənayeyə qədər) daha yaxşı daşınma qabiliyyətinə malikdir; • daha yüksək işə salınma sürətini təmin edin (konteyner yüngül olduğundan, daha sürətli işə salınır). Docker konteynerlərin anasıdır. Konteyner deyəndə Docker nəzərdə tutulur. Docker, konteynerləşdirilmiş mühitlərdə tətbiqlərin yerləşdirilməsi və idarə edilməsini avtomatlaşdırmaq üçün proqramdır. Nümunələrdən istifadə edərək, Docker onlayn dizayner və kranı olan 3D printer arasında keçiddir. Yəni o, əvvəlcə konteyner üçün şablon (şəkil) tərtib edə, qabı verilmiş şərtlərə (şəklə) uyğun çap etdirə (yaradıb), sonra lazım olan yerə köçürə bilər. Levers əvəzinə dockerfiles istifadə olunur. İdarəetmə prosesi sadədir: siz faylları, əmrləri yazırsınız, onları işlədirsiniz və nə baş verdiyini görürsünüz. Docker Docker Compose ilə ilk tanışlıq - təkmilləşdirilmiş Docker İndi bir yerdə birdən çox konteynerin işləməsi lazım olan ssenariyə baxaq. Bunun üçün istifadə olunan yardım proqramı Docker Compose-dir. Docker Compose Docker-ə daxil olan bir vasitədir. Layihənin yerləşdirilməsi ilə bağlı problemləri həll etmək üçün nəzərdə tutulmuşdur. Docker və Docker Compose arasındakı fərq: Docker fərdi konteynerləri idarə etmək üçün istifadə olunur. Docker Compose eyni vaxtda birdən çox konteyneri idarə etmək üçün istifadə olunur. Bu alət Docker ilə eyni imkanları təklif edir, lakin daha mürəkkəb strukturlarla işləməyə imkan verir. Docker Compose istifadə etmək üçün tipik ssenari: Təsəvvür edin ki, siz veb layihəsinin tərtibatçısısınız. Bu layihəyə iki internet saytı daxildir. Birincisi, iş adamlarına bir neçə kliklə onlayn mağazalar yaratmağa imkan verir. İkincisi müştəri dəstəyinə yönəlib. Bu iki sayt eyni verilənlər bazası ilə qarşılıqlı əlaqədədir. Layihəniz getdikcə populyarlaşır və məlum olur ki, onun işlədiyi serverin gücü artıq kifayət etmir. Nəticədə, bütün layihəni başqa bir maşına köçürmək qərarına gəldiniz. Docker Compose kimi bir şey istifadə etməmisinizsə, bu prosesdə heç nəyi unutmayacağınıza ümid edərək konteynerləri bir-bir köçürməli və yenidən konfiqurasiya etməli olacaqsınız. Docker Compose istifadə edirsinizsə, o zaman layihənizi yeni serverə köçürmək bir neçə əmri yerinə yetirməklə həll edilə bilən məsələdir. Layihənin yeni bir yerə köçürülməsini başa çatdırmaq üçün yalnız bəzi parametrlər etmək və verilənlər bazasının ehtiyat nüsxəsini yeni serverə yükləmək lazımdır. Tipik DockerComposer: Burada yadda saxlamağınız lazımdır: Konteynerlər “qablaşdırma” proqramları üçün əsas vasitədir. Docker konteynerləri idarə edir, konteyner şəkilləri yaradır, konteynerləri götürür və hərəkət etdirir. Bir dəstə konteyneri eyni vaxtda idarə etmək üçün Docker-ə daxil olan Docker Compose istifadə olunur. Bu proqramlar pulsuz proqramlardır (pulsuz proqramlar - bir sözlə) Kubernetes (K8s) - Docker avtomatlaşdırılması Və beləliklə, biz konteynerləri yerləşdirdik, biz onları maşından maşına "toplu şəkildə" necə köçürəcəyimizi bilirik. Ancaq birdən konteynerlərdən biri düşdü! Nə etməli? Onu yenidən kim qaldıracaq? Əlbəttə ki, bunu Docker vasitəsilə əl ilə edə bilərsiniz. Ancaq nəsə etmək, nəsə yazmaq lazımdır, bir növ avtomatlaşdırma alətinə ehtiyacınız var. Burada Kubernetes (qısaldılmış K8s) şəkilə girir, o, həmçinin konteynerlərin idarə edilməsi və orkestrasiyası (əlaqəli qurumların avtomatlaşdırılmış idarə edilməsi) ilə məşğul olacaq. K8-lərin ixtiyarınızda olması ilə siz gecə-gündüz konteynerlərə nəzarət etmək lazım deyil. Davranış ssenarisini müəyyən etmək kifayətdir və K8-lər hər şeyi özü edəcək. Kubernetes-in əsas xüsusiyyətləri 1. Konfiqurasiyanızın miqyasını və idarə olunmasını təmin edir. 2. Siz klasteri yerləşdirərkən əldə etmək istədiyinizi təsvir edə bilərsiniz və K8-lər bunu edəcək. Məsələn, podların sayını göstərin, onlar üçün nə qədər yaddaş ayrılacağını, podlarda yerləşdirilmiş (konteynerlərdə) tətbiqlərin replikalarının (nümunələrinin) sayını göstərin. 3. Sistemin müəyyən bir vəziyyətdə saxlanmasına cavabdehdir, əgər bir şey düşərsə, K8-lər müəyyən edilmiş konfiqurasiyaya uyğun olaraq onu götürəcəkdir. Burada yadda saxlamağınız lazım olan şey: Kubernetes konteynerləşdirilmiş tətbiqləri idarə etmək üçün bir vasitədir - onların klasterdə yerləşdirilməsini, miqyasını və koordinasiyasını avtomatlaşdırır. Docker daxil olmaqla əsas konteynerləşdirmə texnologiyalarını dəstəkləyir. K8s açıq mənbəli proqramdır. OpenShift virtualizasiya dünyasında bir Ferraridir, sərin, sürətli və bahalı Mövzunu inkişaf etdirərək, OpenShift-ə keçək. OpenShift əlavə funksiyalar təklif edən Kubernetes əlavəsidir. O, dərhal istifadəyə hazırdır, uzun və ağrılı konfiqurasiya tələb etmir və dərhal istehsala buraxıla bilər. Görün Kubernetesin üstündə nə qədər müxtəlif nişanlar var. Və onların hər biri öz gözəl işlərlə məşğul olur. OpenShift vurğulayır: • K8-lərdən fərqli olaraq ödənişli məhsuldur; • Qutudan çıxarılan DevOps, əsas mavi/yaşıl, kanareyka yerləşdirmə ssenariləri üçün dəstək; • Quraşdırılmış Jenkins dəstəyi; • Klasterin idarə edilməsi və onunla işləmək üçün rahat alətlər təqdim edir; • Daha ciddi təhlükəsizlik modelinə və daxili monitorinqə malikdir. OpenShift-in Kubernetes-dən fərqli olaraq pullu məhsul olduğunu bir daha vurğulamağa dəyər. Fərq budur: çılpaq Kubernetes götürsək, bütün problemləri özümüz həll edirik. OpenShift haqqında danışsaq, bu, pullu dəstəyin bir hissəsi kimi ortaya çıxan problemləri həll edən Red Hat məhsuludur. Xülasə edək: Sənaye inkişafında tətbiqi “paketləşdirməyə” ehtiyac var, bu yanaşma mikroservis arxitekturasında xüsusilə aktualdır. Konteynerlər qablaşdırma tətbiqlərinin əsas vasitəsidir. Docker konteynerləri idarə edir, konteyner şəkilləri yaradır, konteynerləri götürür və hərəkət etdirir. Bir dəstə konteyneri eyni vaxtda idarə etmək üçün Docker-ə daxil olan Docker Compose istifadə olunur. Bu proqramlar pulsuz proqramlardır. Kubernetes(K8s) konteynerləşdirilmiş tətbiqləri təşkil etmək üçün alətdir - onların klasterdə yerləşdirilməsi, miqyası və koordinasiyası avtomatlaşdırılması. Docker daxil olmaqla əsas konteynerləşdirmə texnologiyalarını dəstəkləyir. K8s açıq mənbəli proqramdır. OpenShift Kubernetes-ə əlavə funksionallıq təklif edən əlavədir. Bu, K8-lərdən fərqli olaraq, korporativ istifadə üçün nəzərdə tutulmuş ödənişli məhsuldur. Qutudan kənar DevOps təmin edir: əsas yerləşdirmə ssenariləri üçün dəstək mavi/yaşıl, kanareyka, Jenkins üçün daxili dəstəyə malikdir və klasteri idarə etmək və onunla işləmək üçün rahat alətlər təqdim edir. Daha ciddi təhlükəsizlik modelinə və daxili monitorinqə malikdir. Kod yazmağa can atanlar üçün: Spring Boot proqramını konteynerə paketləyin Postgres-i Docker-də necə yerləşdirmək və Spring-Boot proqramına qoşulmaq Webinar: Docker - Konteynerlərlə necə işləmək olar? — Java-da backend inkişafı
GO TO FULL VERSION