Google bo'yicha konteynerlardan foydalanish bo'yicha 7 ta eng yaxshi amaliyot

Eslatma. tarjima.: Asl maqola muallifi Teo Chamley, Google Cloud Solutions Architect. Google Cloud blogi uchun ushbu postda u o'z kompaniyasining "" deb nomlangan batafsil qo'llanmasining qisqacha mazmunini taqdim etadi.Konteynerlarni ishlatish bo'yicha eng yaxshi amaliyotlar" Unda Google mutaxassislari Google Kubernetes Engine va boshqalardan foydalanish kontekstida konteynerlarni ishlatish boβ€˜yicha ilgβ€˜or tajribalarni toβ€˜plab, keng koβ€˜lamli mavzularga toβ€˜xtalib oβ€˜tishdi: xavfsizlikdan tortib monitoring va jurnalga kirishgacha. Xo'sh, Google ma'lumotlariga ko'ra eng muhim konteyner amaliyotlari qanday?

Google bo'yicha konteynerlardan foydalanish bo'yicha 7 ta eng yaxshi amaliyot

Kubernetes dvigateli (Google Cloud-da konteynerlangan ilovalarni ishga tushirish uchun Kubernetesga asoslangan xizmat - taxminan. tarjima) miqyosi talab qilinadigan ish yuklarini bajarishning eng yaxshi usullaridan biridir. Kubernetes agar ular konteynerlangan bo'lsa, aksariyat ilovalarning uzluksiz ishlashini ta'minlaydi. Ammo agar siz ilovangizni boshqarish oson bo'lishini istasangiz va Kubernetes-dan to'liq foydalanmoqchi bo'lsangiz, eng yaxshi amaliyotlarga amal qilishingiz kerak. Ular ilovaning ishlashini, uning monitoringini va disk raskadrovkasini soddalashtiradi, shuningdek, xavfsizlikni oshiradi.

Ushbu maqolada biz Kubernetes-da konteynerlarni samarali ishlatish uchun bilishingiz va qilish kerak bo'lgan narsalar ro'yxatini ko'rib chiqamiz. Tafsilotlarga chuqurroq kirishni istaganlar materialni o'qishlari kerak Konteynerlarni ishlatish bo'yicha eng yaxshi amaliyotlar, shuningdek, bizning e'tibor oldingi post konteynerlarni yig'ish haqida.

1. Mahalliy konteyner jurnali mexanizmlaridan foydalaning

Agar dastur Kubernetes klasterida ishlayotgan bo'lsa, jurnallar uchun ko'p narsa kerak emas. Markazlashtirilgan ro'yxatga olish tizimi siz foydalanayotgan klasterga allaqachon o'rnatilgan bo'lishi mumkin. Kubernetes Engine-dan foydalanilganda, bu javobgardir Stackdriver jurnali. (Eslatma. tarjima.: Va agar siz o'zingizning Kubernetes o'rnatishingizdan foydalansangiz, biz Ochiq manba yechimimizni diqqat bilan ko'rib chiqishni tavsiya qilamiz - yog'och uy.) Hayotingizni sodda tuting va mahalliy konteyner qayd qilish mexanizmlaridan foydalaning. Stdout va stderr-ga jurnallarni yozing - ular avtomatik ravishda qabul qilinadi, saqlanadi va indekslanadi.

Agar xohlasangiz, jurnallarni ham yozishingiz mumkin JSON formati. Ushbu yondashuv ularga metadata qo'shishni osonlashtiradi. Va ular bilan Stackdriver Logging ushbu metama'lumotlardan foydalangan holda jurnallar orqali qidirish imkoniyatiga ega bo'ladi.

2. Konteynerlarning fuqaroligi yoβ€˜qligi va oβ€˜zgarmasligiga ishonch hosil qiling

Konteynerlar Kubernetes klasterida to'g'ri ishlashi uchun ular fuqaroligi bo'lmagan va o'zgarmas bo'lishi kerak. Ushbu shartlar bajarilgandan so'ng, Kubernetes o'z ishini bajarishi, kerak bo'lganda va qaerda dastur ob'ektlarini yaratishi va yo'q qilishi mumkin.

