UTS Namespace — Linux processlari ko‘radigan hostname va NIS domain name qiymatlarini izolyatsiya qiladigan namespace turi. UTS nomi Unix Time-sharing System tarixiy atamasidan keladi. Container o‘z hostname’iga ega bo‘lishi mumkin, host va boshqa containerlar esa boshqa nomni ko‘radi. Bu mexanizm network routing yoki DNS yozuvini avtomatik yaratmaydi.
Hostname ko‘rinishi
uname va gethostname process a’zo bo‘lgan UTS namespace qiymatini qaytaradi. sethostname tegishli capability mavjud bo‘lsa shu namespace obyektini o‘zgartiradi. Bitta namespace’dagi barcha processlar yangi nomni ko‘radi.
Yangi UTS namespace parent qiymatlarining nusxasi bilan boshlanadi. Keyingi o‘zgarishlar ajralgan. Namespace file descriptor ochiq bo‘lsa processlar tugagach ham obyekt saqlanishi mumkin.
Container nomi
Runtime container ID yoki foydalanuvchi bergan nomni hostname sifatida o‘rnatadi. /etc/hostname fayli esa root filesystemdagi oddiy konfiguratsiya; u UTS qiymati bilan avtomatik sinxron bo‘lishi shart emas. Init startup’da fayldan kernel qiymatini o‘rnatishi mumkin.
Kubernetes pod hostname va subdomain siyosatini beradi, DNS controller esa alohida ravishda service discovery yozuvlarini yaratadi. Hostname o‘zgargani uchun network namespace interface nomi yoki IP manzili o‘zgarmaydi.
Domain name
NIS domain name tarixiy Network Information Service uchun ishlatilgan va DNS domain bilan bir xil tushuncha emas. setdomainname shu UTS maydonini o‘zgartiradi. Zamonaviy tizimlarda u ko‘pincha bo‘sh yoki ishlatilmaydi.
Security yoki TLS identifikatorini UTS hostname’ga ko‘r-ko‘rona bog‘lash xavfli. Container ichidagi privileged process o‘z namespace nomini almashtira olishi mumkin. Sertifikat va authorization alohida ishonchli identityga tayanadi.
Yaratish va privilege
clone, unshare yangi UTS namespace yaratadi, setns mavjudiga qo‘shadi. Capability tekshiruvi UTS namespace’ning owning user namespace’i doirasida amalga oshiriladi. Rootless container ichki hostname’ni host rootisiz o‘zgartira olishi shundan keladi.
Multi-thread process namespace membershipini o‘zgartirishda runtime cheklovlariga duch kelishi mumkin. Setup odatda childning boshqa threadlari yaratilishidan oldin bajariladi.
Tashxis
Bir xil hostname ko‘rish processlar bir UTS namespace’da ekanini isbotlamaydi; qiymatlar tasodifan teng bo‘lishi mumkin. /proc/PID/ns/uts inode’lari solishtiriladi. Log aggregation hostname bilan birga container yoki namespace IDni saqlaydi.
Test hostname uzunligi, invalid byte, namespace nesting, user capability va DNSdan mustaqil xulqni tekshiradi. Hostname observability label, lekin global noyob kalit emas.
Name collision
Turli UTS namespace’lar bir xil hostname ishlatishi mumkin. Central log, monitoring va TLS inventory hostname’ni yagona primary key qilsa yozuvlar aralashadi. Workload UID, cluster, namespace va instance ID qo‘shimcha identity bo‘ladi. Reverse DNS boshqa nom qaytarishi ham normal; UTS qiymati faqat local kernel atributidir.
Checkpoint va migratsiya
Container checkpoint UTS hostname va domain qiymatini metadata bilan saqlaydi. Yangi hostda restore qilganda orchestration platformasi oldingi nomni saqlash yoki yangi deployment identity berish siyosatini tanlaydi. Application hostname’ni startda cache qilsa runtime o‘zgarishini ko‘rmasligi mumkin. Hostname almashtirish service discovery registration, log label va certificate SAN bilan avtomatik tenglashtirilmaydi.
Namespace egasi
UTS namespace owning user namespace bilan bog‘liq. Unda CAP_SYS_ADMINga ega process hostname’ni o‘zgartirishi mumkin, ammo parent UTS qiymatiga ta’sir qilmaydi. Host administratori ichki nomni parent namespace’dan /proc descriptor orqali ko‘rishi mumkin. Policy containerning loglarda boshqa xizmat nomiga taqlid qilishini identity token bilan ajratadi.
Bog‘liq tushunchalar
hostname, uname, Linux namespace, container identity, NIS domain, user namespace