Sizə Kubernetes lazım olmaya bilər

Sizə Kubernetes lazım olmaya bilər
Skuterdə qız. İllüstrasiya freepik, Nomad loqosu Şirkət Adı HashiCorp

Kubernetes konteyner orkestrinin 300 kiloqramlıq qorillasıdır. O, dünyanın ən böyük konteyner sistemlərində işləyir, lakin bahalıdır.

Xüsusilə kiçik komandalar üçün bahadır, bu da çoxlu dəstək vaxtı və dik öyrənmə əyrisi tələb edir. Bu, dörd nəfərdən ibarət komandamız üçün çox yükdür. Beləliklə, biz alternativlər axtarmağa başladıq - və aşiq olduq Köçəri.

Nə istəyirsən

Komandamız performansın monitorinqi və təhlili üçün bir sıra ümumi xidmətləri dəstəkləyir: Go-da yazılmış ölçülər üçün API son nöqtələri, Prometheus ixracları, Logstash kimi log analizatorları və Gollum, həmçinin InfluxDB və ya Elasticsearch kimi verilənlər bazaları. Bu xidmətlərin hər biri öz konteynerində işləyir. Bütün bunları davam etdirmək üçün sadə bir sistemə ehtiyacımız var.

Konteynerin orkestri üçün tələblərin siyahısı ilə başladıq:

  • Bir çox maşında xidmətlər dəstini işə salmaq.
  • Çalışan xidmətlərə ümumi baxış.
  • Xidmətlər arasında əlaqə.
  • Xidmət dayandırıldıqda avtomatik yenidən başladın.
  • Kiçik bir komanda tərəfindən infrastrukturun saxlanması.

Bundan əlavə, aşağıdakı şeylər gözəl olacaq, lakin əlavələr tələb olunmayacaq:

  • Maşınların öz imkanlarına əsasən etiketləmə (məsələn, ağır I/O xidmətləri üçün sürətli diskləri olan etiketləmə maşınları).
  • Xidmətləri orkestrdən asılı olmayaraq idarə etmək bacarığı (məsələn, inkişaf zamanı).
  • Konfiqurasiyaları və sirləri paylaşmaq üçün ümumi yer.
  • Metriklər və qeydlər üçün son nöqtə.

Niyə Kubernetes bizim üçün uyğun deyil

Kubernetes ilə prototip hazırlayarkən, çox etibar etdiyimiz məntiqin getdikcə daha mürəkkəb təbəqələrini əlavə etdiyimizi gördük.

Nümunə olaraq, Kubernetes vasitəsilə daxili xidmət konfiqurasiyalarını dəstəkləyir ConfigMaps. Xüsusilə birdən çox konfiqurasiya faylını birləşdirərkən və ya poda əlavə xidmətlər əlavə edərkən tez çaşqın ola bilərsiniz. Kubernetes (və ya sükan bu halda) narahatlıqları ayırmaq üçün xarici konfiqurasiyaları dinamik şəkildə həyata keçirməyə imkan verir. Lakin bu, layihənizlə Kubernetes arasında sıx, gizli əlaqə ilə nəticələnir. Bununla belə, Helm və ConfigMaps əlavə seçimlərdir, ona görə də onlardan istifadə etmək lazım deyil. Siz sadəcə olaraq konfiqurasiyanı Docker şəklinə kopyalaya bilərsiniz. Bununla belə, bu yolla getmək və sonra peşman ola biləcəyiniz lazımsız abstraksiyalar qurmaq cazibədardır.

Bundan əlavə, Kubernetes ekosistemi sürətlə inkişaf edir. Ən yaxşı təcrübələr və ən son alətlərdən xəbərdar olmaq çox vaxt və enerji tələb edir. Kubectl, minikube, kubeadm, helm, tiller, kops, oc - siyahı davam edir. İşə başladığınız zaman bu vasitələrin heç də hamısına ehtiyac yoxdur, lakin siz nəyə ehtiyacınız olacağını bilmirsiniz, ona görə də hər şeydən xəbərdar olmalısınız. Bu səbəbdən öyrənmə əyrisi olduqca dikdir.

Kubernetes nə vaxt istifadə edilməlidir

Şirkətimizdə bir çox insan Kubernetes-dən istifadə edir və bundan çox razıdır. Bu nümunələr onları dəstəkləmək üçün resursları olan Google və ya Amazon tərəfindən idarə olunur.

Kubernetes ilə gəlir heyrətamiz xüsusiyyətlər, konteyner orkestrini miqyasda daha idarəolunan edir:

Sual bütün bu xüsusiyyətlərə həqiqətən ehtiyacınız olub-olmamasıdır. Siz yalnız abstraksiyalara etibar edə bilməzsiniz; başlıq altında nə baş verdiyini öyrənməli olacaqsınız.

Komandamız əksər xidmətləri uzaqdan təmin edir (əsas infrastrukturla sıx əlaqəyə görə), ona görə də öz Kubernetes klasterimizi artırmaq istəmədik. Biz sadəcə xidmət göstərmək istəyirdik.

Batareyalar daxil deyil

Nomad, lazım olanın 20% -ni təmin edən orkestrin 80% -ni təşkil edir. Onun etdiyi hər şey yerləşdirmələri idarə etməkdir. Nomad yerləşdirmə ilə məşğul olur, səhvlər baş verərsə konteynerləri yenidən işə salır... vəssalam.

