Kubernetes Ən Yaxşı Təcrübələri. Düzgün bağlama dayandırın

Kubernetes Ən Yaxşı Təcrübələri. Kiçik konteynerlərin yaradılması
Kubernetes Ən Yaxşı Təcrübələri. Ad sahəsi ilə Kubernetes təşkilatı
Kubernetes Ən Yaxşı Təcrübələri. Hazırlıq və Canlılıq Testləri ilə Kubernetes Sağlamlığının yoxlanılması
Kubernetes Ən Yaxşı Təcrübələri. Resurs tələblərinin və limitlərinin təyin edilməsi

Kubernetes Ən Yaxşı Təcrübələri. Düzgün bağlama dayandırın

Paylanmış sistemlərin işində mühüm məqam uğursuzluqların aradan qaldırılmasıdır. Kubernetes sisteminizin sağlamlığına nəzarət edən və işləməyi dayandıran xidmətləri yenidən işə salan nəzarətçilərdən istifadə etməklə buna kömək edir. Bununla belə, Kubernetes ümumi sistemin sağlamlığını təmin etmək üçün tətbiqlərinizi zorla dayandıra bilər. Bu seriyada biz Kubernetes-ə işini daha səmərəli yerinə yetirməyə və tətbiqin dayanma müddətini azaltmağa necə kömək edə biləcəyinizi nəzərdən keçirəcəyik.

Konteynerlərdən əvvəl əksər proqramlar virtual və ya fiziki maşınlarda işləyirdi. Tətbiq qəzaya uğrayıbsa və ya donubsa, icra olunan tapşırığı ləğv etmək və proqramı yenidən yükləmək uzun müddət çəkdi. Ən pis vəziyyətdə, kimsə bu problemi gecə, ən uyğun olmayan saatlarda əl ilə həll etməli idi. Cəmi 1-2 işləyən maşın vacib bir işi yerinə yetirirdisə, belə bir pozulma tamamilə yolverilməz idi.
Buna görə də, əl ilə yenidən yükləmələr əvəzinə, anormal xitam halında tətbiqi avtomatik olaraq yenidən başlatmaq üçün proses səviyyəsində monitorinqdən istifadə etməyə başladılar. Proqram uğursuz olarsa, monitorinq prosesi çıxış kodunu tutur və serveri yenidən işə salır. Kubernetes kimi sistemlərin yaranması ilə sistem nasazlıqlarına bu cür cavab sadəcə infrastruktura inteqrasiya olundu.

Kubernetes, ehtiyatların konteynerlərdən qovşaqların özlərinə keçdiyi zaman sağlam qalmasını təmin etmək üçün müşahidə-fərqi-fəaliyyət göstərmə hadisə dövrəsindən istifadə edir.

Kubernetes Ən Yaxşı Təcrübələri. Düzgün bağlama dayandırın

Bu o deməkdir ki, artıq prosesin monitorinqini əl ilə həyata keçirməyə ehtiyac yoxdur. Resurs Sağlamlıq Yoxlanışında uğursuz olarsa, Kubernetes onu sadəcə olaraq avtomatik olaraq əvəzedici ilə təmin edəcək. Bununla belə, Kubernetes tətbiqinizi uğursuzluqlar üçün izləməkdən daha çox şey edir. Birdən çox maşında işləmək, tətbiqi yeniləmək və ya tətbiqinizin birdən çox versiyasını eyni vaxtda işə salmaq üçün tətbiqin daha çox nüsxəsini yarada bilər.
Buna görə də, Kubernetesin mükəmməl sağlam konteyneri dayandıra bilməsinin bir çox səbəbi var. Məsələn, yerləşdirmənizi təkmilləşdirsəniz, Kubernetes yenilərini işə salarkən köhnə podları yavaş-yavaş dayandıracaq. Bir nodu bağlasanız, Kubernetes həmin qovşaqda bütün podların işləməsini dayandıracaq. Nəhayət, əgər node resursları tükənərsə, Kubernetes həmin resursları boşaltmaq üçün bütün podları bağlayacaq.

Buna görə də, tətbiqinizin son istifadəçiyə minimal təsir və minimum bərpa müddəti ilə başa çatması çox vacibdir. Bu o deməkdir ki, bağlanmadan əvvəl o, saxlanması lazım olan bütün məlumatları saxlamalı, bütün şəbəkə bağlantılarını bağlamalı, qalan işləri tamamlamalı və digər təcili tapşırıqları idarə etməlidir.

Praktikada bu o deməkdir ki, tətbiqiniz Unix əməliyyat sistemlərində kill utiliti üçün standart siqnal olan prosesin dayandırılması siqnalı olan SIGTERM mesajını idarə edə bilməlidir. Bu mesajı aldıqdan sonra proqram bağlanmalıdır.

Kubernetes podu dayandırmaq qərarına gəldikdən sonra bir sıra hadisələr baş verir. Gəlin bir konteyner və ya podu bağlayarkən Kubernetesin atdığı hər addıma nəzər salaq.

