Kubernetesning eng yaxshi amaliyotlari. To'g'ri o'chirish Tugatish

Kubernetesning eng yaxshi amaliyotlari. Kichik konteynerlarni yaratish
Kubernetesning eng yaxshi amaliyotlari. Nomlar maydoni bilan Kubernetesni tashkil qilish
Kubernetesning eng yaxshi amaliyotlari. Kubernetes jonliligini tayyorlik va jonlilik testlari bilan tekshirish
Kubernetesning eng yaxshi amaliyotlari. Resurs so'rovlari va cheklovlarini o'rnatish

Kubernetesning eng yaxshi amaliyotlari. To'g'ri o'chirish Tugatish

Taqsimlangan tizimlarning ishlashida muhim nuqta - nosozliklarni bartaraf etish. Kubernetes tizimingizning sog'lig'ini nazorat qiluvchi va ishlamay qolgan xizmatlarni qayta ishga tushiradigan kontrollerlardan foydalanish orqali yordam beradi. Biroq, Kubernetes tizimning umumiy sog'lig'ini ta'minlash uchun ilovalaringizni majburan to'xtatishi mumkin. Ushbu turkumda biz Kubernetesga o'z ishini samaraliroq bajarishga va ilovalarning ishlamay qolish vaqtini kamaytirishga qanday yordam berishingizni ko'rib chiqamiz.

Konteynerlardan oldin ko'pgina ilovalar virtual yoki jismoniy mashinalarda ishlagan. Agar dastur ishdan chiqqan yoki qotib qolgan bo'lsa, bajarilayotgan vazifani bekor qilish va dasturni qayta yuklash uchun uzoq vaqt kerak bo'ldi. Eng yomon stsenariyda, kimdir bu muammoni tunda, eng mos bo'lmagan soatlarda qo'lda hal qilishi kerak edi. Agar faqat 1-2 ta ishlaydigan mashina muhim vazifani bajarayotgan bo'lsa, bunday buzilish mutlaqo qabul qilinishi mumkin emas edi.
Shuning uchun, qo'lda qayta yuklash o'rniga, ular g'ayritabiiy tugatilgan taqdirda dasturni avtomatik ravishda qayta ishga tushirish uchun jarayon darajasidagi monitoringdan foydalanishni boshladilar. Agar dastur muvaffaqiyatsiz bo'lsa, monitoring jarayoni chiqish kodini oladi va serverni qayta ishga tushiradi. Kubernetes kabi tizimlarning paydo bo'lishi bilan tizimdagi nosozliklarga javob berishning bunday turi oddiygina infratuzilmaga birlashtirildi.

Kubernetes resurslarning konteynerlardan tugunlarga o'tishida sog'lom bo'lishini ta'minlash uchun kuzatish-farqni-harakat qilish hodisasi tsiklidan foydalanadi.

Kubernetesning eng yaxshi amaliyotlari. To'g'ri o'chirish Tugatish

Bu endi jarayon monitoringini qo'lda ishga tushirishingiz shart emasligini anglatadi. Agar resurs Sog'liqni saqlash tekshiruvidan o'tmasa, Kubernetes uni avtomatik ravishda almashtirish bilan ta'minlaydi. Biroq, Kubernetes dasturingizni nosozliklarni kuzatishdan ko'ra ko'proq narsani qiladi. U bir nechta mashinalarda ishlash uchun ilovaning ko'proq nusxalarini yaratishi, ilovani yangilashi yoki bir vaqtning o'zida ilovangizning bir nechta versiyasini ishga tushirishi mumkin.
Shuning uchun, Kubernetes mukammal sog'lom konteynerni to'xtatishi uchun juda ko'p sabablar mavjud. Misol uchun, agar siz joylashtirishni yangilasangiz, Kubernetes asta-sekin eski podlarni to'xtatib, yangilarini ishga tushiradi. Agar siz tugunni o'chirsangiz, Kubernetes ushbu tugundagi barcha podslarni ishga tushirishni to'xtatadi. Nihoyat, agar tugun resurslari tugab qolsa, Kubernetes ushbu resurslarni bo'shatish uchun barcha podlarni o'chiradi.

Shuning uchun, sizning ilovangiz oxirgi foydalanuvchiga minimal ta'sir ko'rsatishi va minimal tiklanish vaqti bilan tugashi juda muhimdir. Bu shuni anglatadiki, o'chirishdan oldin u saqlanishi kerak bo'lgan barcha ma'lumotlarni saqlashi, barcha tarmoq ulanishlarini yopishi, qolgan ishni bajarishi va boshqa shoshilinch vazifalarni boshqarishi kerak.

Amalda, bu sizning ilovangiz Unix operatsion tizimlarida o'ldirish yordam dasturi uchun standart signal bo'lgan jarayonni tugatish signali bo'lgan SIGTERM xabarini boshqarishi kerakligini anglatadi. Ushbu xabarni olgandan so'ng, dastur o'chirilishi kerak.

Kubernetes podani tugatishga qaror qilgandan so'ng, bir qator voqealar sodir bo'ladi. Keling, konteyner yoki podani o'chirishda Kubernetesning har bir qadamini ko'rib chiqaylik.

