Bosh sahifa Wiki Nomad

Nomad

Nomadcontainer va boshqa turdagi workload’larni cluster bo‘ylab joylashtirish va boshqarishga mo‘ljallangan scheduler hamda orchestrator. U service, batch job va system joblarni server node’lari orasida taqsimlaydi.

Nomad faqat container bilan cheklanmaydi. Driver orqali executable, virtualizatsiya yoki boshqa runtime workloadlarini ham boshqarishi mumkin.

Cluster

Nomad cluster ikki asosiy role’dan iborat:

Serverlar cluster state, scheduling va leadershipni boshqaradi.

Client node’lar workload’larni ishga tushiradi va holatini serverlarga yuboradi.

Server

Server node’lar:

jarayonlarini boshqaradi.

Yuqori mavjudlik uchun bir nechta server ishlatiladi.

Consensus majority mavjud bo‘lmasa yangi boshqaruv qarorlari cheklanishi mumkin.

Client

Client node workload bajariladigan host.

U:

Clientning CPU, memory va boshqa capabilitylari schedulingda ishlatiladi.

Job

Job kerakli workload ta’rifidir.

Unda:

sozlamalari mavjud.

Job file version control’da saqlanishi mumkin.

Job turlari

Service

Uzoq ishlaydigan application yoki daemon.

Masalan, web server yoki API.

Batch

Ishni bajarib tugaydigan task.

Masalan, data processing yoki report.

System

Mos har client node’da ishlaydigan task.

Masalan, log agent yoki monitoring.

Task group

Birga joylashtirilishi kerak bo‘lgan tasklar groupga birlashtiriladi.

Ular:

bilan ishlashi mumkin.

Bu sidecar pattern uchun qulay.

Driver

Driver taskni qaysi runtime orqali bajarishni belgilaydi.

Driver:

bo‘lishi mumkin.

Har driverning security va host talabi farq qiladi.

Scheduling

Scheduler job talablari va node imkoniyatlarini solishtiradi.

Hisobga olinadi:

Mos node topilmasa allocation pending holatda qoladi.

Allocation

Job task groupining node’da ishga tushirilgan instance’i allocation.

Allocation:

ga ega.

Deployment davomida eski va yangi allocationlar birga mavjud bo‘lishi mumkin.

Evaluation

Job yoki cluster holati o‘zgarganda scheduling evaluation yaratiladi.

Evaluation schedulerga yangi qaror kerakligini bildiradi.

Masalan:

Rescheduling

Node yo‘qolsa yoki task fail qilsa policy asosida yangi allocation yaratilishi mumkin.

Restart bir node ichida taskni qayta ishga tushiradi.

Reschedule esa boshqa node’da yangi allocation yaratishi mumkin.

Bu ikki tushuncha farqli.

Rolling update

Service job bosqichma-bosqich yangilanadi.

Sozlamalar:

Update xato bo‘lsa deployment to‘xtashi yoki rollback qilishi mumkin.

Canary

Yangi version avval kichik allocation guruhida ishlaydi.

Health va application metriclari tekshiriladi.

Keyin deployment promote qilinadi.

Faqat process “running” bo‘lishi business funksiyasi sog‘lomligini isbotlamaydi.

Service discovery

Nomad service registrationni tashqi yoki integratsiyalangan service discovery tizimiga yuborishi mumkin.

Service:

bilan ro‘yxatdan o‘tadi.

Clientlar DNS yoki API orqali endpointlarni topadi.

Secret

Workload secret managerdan runtime credential olishi mumkin.

Secret template fayl yoki environmentga render qilinishi mumkin.

Rotation paytida taskga signal, restart yoki dynamic credential yangilanishi talab qilinadi.

Volume

Stateful workload uchun host yoki external storage volume ulanishi mumkin.

Scheduler volume capability va node availabilityni hisobga oladi.

Application backup va replicationi orchestrator volume attachmentidan alohida masala.

Namespace va quota

Namespace job va policylarni mantiqiy ajratadi.

Quota:

foydalanishini cheklashi mumkin.

Namespace to‘liq fizik isolation emas.

Nomad va Kubernetes

Ikkalasi workload orchestration qiladi.

Nomad ko‘proq turli workload driverlariga va sodda scheduler modeliga urg‘u beradi.

Kubernetes keng container ecosystem va resource APIga ega.

Tanlov workload, operatsion tajriba va integratsiyaga bog‘liq.

Constraint va affinity

Constraint node majburiy shartga mos bo‘lishini talab qiladi. Affinity esa mos node’ga afzallik balli beradi, lekin majburiy emas. Noto‘g‘ri qat’iy constraint clusterda bo‘sh resource bo‘lsa ham jobni pending qoldirishi mumkin.

Spread

Allocationlar region, datacenter, rack yoki boshqa attribute bo‘yicha tarqatiladi. Bu bitta failure domain’da barcha replica yig‘ilib qolishini kamaytiradi.

Preemption

Yuqori priority job uchun yetarli resource bo‘lmasa, past priority allocationlar to‘xtatilishi mumkin. Priority siyosati critical service va batch workload o‘rtasidagi resource tanlovini boshqaradi.

Garbage collection

Tugagan job, evaluation va allocation metadata’si ma’lum vaqt saqlanib, keyin tozalanadi. Juda qisqa retention incident tahlilini qiyinlashtiradi, juda uzun retention server state’ini kattalashtiradi.

Autoscaling

Tashqi autoscaler queue, CPU yoki custom metric asosida job count’ni o‘zgartirishi mumkin. Scale policy minimum, maximum, cooldown va downstream limitlarni hisobga oladi.

Node drain

Maintenance oldidan node drain qilinadi. Scheduler workloadlarni boshqa node’larga ko‘chiradi va yangi allocationlarning shu hostga joylashishini to‘xtatadi.

Bog‘liq tushunchalar

Workload orchestration, Scheduler, Cluster, Job, Task group, Allocation, Driver, Service discovery, Rolling update, Consul, Vault