Bosh sahifa Wiki Allocation

Allocation

Allocation — scheduler muayyan job yoki task groupni tanlangan client nodega joylashtirganda hosil qiladigan bajarilish instanceidir. Nomad terminologiyasida allocation tasklarning kerakli konfiguratsiyasi, ajratilgan resurslari, runtime holati va node bilan bog‘lanishini ifodalaydi. Job deklaratsiya bo‘lsa, allocation uning konkret bajariladigan nusxasidir.

Yaratilish jarayoni

Scheduler job evaluationni qayta ishlab, resource, constraint, affinity va quota ga mos node qidiradi. Placement tanlangach allocation plan tuziladi va clientga yetkaziladi. Client artifact yoki image ni oladi, directory va networkni tayyorlaydi, keyin task driver orqali processni ishga tushiradi.

Bir service job counti uch bo‘lsa, odatda uch allocation yaratiladi. System job har mos node uchun allocation hosil qilishi mumkin. Batch job retry yoki reschedule sabab vaqt davomida bir nechta allocation tarixiga ega bo‘lishi ehtimol.

Holat va desired state

Allocation desired state scheduler nimani istashini, client status esa amalda nima bo‘layotganini bildiradi. Desired run bo‘lib, client failed bo‘lsa scheduler restart yoki reschedule siyosatini qo‘llaydi. Deployment yangilanganda eski allocation desired stopga, yangisi run holatiga o‘tadi.

Task state running, dead yoki pending kabi holatlar va event tarixini saqlaydi. Allocation umumiy healthy bo‘lishi uchun belgilangan service checklar o‘tishi kerak. Process ishlayotgan bo‘lsa ham readiness fail sabab trafik olmasligi mumkin.

Resurs va izolyatsiya

Allocation CPU, memory va disk limitlarini tasklarga beradi. Linux cgroup va namespace processlarni ajratishi mumkin; aniq isolation task driverga bog‘liq. Raw exec bilan container driver bir xil xavfsizlik chegarasiga ega emas.

Allocation directory task local fayllari, log va shared data uchun ishlatiladi. Ephemeral directory allocation yo‘qolganda o‘chishi mumkin. Doimiy ma’lumot CSI yoki boshqa persistent volume orqali tashqi lifecyclega ega bo‘ladi.

Update va migration

Rolling update eski allocationlarni ketma-ket yangi job versioni bilan almashtiradi. In-place update faqat o‘zgarish runtime ni qayta yaratishni talab qilmasa mumkin bo‘lishi mumkin; ko‘p o‘zgarishda yangi allocation ID yaratiladi. Canary health tasdiqlangach rollout davom etadi.

Node drain qilinganda migrate qilinadigan allocation boshqa nodega reschedule bo‘ladi. Lokal diskka bog‘langan state ko‘chmasligi mumkin. Constraint va volume topology yangi placementni cheklaydi.

Diagnostika

Allocation eventlari download, setup, driver, health va restart bosqichlarini ko‘rsatadi. Client log scheduler qaroridan keyingi lokal xatoni, server evaluation esa placement nima uchun topilmaganini tushuntiradi. Pending allocation uchun yetishmayotgan CPU, port, constraint yoki device aniqlanadi.

Exec orqali process ichiga kirish diagnostika uchun ishlatilishi mumkin, lekin productionda audit va minimal ruxsat talab etadi. Qo‘lda o‘zgartirilgan ephemeral holat keyingi restartda yo‘qoladi; doimiy tuzatish job specification yoki imagega kiritiladi.

Garbage collection

Dead allocation logi va directorysi diagnostika uchun ma’lum vaqt saqlanadi, keyin client garbage collector diskni bo‘shatadi. Juda qisqa retention incident dalilini yo‘qotadi, juda uzun retention diskni to‘ldiradi. Markaziy log va artifact kerakli tarixni local nodega bog‘lamasdan saqlaydi.

Network identity

Allocation dynamic port yoki virtual IP olishi mumkin. Service registry consumerlarga joriy manzilni beradi. Reschedule qilinganda eski IPga tayanadigan client uziladi; nom va discovery ishlatiladi. Network policy allocation identity, namespace yoki service metadata asosida ruxsat beradi.

Resurs bosimi

Node memory yoki disk bosimida allocation evict qilinishi mumkin. Scheduler boshqa nodega nusxa yaratadi, ammo stateful taskning local state i ko‘chmaydi. QoS va priority qaysi workload avval chiqarilishini belgilaydi. Eviction metric capacity rejasiga kiradi.

Bog‘liq tushunchalar

Nomad, Scheduler, Job, Task group, Client node, Deployment, Reschedule