Fuqaroligi yo'q har qanday holat (har qanday turdagi doimiy ma'lumotlar) konteynerdan tashqarida saqlanishini anglatadi. Buning uchun ehtiyojlarga qarab, har xil turdagi tashqi xotiradan foydalanish mumkin: Bulutli saqlash, Doimiy disklar, Redis, Bulutli SQL yoki boshqa boshqariladigan ma'lumotlar bazalari. (Eslatma. tarjima.: Bu haqda ko'proq maqolamizda o'qing "Kubernetes uchun operatorlar: davlat dasturlarini qanday ishga tushirish kerak".)

O'zgarmas konteyner ishlash muddati davomida o'zgartirilmasligini anglatadi: yangilanishlar, yamalar, konfiguratsiya o'zgarishlari yo'q. Agar ilova kodingizni yangilashingiz yoki yamoqni qo'llashingiz kerak bo'lsa, yangi rasm yarating va uni joylashtiring. Konteyner konfiguratsiyasini (tinglash porti, ish vaqti muhiti opsiyalari va h.k.) tashqariga ko'chirish tavsiya etiladi. sirlari ΠΈ ConfigMaps. Ular yangi konteyner tasvirini yaratmasdan yangilanishi mumkin. Rasmlarni yig'ish bilan quvurlarni osongina yaratish uchun siz foydalanishingiz mumkin Cloud Build. (Eslatma. tarjima.: Ushbu maqsadlar uchun biz ochiq manba vositasidan foydalanamiz toza.)

Google bo'yicha konteynerlardan foydalanish bo'yicha 7 ta eng yaxshi amaliyot
Konfiguratsiya sifatida podkalarga o'rnatilgan ConfigMap yordamida Kubernetes-da joylashtirish konfiguratsiyasini yangilash misoli

3. Imtiyozli konteynerlardan saqlaning

Siz ilovalarni serverlaringizda ildiz sifatida ishlatmaysiz, to'g'rimi? Agar tajovuzkor dasturga kirsa, u ildizga kirish huquqiga ega bo'ladi. Xuddi shu mulohazalar imtiyozli konteynerlarni ishga tushirmaslik uchun ham amal qiladi. Agar siz xost sozlamalarini o'zgartirishingiz kerak bo'lsa, siz konteynerni aniq belgilashingiz mumkin Qobiliyatlari opsiyasidan foydalanish securityContext Kubernetesda. Agar o'zgartirish kerak bo'lsa sysctls, Kubernetes bor alohida abstrakt Buning uchun. Umuman olganda, undan maksimal darajada foydalanishga harakat qiling init- va shunga o'xshash imtiyozli operatsiyalarni bajarish uchun yonbosh konteynerlari. Ular ichki yoki tashqi trafik uchun ochiq bo'lishi shart emas.

Agar siz klasterni boshqarsangiz, foydalanishingiz mumkin Pod xavfsizlik siyosati imtiyozli konteynerlardan foydalanish bo'yicha cheklovlar uchun.

4. Ildiz sifatida ishlashdan saqlaning

Imtiyozli konteynerlar allaqachon muhokama qilingan, ammo bunga qo'shimcha ravishda konteyner ichidagi ilovalarni ildiz sifatida ishga tushirmasangiz, yanada yaxshi bo'ladi. Agar tajovuzkor ildiz huquqlariga ega dasturda kodni bajarishga imkon beruvchi masofaviy zaiflikni topsa, shundan so'ng u hali noma'lum zaiflik orqali konteynerni tark eta oladi, u hostda ildiz otadi.

Bunga yo'l qo'ymaslikning eng yaxshi usuli, birinchi navbatda, hech narsani ildiz sifatida ishlatmaslikdir. Buning uchun siz direktivadan foydalanishingiz mumkin USER Π² Dockerfile yoki runAsUser Kubernetesda. Klaster ma'muri, shuningdek, foydalanish tartibini sozlashi mumkin Pod xavfsizlik siyosati.

5. Ilovani kuzatishni oson qiling

