ProHoster > blog > Utawala > /etc/resolv.conf kwa maganda ya Kubernetes, ndots: chaguo la 5, jinsi hii inaweza kuathiri vibaya utendakazi wa programu.
/etc/resolv.conf kwa maganda ya Kubernetes, ndots: chaguo la 5, jinsi hii inaweza kuathiri vibaya utendakazi wa programu.
Hivi majuzi tulizindua Kubernetes 1.9 kwenye AWS kwa kutumia Kops. Jana, nilipokuwa nikisambaza trafiki mpya kwa urahisi kwa kundi kubwa zaidi la Kubernetes, nilianza kugundua hitilafu zisizo za kawaida za utatuzi wa jina la DNS zilizowekwa na programu yetu.
Kuna mengi juu ya hii kwenye GitHub aliongea, kwa hivyo niliamua kufikiria pia. Mwishowe, niligundua kuwa kwa upande wetu hii inasababishwa na mzigo ulioongezeka kube-dns ΠΈ dnsmasq. Jambo la kufurahisha zaidi na jipya kwangu lilikuwa sababu ya ongezeko kubwa la trafiki ya ombi la DNS. Chapisho langu ni kuhusu hili na nini cha kufanya kuhusu hilo.
Ubora wa DNS ndani ya chombo - kama katika mfumo wowote wa Linux - huamuliwa na faili ya usanidi /etc/resolv.conf. Kubernetes Chaguomsingi dnsPolicy hii ClusterFirst, ambayo ina maana kwamba ombi lolote la DNS litatumwa kwa dnsmasq, kukimbia kwenye ganda kube-dns ndani ya nguzo, ambayo nayo itasambaza ombi kwa programu kube-dns, ikiwa jina linaisha na kiambishi tamati cha nguzo, au, vinginevyo, kwa seva ya DNS ya kiwango cha juu.
file /etc/resolv.conf ndani ya kila chombo chaguo-msingi kitaonekana kama hii:
Vikoa 4 vya utafutaji vya ndani vimebainishwa search
Kuna chaguo ndots:5
Sehemu ya kuvutia ya usanidi huu ni jinsi vikoa na mipangilio ya utafutaji ya ndani ndots:5 kupata pamoja. Ili kuelewa hili, unahitaji kuelewa jinsi azimio la DNS kwa majina yasiyostahili hufanya kazi.
Jina kamili ni nini?
Jina lililohitimu kikamilifu ni jina ambalo hakuna utafutaji wa ndani utakaofanywa na jina litachukuliwa kuwa kamili wakati wa utatuzi wa jina. Kwa kawaida, programu ya DNS huchukulia jina kuwa limehitimu kikamilifu ikiwa itaishia na nukta (.), na halijahitimu vinginevyo. Hiyo ni google.com. imefafanuliwa kikamilifu na google.com - Hapana.
Je, jina lisilo na sifa hushughulikiwaje?
Programu inapounganishwa kwa seva pangishi ya mbali iliyobainishwa katika jina, utatuzi wa jina la DNS kwa kawaida hufanywa kwa simu ya mfumo, k.m. getaddrinfo(). Lakini ikiwa jina halijahitimu (haishii na .), ninashangaa ikiwa simu ya mfumo itajaribu kusuluhisha jina kama jina kabisa kwanza, au kupitia vikoa vya utaftaji wa ndani kwanza? Inategemea chaguo ndots.
Hii ina maana kwamba kama kwa ndots ikipewa thamani ya 5 na jina lina chini ya vitone 5, simu ya mfumo itajaribu kuitatua kwa kufuatana, kwanza kupitia vikoa vyote vya utafutaji vya ndani, na, ikiwa haijafaulu, hatimaye kuitatua kama jina kamili.
Kwanini basi ndots:5 inaweza kuathiri vibaya utendaji wa programu?
Kama unavyoweza kufikiria, ikiwa programu yako inatumia trafiki nyingi za nje, kwa kila muunganisho wa TCP ulioanzishwa (au kwa usahihi zaidi, kwa kila jina kutatuliwa), itatoa maswali 5 ya DNS kabla ya jina kutatuliwa kwa usahihi, kwa sababu itapitia kwanza. 4 kikoa cha utafutaji cha ndani, na mwisho itatoa ombi la azimio la jina kabisa.
Chati ifuatayo inaonyesha jumla ya trafiki kwenye moduli zetu 3 za kube-dns kabla na baada ya kubadilisha majina machache ya wapangishaji yaliyosanidiwa katika programu yetu hadi yale yaliyohitimu kikamilifu.
Mchoro ufuatao unaonyesha muda wa kusubiri wa programu kabla na baada ya sisi kubadilisha majina kadhaa ya wapangishaji yaliyosanidiwa katika programu yetu hadi majina kamili (laini wima ya samawati ndio utumaji):
Ikiwa una majina machache ya nje tuli (yaani yaliyofafanuliwa katika usanidi wa programu) ambayo unaunda idadi kubwa ya miunganisho, labda suluhisho rahisi zaidi ni kuzibadilisha kwa zilizohitimu kikamilifu kwa kuziambatanisha tu. mwishoni.
Hii sio suluhisho la mwisho, lakini inasaidia haraka, ingawa sio safi, kuboresha hali hiyo. Tulitumia kiraka hiki kutatua tatizo letu, ambalo matokeo yake yalionyeshwa kwenye picha za skrini hapo juu.
Suluhisho # 2 - ubinafsishaji ndots Π² dnsConfig
Katika Kubernetes 1.9, utendakazi ulionekana katika hali ya alpha (toleo la beta v1.10), ambayo hukuruhusu kudhibiti vyema vigezo vya DNS kupitia sifa ya ganda katika dnsConfig. Miongoni mwa mambo mengine, inakuwezesha kusanidi thamani ndots kwa pod maalum, i.e.