Sizga Kubernetes kerak emas

Sizga Kubernetes kerak emas
Skuterda qiz. Tasvir Freepik, Nomad logotipi HashiCorp

Kubernetes konteyner orkestrining 300 funtli gorillasidir. U dunyodagi eng yirik konteyner tizimlarida ishlaydi, lekin qimmat.

Ayniqsa, kichikroq jamoalar uchun qimmat, bu ko'p qo'llab-quvvatlash vaqtini va keskin o'rganishni talab qiladi. Bu bizning to'rt kishilik jamoamiz uchun juda ko'p yuk. Shunday qilib, biz muqobillarni qidira boshladik - va sevib qoldik Nomad.

Nima xohlaysiz

Bizning jamoamiz bir qator umumiy ishlash monitoringi va tahlil xizmatlarini qo'llab-quvvatlaydi: Go-da yozilgan ko'rsatkichlar uchun API so'nggi nuqtalari, Prometey eksportlari, Logstash kabi jurnallarni tahlil qilish va Gollum, shuningdek InfluxDB yoki Elasticsearch kabi ma'lumotlar bazalari. Ushbu xizmatlarning har biri o'z konteynerida ishlaydi. Hammasini ishlashi uchun bizga oddiy tizim kerak.

Biz konteyner orkestriga qo'yiladigan talablar ro'yxatidan boshladik:

  • Ko'pgina mashinalarda xizmatlar to'plamini ishga tushirish.
  • Ishlayotgan xizmatlarning umumiy ko'rinishi.
  • Xizmatlar orasidagi aloqalar.
  • Agar xizmat ishlamay qolsa, avtomatik qayta ishga tushirish.
  • Kichik jamoa tomonidan infratuzilmani ta'mirlash.

