Kubernetesning eng yaxshi 10 ta fokuslari va maslahatlari

Kubernetesning eng yaxshi 10 ta fokuslari va maslahatlari

Internetda ko'plab ma'lumotnomalar mavjud, ammo ba'zida eng oddiy maslahat eng qimmatlidir. Jamoa Mail.ru dan Kubernetes aaS tarjima qilingan o'nta fokuslar va maslahatlar tanloviMaqola muallifi Kubernetes bilan bir yil ishlagandan keyin to'plagan. Maslahatlar ahamiyatiga qarab tartiblanmagan, lekin biz har kim o'zi uchun foydali narsani topadi deb o'ylaymiz.

Kubernetes bilan ishlash uchun eng oddiy buyruq

Boshlash uchun, ehtimol Kubernetes bilan ishlashda eng oddiy va eng foydali harakat. Quyidagi buyruq buyruqni bajarishga imkon beradi kubectl bash qobig'ida:

echo "source <(kubectl completion bash)" >> ~/.bashrc

Avtomatik to'ldirish kubectl .bashrc fayliga yoziladi va har safar qobiq ishga tushirilganda avtomatik ravishda faollashadi. Bu kabi uzun buyruqlar va parametrlarni yozishni tezlashtiradi all-namespaces. Batafsil ma'lumot Kubernetes bash yordami.

Nom maydonidagi standart xotira va protsessor chegaralari

Agar dastur noto'g'ri yozilgan bo'lsa, masalan, u har soniyada ma'lumotlar bazasiga yangi ulanishni ochadi, lekin uni hech qachon yopmaydi, demak, klasterda xotira sızıntısı mavjud. Va agar dasturni joylashtirish vaqtida o'rnatilgan xotira chegarasi bo'lmasa, bu tugunning ishdan chiqishiga olib kelishi mumkin.

Buning oldini olish uchun Kubernetes har bir nom maydoni asosida standart cheklovlarni o'rnatishga imkon beradi. Ular yaml faylida ma'lum bir nom maydoni uchun yozilgan. Mana shunday faylga misol:

apiVersion: v1
kind: LimitRange
metadata:
  name: mem-limit-range
spec:
  limits:
  - default:
      memory: 512Mi
    defaultRequest:
      memory: 256Mi
    type: Container

Bunday yaml yarating va har qanday nom maydoniga qo'llang. Masalan, nomlar maydoniga limit-example. Endi ushbu nom maydonida joylashtirilgan har qanday konteyner 512Mi chegarasiga ega bo'ladi, agar bu konteyner uchun boshqa individual chegara qo'shimcha ravishda o'rnatilmagan bo'lsa.

Kubernetesning eski versiyalarida axlat yig'ish

Kubelet sukut bo'yicha qachon axlat yig'ishni boshlaydi var/lib/docker mavjud disk maydonining 90% ni egallaydi. Bu juda yaxshi, ammo Kubernetes 1.7 ga qadar fayl tizimidagi fayllar soniga mos keladigan inodelar soni bo'yicha sukut bo'yicha cheklov yo'q edi.

Potentsial sizning konteyneringiz var/lib/docker disk maydonining atigi 50 foizini ishlatishi mumkin, lekin inodelar tugashi mumkin, bu esa ishchilar uchun muammo tug'diradi.

Kubeletning 1.4 dan 1.6 gacha eski versiyalarida siz ushbu bayroqni qo'shishingiz kerak bo'ladi:

--eviction-hard
=memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%

1.7 va undan keyingi versiyalarda bu bayroq sukut bo'yicha o'rnatiladi. Biroq, oldingi versiyalar inode chegarasini kuzatmaydi.

Minikube... kichik, ammo kuchli mahalliy Kubernetes

Minikube - mahalliy Kubernetes klasterini boshqarishning eng oson yo'li. U oddiy buyruq bilan ishga tushiriladi:

minikube start

Ushbu buyruqni bajarish sizning kompyuteringizda haqiqiy Kubernetes klasterini ishga tushiradi.

Kubernetesning eng yaxshi 10 ta fokuslari va maslahatlari
Tasviriy manba

Gap shundaki, dasturni qanday yaratish va uni ushbu klasterda mahalliy sifatida ishga tushirish. Agar maxsus ko'rsatma berilmasa, Docker tasviri klasterda emas, balki sizning kompyuteringizda yaratiladi.

Dockerni rasmni mahalliy Kubernetes klasteriga surish uchun majburlash uchun docker mashinasiga quyidagi buyruq beriladi:

eval $(minikube docker-env)

Endi biz mahalliy Kubernetes klasterida ilovalar yaratishimiz mumkin.

Kubectl-ga hammaga ruxsat bermang

Bu aniq ko'rinadi, lekin agar bir nechta jamoalar o'zlarining ilovalari uchun bir xil klasterdan foydalansalar (Kubernetes shu uchun yaratilgan), siz shunchaki hammaga bermasligingiz kerak. kubectl. Buyruqlarni ajratish, ularning har biriga o'z nom maydonini belgilash va RBAC siyosati yordamida kirishni cheklash yaxshiroqdir.

Har bir pod uchun kirish, o'qish, yaratish, o'chirish va boshqa operatsiyalarga huquqlar berish orqali siz chalkashib ketishingiz mumkin. Lekin asosiysi, sirlarga kirishni cheklash, unga faqat ma'murlarga ruxsat berish. Shunday qilib, biz klasterni boshqara oladiganlar va unga oddiygina joylashtira oladiganlar o'rtasida farq qilamiz.

Pod byudjetlarini boshqarish

Kubernetes klasteridagi ilovaning ishlamay qolishini qanday ta'minlash mumkin? PodDisruptionBudget va yana PodDisruptionBudget.