Nomad-ın bütün məqsədi onun etdiyi şeydir minimum: heç bir detallı hüquqların idarə edilməsi və ya genişləndirilmiş şəbəkə siyasətləri, bu xüsusi hazırlanmışdır. Bu komponentlər xaricdən verilir və ya ümumiyyətlə təmin edilmir.

Düşünürəm ki, Nomad istifadə rahatlığı və faydalılıq arasında mükəmməl kompromis tapıb. Kiçik, müstəqil xidmətlər üçün yaxşıdır. Daha çox nəzarətə ehtiyacınız varsa, onları özünüz böyütməli və ya fərqli bir yanaşma istifadə etməlisiniz. Köçəridir yalnız orkestr.

Nomad haqqında ən yaxşı şey asan olmasıdır əvəz et. Satıcı ilə praktiki olaraq heç bir əlaqə yoxdur, çünki onun funksiyaları xidmətləri idarə edən hər hansı digər sistemə asanlıqla inteqrasiya olunur. O, klasterdəki hər maşında adi ikili sistem kimi işləyir, hamısı budur!

Boş birləşmiş komponentlərin köçəri ekosistemi

Nomad-ın əsl gücü onun ekosistemidir. kimi digər - tamamilə isteğe bağlı - məhsullarla çox yaxşı birləşir Konsul (əsas dəyər mağazası) və ya Sərdaba (sirləri emal edir). Nomad faylının içərisində bu xidmətlərdən məlumat çıxarmaq üçün bölmələr var:

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
}

Burada açarı oxuyuruq service/geo-api/log-verbosity Konsuldan və işləyərkən biz onu ətraf mühit dəyişkənliyinə məruz qoyuruq LOG_LEVEL. Açarı da təqdim edirik secret/geo-api-key kimi Vault-dan API_KEY. Sadə, lakin güclü!

Sadəliyinə görə Nomad API vasitəsilə digər xidmətlərlə asanlıqla genişləndirilə bilər. Məsələn, tapşırıqlar üçün etiketlər dəstəklənir. Biz bütün xidmətləri metriklərlə etiketləyirik trv-metrics. Beləliklə, Prometey bu xidmətləri Konsul vasitəsilə asanlıqla tapa və vaxtaşırı son nöqtəni yoxlaya bilər /metrics yeni məlumatlar üçün. Eyni, məsələn, loglar üçün istifadə edilə bilər Loki.

Genişlənmənin bir çox başqa nümunələri var:

  • Qarmaqdan istifadə edərək Jenkins işini idarə edin və Konsul xidmət konfiqurasiyası dəyişdikdə Nomad işinin yenidən yerləşdirilməsinə nəzarət edir.
  • Ceph Nomad-a paylanmış fayl sistemi əlavə edir.
  • fabio yük balansı üçün.

Bütün bunlar imkan verir infrastrukturu üzvi şəkildə inkişaf etdirmək satıcı ilə heç bir xüsusi əlaqə olmadan.

Ədalətli xəbərdarlıq

Heç bir sistem mükəmməl deyil. Ən yeni xüsusiyyətləri dərhal istehsala təqdim etməyi məsləhət görmürəm. Əlbəttə ki, səhvlər və çatışmayan xüsusiyyətlər var, lakin eyni şey Kubernetes-ə də aiddir.

Kubernetes ilə müqayisədə Nomad icması o qədər də böyük deyil. Kubernetes-in artıq təxminən 75 öhdəliyi və 000 töhfəçisi var, Nomad-ın isə təxminən 2000 öhdəliyi və 14 töhfəçisi var. Nomad, Kubernetes sürətinə çatmaqda çətinlik çəkəcək, amma bəlkə də buna ehtiyac yoxdur! Bu, daha ixtisaslaşmış bir sistemdir və daha kiçik icma, həmçinin Kubernetes ilə müqayisədə çəkmə sorğunuzun nəzərə alınması və qəbul edilməsi ehtimalının daha yüksək olması deməkdir.

Xülasə

Nəticə: Kubernetes-dən hər kəs bunu etdiyi üçün istifadə etməyin. Tələblərinizi diqqətlə qiymətləndirin və hansı alətin daha faydalı olduğunu yoxlayın.

Geniş miqyaslı bir infrastrukturda bir ton homojen xidmət yerləşdirməyi planlaşdırırsınızsa, Kubernetes yaxşı seçimdir. Yalnız əlavə mürəkkəblikdən və əməliyyat xərclərindən xəbərdar olun. kimi idarə olunan Kubernetes mühitindən istifadə etməklə bəzi xərclərdən qaçınmaq olar Google Kubernetes Mühərriki və ya Amazon EKS.

Əgər siz sadəcə saxlanılması asan və genişləndirilə bilən etibarlı orkestr axtarırsınızsa, niyə Nomad-ı sınamayasınız? Bunun sizi nə qədər uzağa aparacağına təəccüblənə bilərsiniz.

Kubernetes bir avtomobillə müqayisə edilsə, Nomad skuter olardı. Bəzən bir şeyə, bəzən də başqa bir şeyə ehtiyacın var. Hər ikisinin də var olmaq hüququ var.

Mənbə: www.habr.com

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