ProHoster > Blog > Ma'muriyat > Kubernetes pods uchun /etc/resolv.conf, ndots:5 varianti, bu ilova ishlashiga qanday salbiy ta'sir ko'rsatishi mumkin
Kubernetes pods uchun /etc/resolv.conf, ndots:5 varianti, bu ilova ishlashiga qanday salbiy ta'sir ko'rsatishi mumkin
Biz yaqinda Kops yordamida AWS-da Kubernetes 1.9-ni ishga tushirdik. Kecha, bizning Kubernetes klasterlarimizning eng kattasiga yangi trafikni muammosiz tarqatayotganda, men ilovamiz tomonidan qayd etilgan DNS nomlarini aniqlashda noodatiy xatolarni seza boshladim.
GitHub-da bu haqda juda ko'p narsa bor gapirdi, shuning uchun men ham buni aniqlashga qaror qildim. Oxir-oqibat, men tushundimki, bizning holatlarimizda bu yukning ko'payishi bilan bog'liq kube-dns ΠΈ dnsmasq. Men uchun eng qiziqarli va yangi narsa DNS so'rovi trafigining sezilarli darajada oshishiga sabab bo'ldi. Mening postim bu va bu haqda nima qilish kerakligi haqida.
Konteyner ichidagi DNS ruxsati - har qanday Linux tizimida bo'lgani kabi - konfiguratsiya fayli bilan belgilanadi /etc/resolv.conf. Standart Kubernetes dnsPolicy u ClusterFirst, bu har qanday DNS so'rovi yuborilishini anglatadi dnsmasq, podada yugurish kube-dns klaster ichida, bu esa o'z navbatida so'rovni ilovaga yo'naltiradi kube-dns, agar ism klaster qo'shimchasi bilan tugasa yoki aks holda yuqori darajadagi DNS serveriga.
Fayl /etc/resolv.conf har bir konteyner ichida standart quyidagicha ko'rinadi:
4 ta mahalliy qidiruv domenlari koΚ»rsatilgan search
Variant bor ndots:5
Ushbu konfiguratsiyaning qiziqarli qismi mahalliy qidiruv domenlari va sozlamalari ndots:5 birga bo'ling. Buni tushunish uchun siz nomaqbul nomlar uchun DNS rezolyutsiyasi qanday ishlashini tushunishingiz kerak.
To'liq ism nima?
To'liq malakali ism - bu nom bo'lib, u uchun mahalliy qidiruv amalga oshirilmaydi va nom echish paytida mutlaq hisoblanadi. An'anaga ko'ra, DNS dasturiy ta'minoti, agar nom nuqta (.) bilan tugasa, uni to'liq malakali deb hisoblaydi, aks holda to'liq mos kelmaydi. Ya'ni google.com. to'liq aniqlangan va google.com - yo'q.
Noma'lum ism qanday ko'rib chiqiladi?
Ilova nomda ko'rsatilgan masofaviy xostga ulanganda, DNS nomini aniqlash odatda tizim chaqiruvi yordamida amalga oshiriladi, masalan. getaddrinfo(). Ammo agar nom nomaqbul bo'lsa (. bilan tugamaydi), menimcha, tizim chaqiruvi birinchi navbatda nomni mutlaq nom sifatida hal qilishga harakat qiladimi yoki avval mahalliy qidiruv domenlaridan o'tadimi? Bu variantga bog'liq ndots.
Bu shuni anglatadiki, agar uchun ndots 5 qiymati va nomda 5 nuqtadan kam bo'lsa, tizim chaqiruvi avval barcha mahalliy qidiruv domenlarini bosib o'tib, uni ketma-ket hal qilishga harakat qiladi va agar muvaffaqiyatsiz bo'lsa, uni mutlaq nom sifatida hal qiladi.
Nima sababdan ndots:5 bu dastur ishlashiga salbiy ta'sir ko'rsatishi mumkinmi?
Tasavvur qilganingizdek, agar ilovangiz juda ko'p tashqi trafikdan foydalansa, har bir o'rnatilgan TCP ulanishi uchun (aniqrog'i, hal qilingan har bir nom uchun), u nom to'g'ri echilishidan oldin 5 ta DNS so'rovini beradi, chunki u birinchi bo'lib o'tadi. 4 mahalliy qidiruv domeni va oxirida mutlaq nomni hal qilish so'rovini chiqaradi.
Quyidagi diagrammada ilovamizda sozlangan bir nechta xost nomlarini toΚ»liq malakalilariga almashtirishdan oldin va keyin 3 kube-dns modulimizdagi umumiy trafik koΚ»rsatilgan.
Quyidagi diagrammada ilovamizda sozlangan bir nechta xost nomlarini toΚ»liq nomlarga almashtirishdan oldin va keyin dasturning kechikish vaqti koΚ»rsatilgan (vertikal koΚ»k chiziq β tarqatish):
Yechim β1 - To'liq malakali nomlardan foydalaning
Agar sizda ko'p sonli ulanishlar yaratadigan bir nechta statik tashqi nomlaringiz bo'lsa (ya'ni, ilova konfiguratsiyasida belgilangan), ehtimol eng oddiy yechim ularni qo'shish orqali to'liq malakali nomlarga o'tkazishdir. oxirida.
Bu yakuniy yechim emas, lekin bu vaziyatni tezda yaxshilashga yordam beradi, ammo toza bo'lmasa ham. Muammoni hal qilish uchun biz ushbu yamoqni qo'lladik, uning natijalari yuqoridagi skrinshotlarda ko'rsatilgan.
Yechim β2 - moslashtirish ndots Π² dnsConfig
Kubernetes 1.9-da funksionallik alfa rejimida (beta-versiya v1.10) paydo bo'ldi, bu sizga pod xususiyati orqali DNS parametrlarini yaxshiroq boshqarish imkonini beradi. dnsConfig. Boshqa narsalar qatorida, bu qiymatni sozlash imkonini beradi ndots ma'lum bir pod uchun, ya'ni.