Klasterlar vaqti-vaqti bilan yangilanadi va tugunlar bo'shatiladi. Hech narsa to'xtamaydi, bu haqiqat. Bir nechta nusxaga ega har bir joylashtirish PDB (PodDisruptionBudget) ni o'z ichiga olishi kerak. U klasterga qo'llaniladigan oddiy yaml faylida yaratilgan. Muayyan PDB ning qamrov maydoni yorliq selektorlari tomonidan belgilanadi.

Eslatma: PDB byudjeti faqat byudjet buzilishi qaytarilsagina hisobga olinadi (ixtiyoriy buzilish). Uskuna nosozliklari kabi holatlarda PDB ishlamaydi.

Misol PDB:

apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
  name: app-a-pdb
spec:
  minAvailable: 2
  selector:
      matchLabels:
        app: app-a

Ikkita asosiy parametr matchLabels и minAvailable. Birinchi parametr byudjet qaysi ilovalarga tegishli ekanligini ko'rsatadi. Misol uchun, agar menda teglar bilan tarqatishlar bo'lsa app: app-a и app: app-b, keyin bu PDB faqat birinchisiga qo'llaniladi.

Parametr minAvailable tugunni bo'shatishda (tozalashda) hisobga olinadi. Misol uchun, bizning misolimizda, bo'shatish paytida barcha misollar chiqariladi app: app-a, ikkitadan tashqari.

Bu sizga istalgan vaqtda dasturning qancha nusxasi ishlashi kerakligini nazorat qilish imkonini beradi.

Ilova salomatligi monitoringi

Bunday monitoring ikki yo'l bilan mumkin: Tayyorlik yoki Jonlilik testlari yordamida.

Birinchi zond (tayyorlik) konteynerning trafikni qabul qilishga tayyorligini aniqlaydi.

Ikkinchisi (jonlilik) konteynerning sog'lom yoki qayta ishga tushirilishi kerakligini ko'rsatadi.

Tegishli konfiguratsiyalar tarqatish uchun yamlga oddiygina qo'shiladi. U erda siz tanaffuslar, kechikish vaqtlari va qayta sinovlar sonini belgilashingiz mumkin. Ular haqida batafsil ma'lumotni ko'ring Kubernetes hujjatlari.

Teglar hamma joyda

Yorliqlar Kubernetesdagi asosiy tushunchalardan biridir. Ular ob'ektlarning bir-biri bilan erkin muloqot qilishiga, shuningdek, teglar asosida so'rovlar yaratishga imkon beradi. Kubernetes-da siz hatto mijozga borib, ma'lum teglar uchun voqealarni tomosha qilishingiz mumkin.

Teglar bilan deyarli hamma narsani qilishingiz mumkin, ammo yaxshi misol, bir xil klasterda dasturlarni ishga tushirish uchun bir nechta muhit yaratishdir.

Aytaylik, siz bir xil klasterdan foydalanasiz dev и qa. Bu sizning arizangiz bo'lishi mumkinligini anglatadi app-a, bir vaqtning o'zida ikkala muhitda ishlaydi qa и dev. Bunday holda, biz tegishli parametrni ko'rsatib, ma'lum bir muhitda dastur namunasiga alohida kirishimiz mumkin environment. Masalan, app: app-a и environment: dev bir muhit uchun va app: app-a и environment: qa ikkinchisi uchun.

Bu sizga ilovaning ikkala nusxasiga kirish imkonini beradi, masalan, bir vaqtning o'zida test o'tkazish uchun.

Tartibga solin

Kubernetes - bu juda kuchli tizim, ammo har qanday tizim oxir-oqibat juda ko'p jarayonlar bilan bog'liq bo'lishi mumkin. Kubelet siz ko'rsatgan barcha jarayonlar va tekshiruvlarni, shuningdek, o'zinikini boshqaradi.

Albatta, bitta yetim xizmat tizimni sekinlashtirmaydi va Kubernetes boshidan boshlab kengayish uchun mo'ljallangan. Ammo agar bitta xizmat o'rniga million paydo bo'lsa, kubelet bo'g'ilib keta boshlaydi.

Agar biron sababga ko'ra siz joylashtirishni (konteyner, rasm, nima bo'lishidan qat'iy nazar) o'chirib tashlasangiz, to'liq tozalashni amalga oshirganingizga ishonch hosil qiling.

Go bilan tanishing

Biz asosiy maslahatni oxirigacha saqlab qoldik. Go dasturlash tilini o'rganing.

Kubernetes Go-da ishlab chiqilgan, barcha kengaytmalar Go-da yozilgan va mijoz-go mijozlar kutubxonasi ham rasmiy ravishda qo'llab-quvvatlanadi.

U turli xil va qiziqarli narsalar uchun ishlatilishi mumkin. Masalan, Kubernetes tizimini sizning didingizga qarab kengaytirish uchun. Shunday qilib, siz o'zingizning dasturlaringizdan ma'lumotlarni to'plash, ilovalarni joylashtirish yoki konteynerlarni tozalash uchun foydalanishingiz mumkin.

Go dasturlash tilini o'rganish va client-go-ni o'zlashtirish Kubernetesning yangi foydalanuvchilariga berishingiz mumkin bo'lgan eng muhim maslahatdir.

Mail.ru Cloud Solutions ko'magida tarjima qilingan

Yana nimani o'qish kerak:

  1. Kubernetes-da avtomatik o'lchashning uchta darajasi va ulardan qanday samarali foydalanish.
  2. Kubernetes ishchi tugunlari: ko'p kichik yoki bir nechta katta?
  3. 25 Kubernetesni joylashtirish va boshqarish uchun foydali vositalar.

Manba: www.habr.com

a Izoh qo'shish