Tutaq ki, biz podlardan birini dayandırmaq istəyirik. Bu zaman o, yeni trafikin qəbulunu dayandıracaq - podda işləyən konteynerlər təsirlənməyəcək, lakin bütün yeni trafik bloklanacaq.

Kubernetes Ən Yaxşı Təcrübələri. Düzgün bağlama dayandırın

Poddakı konteynerlərə göndərilən xüsusi əmr və ya HTTP sorğusu olan preStop çəngəlinə baxaq. SIGTERM-i qəbul edərkən tətbiqiniz düzgün bağlanmırsa, düzgün şəkildə bağlamaq üçün preStop-dan istifadə edə bilərsiniz.

Kubernetes Ən Yaxşı Təcrübələri. Düzgün bağlama dayandırın

Əksər proqramlar SIGTERM siqnalı aldıqda zərif şəkildə çıxacaqlar, lakin əgər siz üçüncü tərəf kodundan və ya tam nəzarət etmədiyiniz bəzi sistemlərdən istifadə edirsinizsə, preStop çəngəl tətbiqi dəyişmədən zərif söndürməyə məcbur etmək üçün əla bir yoldur.

Bu qarmağı yerinə yetirdikdən sonra Kubernetes poddakı konteynerlərə SIGTERM siqnalı göndərərək, onların tezliklə əlaqəsinin kəsiləcəyini bildirəcək. Bu siqnalı aldıqdan sonra kodunuz bağlanma prosesinə keçəcək. Bu prosesə verilənlər bazası bağlantısı və ya WebSocket axını kimi hər hansı uzunömürlü əlaqələrin dayandırılması, cari vəziyyətin saxlanması və s. daxil ola bilər.

PreStop çəngəlindən istifadə etsəniz belə, SIGTERM siqnalı göndərdiyiniz zaman tətbiqinizə tam olaraq nə baş verdiyini və onun necə davrandığını yoxlamaq çox vacibdir ki, podun bağlanması nəticəsində baş verən hadisələr və ya sistemin işində dəyişikliklər baş verməsin. sənə sürpriz.

Bu nöqtədə, Kubernetes əlavə tədbirlər görməzdən əvvəl terminationGracePeriodSecond adlanan müəyyən bir vaxtı və ya SIGTERM siqnalını aldıqda zərif şəkildə bağlanma müddətini gözləyəcək.

Kubernetes Ən Yaxşı Təcrübələri. Düzgün bağlama dayandırın

Varsayılan olaraq bu müddət 30 saniyədir. Qeyd etmək lazımdır ki, o, preStop çəngəl və SIGTERM siqnalı ilə paralel işləyir. Kubernetes preStop çəngəlinin və SIGTERM-in bitməsini gözləməyəcək - əgər ərizəniz TerminationGracePeriod bitməmişdən əvvəl çıxsa, Kubernetes dərhal növbəti mərhələyə keçəcək. Buna görə də, bu müddətin saniyələrlə dəyərinin podun düzgün bağlanması üçün tələb olunan vaxtdan az olmadığını yoxlayın və 30 saniyədən çox olarsa, müddəti YAML-də istədiyiniz dəyərə qədər artırın. Verilən nümunədə 60-dır.

Və nəhayət, son addım odur ki, əgər konteynerlər terminationGracePerioddan sonra hələ də işləyirsə, onlar SIGKILL siqnalı göndərəcək və zorla silinəcək. Bu zaman Kubernetes bütün digər pod obyektlərini də təmizləyəcək.

Kubernetes Ən Yaxşı Təcrübələri. Düzgün bağlama dayandırın

Kubernetes bir çox səbəbə görə podları dayandırır, buna görə də sabit xidmət təmin etmək üçün tətbiqinizin istənilən halda zərif şəkildə dayandırıldığından əmin olun.

Kubernetes ən yaxşı təcrübələri. Xarici xidmətlərin xəritələşdirilməsi

Bəzi reklamlar 🙂

Bizimlə qaldığınız üçün təşəkkür edirik. Məqalələrimiz xoşunuza gəlirmi? Daha maraqlı məzmun görmək istəyirsiniz? Sifariş verməklə və ya dostlarınıza tövsiyə etməklə bizə dəstək olun, developers üçün bulud VPS 4.99 dollardan, Sizin üçün bizim tərəfimizdən icad edilmiş giriş səviyyəli serverlərin unikal analoqu: VPS (KVM) E5-2697 v3 (6 nüvəli) 10GB DDR4 480GB SSD 1Gbps haqqında 19 dollardan bütün həqiqət və ya serveri necə paylaşmaq olar? (RAID1 və RAID10, 24 nüvəyə qədər və 40 GB DDR4 ilə mövcuddur).

Dell R730xd Amsterdamdakı Equinix Tier IV məlumat mərkəzində 2 dəfə ucuzdur? Yalnız burada 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV 199$-dan başlayan qiymətlərlə Hollandiyada! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - 99 dollardan! haqqında oxuyun İnfrastruktur korporasiyasını necə qurmaq olar. bir qəpik üçün 730 avro dəyərində Dell R5xd E2650-4 v9000 serverlərinin istifadəsi ilə sinif?

Mənbə: www.habr.com

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