Jurnal kabi, monitoring ilovalarni boshqarishning ajralmas qismidir. Kubernetes hamjamiyatidagi mashhur monitoring yechimi Prometheus - monitoringni talab qiladigan pods va xizmatlarni avtomatik aniqlaydigan tizim. (Eslatma. tarjima.: Shuningdek qarang batafsil hisobot Prometey va Kubernetes yordamida monitoring mavzusida.) Stackdriver Kubernetes klasterlarini kuzatish imkoniyatiga ega va ilovalarni kuzatish uchun Prometeyning o'z versiyasini o'z ichiga oladi.

Google bo'yicha konteynerlardan foydalanish bo'yicha 7 ta eng yaxshi amaliyot
Stackdriver-dagi Kubernetes boshqaruv paneli

Prometey ilovadan ko'rsatkichlarni HTTP so'nggi nuqtasiga yuborishini kutadi. Buning uchun mavjud Prometey mijozlar kutubxonalari. Xuddi shu format boshqa vositalar tomonidan qo'llaniladi OpenCensus ΠΈ Istio.

6. Ilovaning salomatlik holatini mavjud qiling

Ishlab chiqarishda ilovalarni boshqarish uning holatini butun tizimga etkazish qobiliyati bilan yordam beradi. Ilova ishlayaptimi? Yaxshimi? Trafikni qabul qilishga tayyormisiz? U o'zini qanday tutmoqda? Ushbu muammoni hal qilishning eng keng tarqalgan usuli - sog'liqni saqlashni tekshirish (sog'liqni tekshirish). Kubernetes ikki turga ega: jonlilik va tayyorgarlik problari.

Jonli zond uchun (hayotiylikni tekshirish) ilova funktsional bo'lsa va uning asosiy bog'liqliklari qanoatlansa, "200 OK" javobini qaytaradigan HTTP so'nggi nuqtasiga ega bo'lishi kerak. Tayyorlik tekshiruvi uchun (xizmatga tayyorlikni tekshirish) ilova sog'lom holatda bo'lsa, ishga tushirish bosqichlari bajarilgan bo'lsa va har qanday to'g'ri so'rov xatolikka olib kelmasa, ilova "200 OK" javobini qaytaradigan boshqa HTTP so'nggi nuqtasiga ega bo'lishi kerak. Kubernetes faqat ushbu tekshiruvlarga muvofiq dastur tayyor bo'lsa, trafikni konteynerga yo'naltiradi. Agar jonlilik va tayyorlik holatlari o'rtasida farq bo'lmasa, ikkita so'nggi nuqta birlashtirilishi mumkin.

Bu haqda batafsil ma'lumotni Google'dan dasturchi advokati Sandeep Dineshning tegishli maqolasida o'qishingiz mumkin: "Kubernetesning eng yaxshi amaliyotlari: Tayyorlik va tiriklik problari yordamida sog'liqni saqlash tekshiruvlarini o'rnatish".

7. Tasvir versiyasini diqqat bilan tanlang

Aksariyat ommaviy va shaxsiy rasmlarda tasvirlanganga o'xshash teglash tizimi qo'llaniladi Konteynerlarni qurish bo'yicha eng yaxshi amaliyotlar. Agar tasvir yaqin tizimdan foydalansa semantik versiyalash, teglashning o'ziga xos xususiyatlarini hisobga olish kerak. Masalan, teg latest tez-tez tasvirdan rasmga o'tishi mumkin - agar bashorat qilinadigan va takrorlanadigan tuzilmalar va o'rnatishlar kerak bo'lsa, bunga ishonib bo'lmaydi.

Siz tegdan foydalanishingiz mumkin X.Y.Z (ular deyarli har doim o'zgarmaydi), lekin bu holda, tasvirning barcha yamoqlari va yangilanishlarini kuzatib boring. Agar siz foydalanayotgan rasmda teg bo'lsa X.Y, bu oltin o'rtacha uchun yaxshi variant. Uni tanlab, siz avtomatik ravishda yamoqlarni olasiz va shu bilan birga dasturning barqaror versiyasiga tayanasiz.

Tarjimondan PS

Shuningdek, bizning blogimizda o'qing:

Manba: www.habr.com

a Izoh qo'shish