Aytaylik, biz podkastlardan birini tugatmoqchimiz. Bu vaqtda u yangi trafikni qabul qilishni to'xtatadi - podda ishlaydigan konteynerlarga ta'sir qilmaydi, lekin barcha yangi trafik bloklanadi.

Kubernetesning eng yaxshi amaliyotlari. To'g'ri o'chirish Tugatish

Keling, preStop kancasini ko'rib chiqaylik, bu maxsus buyruq yoki poddagi konteynerlarga yuboriladigan HTTP so'rovidir. Agar SIGTERM qabul qilinganda ilovangiz toʻgʻri oʻchmasa, toʻgʻri oʻchirish uchun preStop-dan foydalanishingiz mumkin.

Kubernetesning eng yaxshi amaliyotlari. To'g'ri o'chirish Tugatish

Aksariyat dasturlar SIGTERM signalini qabul qilgandan so'ng o'z-o'zidan chiqib ketadi, lekin agar siz uchinchi tomon kodidan yoki siz to'liq nazorat qila olmaydigan tizimdan foydalanayotgan bo'lsangiz, preStop kancasi dasturni o'zgartirmasdan o'chirib qo'yishning ajoyib usuli hisoblanadi.

Ushbu kancani ishga tushirgandan so'ng, Kubernetes poddagi konteynerlarga SIGTERM signalini yuboradi va ular tez orada uzilishini bildiradi. Ushbu signalni olganingizdan so'ng, kodingiz o'chirish jarayoniga o'tadi. Bu jarayon ma'lumotlar bazasi ulanishi yoki WebSocket oqimi kabi uzoq muddatli ulanishlarni to'xtatish, joriy holatni saqlash va shunga o'xshashlarni o'z ichiga olishi mumkin.

Agar siz preStop ilgagidan foydalansangiz ham, dasturga SIGTERM signalini yuborganingizda aynan nima sodir bo'lishini va uning o'zini qanday tutishini tekshirish juda muhim, shunda pod yopilishi natijasida yuzaga kelgan hodisalar yoki tizim ishidagi o'zgarishlar ro'y bermasligi uchun. sizga ajablanib.

Bu vaqtda Kubernetes keyingi harakatlarni amalga oshirishdan oldin terminationGracePeriodSecond deb ataladigan ma’lum vaqtni yoki SIGTERM signalini olgandan so‘ng sekin o‘chirish davrini kutadi.

Kubernetesning eng yaxshi amaliyotlari. To'g'ri o'chirish Tugatish

Odatiy bo'lib, bu muddat 30 soniya. Shuni ta'kidlash kerakki, u preStop kancasi va SIGTERM signali bilan parallel ishlaydi. Kubernetes preStop kancasi va SIGTERM tugashini kutmaydi - agar sizning arizangiz TerminationGracePeriod tugashidan oldin chiqsa, Kubernetes darhol keyingi bosqichga o'tadi. Shuning uchun, bu davrning soniyalardagi qiymati podni to'g'ri o'chirish uchun zarur bo'lgan vaqtdan kam emasligini tekshirib ko'ring va agar u 30 s dan oshsa, davrni YAMLda kerakli qiymatga oshiring. Keltirilgan misolda bu 60 lar.

Va nihoyat, oxirgi qadam, agar konteynerlar terminationGracePerioddan keyin ham ishlayotgan bo'lsa, ular SIGKILL signalini yuboradi va majburan o'chiriladi. Shu nuqtada, Kubernetes boshqa barcha pod obyektlarini ham tozalaydi.

Kubernetesning eng yaxshi amaliyotlari. To'g'ri o'chirish Tugatish

Kubernetes ko'plab sabablarga ko'ra podlarni tugatadi, shuning uchun barqaror xizmatni ta'minlash uchun ilovangiz har qanday holatda ham chiroyli tarzda tugatilishiga ishonch hosil qiling.

Kubernetesning eng yaxshi amaliyotlari. Tashqi xizmatlarni xaritalash

Ba'zi reklamalar 🙂

Biz bilan qolganingiz uchun tashakkur. Bizning maqolalarimiz sizga yoqdimi? Ko'proq qiziqarli tarkibni ko'rishni xohlaysizmi? Buyurtma berish yoki do'stlaringizga tavsiya qilish orqali bizni qo'llab-quvvatlang, 4.99 dollardan boshlab ishlab chiquvchilar uchun bulutli VPS, Siz uchun biz tomonidan ixtiro qilingan boshlang'ich darajadagi serverlarning noyob analogi: VPS (KVM) E5-2697 v3 (6 yadroli) 10GB DDR4 480GB SSD 1Gbps 19 dollardan yoki serverni qanday almashish haqida butun haqiqat? (RAID1 va RAID10, 24 tagacha yadro va 40 Gb gacha DDR4 bilan mavjud).

Amsterdamdagi Equinix Tier IV ma'lumotlar markazida Dell R730xd 2 baravar arzonmi? Faqat shu yerda 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 televizor 199 dollardan Gollandiyada! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - 99 dollardan! Haqida o'qing Infratuzilma korporatsiyasini qanday qurish kerak. bir tiyinga 730 evroga teng Dell R5xd E2650-4 v9000 serverlaridan foydalanish bilan sinf?

Manba: www.habr.com

a Izoh qo'shish