Bundan tashqari, quyidagi narsalar yaxshi bo'ladi, ammo qo'shimchalar talab qilinmaydi:

  • Imkoniyatlariga qarab teglash mashinalari (masalan, og'ir kiritish-chiqarish xizmatlari uchun tezkor diskli teglash mashinalari).
  • Xizmatlarni orkestrdan mustaqil ravishda boshqarish qobiliyati (masalan, ishlab chiqish paytida).
  • Konfiguratsiyalar va sirlarni almashish uchun umumiy joy.
  • Ko'rsatkichlar va jurnallar uchun so'nggi nuqta.

Nima uchun Kubernetes biz uchun mos emas

Kubernetes bilan prototip yaratar ekanmiz, biz ko'p ishonadigan mantiqning tobora murakkab qatlamlarini qo'shayotganimizni payqadik.

Misol tariqasida, Kubernetes orqali o'rnatilgan xizmat konfiguratsiyasini qo'llab-quvvatlaydi ConfigMaps. Ayniqsa, bir nechta konfiguratsiya fayllarini birlashtirganda yoki podkastga qo'shimcha xizmatlarni qo'shganda tezda chalkashib ketishingiz mumkin. Kubernetes (yoki rul bu holda) tashvishlarni ajratish uchun tashqi konfiguratsiyalarni dinamik ravishda amalga oshirish imkonini beradi. Ammo bu sizning loyihangiz va Kubernetes o'rtasida qattiq, yashirin bog'lanishga olib keladi. Biroq, Helm va ConfigMaps qo'shimcha imkoniyatlardir, shuning uchun ulardan foydalanish shart emas. Siz shunchaki konfiguratsiyani Docker tasviriga nusxalashingiz mumkin. Biroq, bu yo'ldan borish va keyin pushaymon bo'lishingiz mumkin bo'lgan keraksiz abstraktsiyalarni qurish vasvasasi.

Bundan tashqari, Kubernetes ekotizimlari tez rivojlanmoqda. Eng yaxshi amaliyotlar va eng yangi vositalardan xabardor bo‘lish uchun ko‘p vaqt va kuch talab etiladi. Kubectl, minikube, kubeadm, helm, tiller, kops, oc - ro'yxatni davom ettirish mumkin. Ishni boshlaganingizda bu vositalarning hammasi ham kerak emas, lekin siz nima kerakligini bilmaysiz, shuning uchun siz hamma narsadan xabardor bo'lishingiz kerak. Shu sababli, o'rganish egri chizig'i juda tik.

Kubernetesdan qachon foydalanish kerak

Bizning kompaniyamizda ko'p odamlar Kubernetes-dan foydalanadilar va undan mamnun. Ushbu misollar ularni qo'llab-quvvatlash uchun resurslarga ega bo'lgan Google yoki Amazon tomonidan boshqariladi.

Kubernetes bilan birga keladi ajoyib xususiyatlar, bu konteyner orkestrini miqyosda boshqarishni osonlashtiradi:

Savol shundaki, sizga ushbu xususiyatlarning barchasi kerakmi? Siz shunchaki abstraktsiyalarga tayanib bo'lmaydi; kaput ostida nima bo'layotganini bilib olishingiz kerak bo'ladi.

Bizning jamoamiz ko'pgina xizmatlarni masofadan turib taqdim etadi (asosiy infratuzilmaga yaqin aloqa tufayli), shuning uchun biz o'z Kubernetes klasterimizni ko'tarishni xohlamadik. Biz shunchaki xizmat ko'rsatishni xohladik.

Batareyalar kiritilmagan

Nomad orkestrning 20% ​​ni tashkil qiladi, bu esa zarur bo'lgan 80% ni ta'minlaydi. Bu faqat joylashtirishni boshqarishdir. Nomad joylashtirishlar haqida qayg'uradi, xatolar yuzaga kelganda konteynerlarni qayta ishga tushiradi ... va hammasi.

Nomadning butun maqsadi - nima qiladi eng kam: hech qanday noaniq huquqlarni boshqarish yoki kengaytirilgan tarmoq siyosati, bu maxsus ishlab chiqilgan. Ushbu komponentlar tashqaridan taqdim etiladi yoki umuman yo'q.

Menimcha, Nomad foydalanish qulayligi va foydalilik o'rtasida mukammal murosani topdi. Bu kichik, mustaqil xizmatlar uchun yaxshi. Agar sizga ko'proq nazorat kerak bo'lsa, ularni o'zingiz oshirishingiz yoki boshqa yondashuvdan foydalanishingiz kerak bo'ladi. Ko'chmanchi faqatgina orkestrchi.

Nomadning eng yaxshi tomoni shundaki, bu oson o'zgartiring. Sotuvchiga deyarli hech qanday aloqa yo'q, chunki uning funktsiyalari xizmatlarni boshqaradigan har qanday boshqa tizimga osongina birlashtirilgan. U klasterdagi har bir mashinada oddiy ikkilik kabi ishlaydi, tamom!

Bo'shashgan komponentlarning ko'chmanchi ekotizimlari

Nomadning haqiqiy kuchi uning ekotizimidir. kabi boshqa - butunlay ixtiyoriy - mahsulotlar bilan juda yaxshi birlashadi Konsul (kalit-qiymat do'koni) yoki bank seyfi (sirlarni qayta ishlash). Nomad faylida ushbu xizmatlardan ma'lumotlarni olish uchun bo'limlar mavjud:

template {
  data = <<EOH
LOG_LEVEL="{{key "service/geo-api/log-verbosity"}}"
API_KEY="{{with secret "secret/geo-api-key"}}{{.Data.value}}{{end}}"
EOH

  destination = "secrets/file.env"
  env         = true
}

Bu erda biz kalitni o'qiymiz service/geo-api/log-verbosity Konsuldan va ishlayotganda biz uni atrof-muhit o'zgaruvchisiga ta'sir qilamiz LOG_LEVEL. Biz kalitni ham taqdim etamiz secret/geo-api-key Vault dan API_KEY. Oddiy, ammo kuchli!

Oddiyligi tufayli Nomad API orqali boshqa xizmatlar bilan osongina kengaytiriladi. Masalan, vazifalar uchun teglar qo'llab-quvvatlanadi. Biz barcha xizmatlarni ko'rsatkichlar bilan belgilaymiz trv-metrics. Shunday qilib, Prometey ushbu xizmatlarni Konsul orqali osongina topishi va vaqti-vaqti bilan oxirgi nuqtani tekshirishi mumkin /metrics yangi ma'lumotlar uchun. Xuddi shu narsani, masalan, jurnallar uchun ishlatish mumkin Loki.

Kengaytirishning boshqa ko'plab misollari mavjud:

  • Jenkins ishini ilgak yordamida boshqaring va konsul xizmat konfiguratsiyasi o'zgarganda Nomad ishining qayta joylashtirilishini nazorat qiladi.
  • Ceph Nomad-ga taqsimlangan fayl tizimini qo'shadi.
  • fabio yukni muvozanatlash uchun.

Bularning barchasi imkon beradi infratuzilmani organik ravishda rivojlantirish sotuvchiga hech qanday maxsus aloqasiz.

Adolatli ogohlantirish

Hech qanday tizim mukammal emas. Men eng yangi xususiyatlarni darhol ishlab chiqarishga kiritishni tavsiya etmayman. Albatta, xatolar va etishmayotgan xususiyatlar mavjud, ammo xuddi shu narsa Kubernetes uchun ham amal qiladi.

Kubernetes bilan solishtirganda, Nomad jamoasi unchalik katta emas. Kubernetesda allaqachon 75 000 ga yaqin majburiyatlar va 2000 14 ta ishtirokchilar mavjud, Nomadda esa 000 300 ga yaqin majburiyatlar va XNUMX ta ishtirokchilar mavjud. Nomad uchun Kubernetes tezligiga erishish qiyin bo'ladi, lekin bu kerak emas! Bu yanada ixtisoslashgan tizim va kichikroq hamjamiyat Kubernetes bilan solishtirganda sizning tortishish so'rovingiz ko'proq e'tiborga olinishi va qabul qilinishini anglatadi.

Xulosa

Xulosa: Kubernetes-dan hamma buni qilayotgani uchun foydalanmang. Talablaringizni diqqat bilan baholang va qaysi vosita foydaliroq ekanligini tekshiring.

Agar siz keng ko'lamli infratuzilmada bir tonna bir xil xizmatlarni joylashtirishni rejalashtirmoqchi bo'lsangiz, Kubernetes yaxshi tanlovdir. Faqat qo'shimcha murakkablik va operatsion xarajatlardan xabardor bo'ling. Boshqariladigan Kubernetes muhitidan foydalanish orqali ba'zi xarajatlardan qochish mumkin, masalan Google Kubernetes mexanizmi yoki Amazon EKS.

Agar siz xizmat ko‘rsatish oson va kengaytiriladigan ishonchli orkestr izlayotgan bo‘lsangiz, nega Nomad-ni sinab ko‘rmaysiz? Bu sizni qanchalik uzoqqa olib borishiga hayron bo'lishingiz mumkin.

Agar Kubernetesni mashinaga solishtirsa, Nomad skuter bo'lardi. Ba'zan sizga bitta narsa kerak, ba'zida esa boshqa narsa kerak. Ikkalasi ham mavjud bo'lish huquqiga ega.

Manba: www.habr.com

a Izoh qo'shish