Шарҳ. тарҷума.: Мушкилоти DNS дар Kubernetes, ё дақиқтараш, танзимоти параметр ndots
, тааҷубовар маъмул аст, ва аллакай
Яке аз бартариҳои асосии ҷойгиркунии барномаҳо дар Kubernetes кашфи бефосилаи барномаҳо мебошад. Ҳамкории дохили кластер ба шарофати консепсияи хидмат хеле содда карда шудааст (vanilla
мехоҳад бо хидмат тамос гирад chocolate
, он метавонад мустақиман ба IP виртуалӣ дастрасӣ пайдо кунад chocolate
. Саволе ба миён меояд: дар ин ҳолат дархости DNS-ро кӣ ҳал мекунад chocolate
Ва чӣ тавр?
Ҳалли номи DNS бо истифода аз кластери Kubernetes танзим карда мешавад /etc/resolv.conf
ҳама гулҳо. Агар ба мазмун назар андозед /etc/resolv.conf
ҳама гуна подкаст, он чунин хоҳад буд:
search hello.svc.cluster.local svc.cluster.local cluster.local
nameserver 10.152.183.10
options ndots:5
Ин конфигуратсияро муштариёни DNS барои ирсоли дархостҳо ба сервери DNS истифода мебаранд. Дар файл resolv.conf
дорои маълумоти зерин:
- сервери ном: сервере, ки дархостҳои DNS ба он фиристода мешаванд. Дар ҳолати мо, ин суроғаи хидмати CoreDNS аст;
- кофтуков: Роҳи ҷустуҷӯро барои домени мушаххас муайян мекунад. Ҷолиб он аст, ки
google.com
ёmrkaran.dev
FQDN нестанд (номҳои домении пурраи тахассусӣ ). Тибқи конвенсияи стандартие, ки аксари ҳалли DNS риоя мекунанд, танҳо онҳое, ки бо нуқта "." хотима меёбанд, доменҳои пурраи тахассусӣ (FDQN) ҳисобида мешаванд. Баъзе ҳалкунандаҳо метавонанд худашон нуқта илова кунанд. Ҳамин тариқ,mrkaran.dev.
номи домени пурра соҳибихтисос аст (FQDN), ваmrkaran.dev
- Не; - ндотс: Параметри ҷолибтарин (ин мақола дар бораи он аст).
ndots
шумораи ҳадди ниҳоии номи дархостро пеш аз он ки номи домени "комилан мувофиқ" ҳисобида шавад, муайян мекунад. Мо дар ин бора баъдтар ҳангоми таҳлили пайдарпайии ҷустуҷӯи DNS сӯҳбат хоҳем кард.
Биёед бубинем, ки вақте ки мо мепурсем, чӣ мешавад mrkaran.dev
дар паҳлӯ:
$ nslookup mrkaran.dev
Server: 10.152.183.10
Address: 10.152.183.10#53
Non-authoritative answer:
Name: mrkaran.dev
Address: 157.230.35.153
Name: mrkaran.dev
Address: 2400:6180:0:d1::519:6001
Барои ин озмоиш, ман сатҳи сабти CoreDNS-ро муқаррар кардам all
(ки ин онро хеле муфассал мекунад). Биёед ба гузоришҳои подкӯҳҳо назар андозем coredns
:
[INFO] 10.1.28.1:35998 - 11131 "A IN mrkaran.dev.hello.svc.cluster.local. udp 53 false 512" NXDOMAIN qr,aa,rd 146 0.000263728s
[INFO] 10.1.28.1:34040 - 36853 "A IN mrkaran.dev.svc.cluster.local. udp 47 false 512" NXDOMAIN qr,aa,rd 140 0.000214201s
[INFO] 10.1.28.1:33468 - 29482 "A IN mrkaran.dev.cluster.local. udp 43 false 512" NXDOMAIN qr,aa,rd 136 0.000156107s
[INFO] 10.1.28.1:58471 - 45814 "A IN mrkaran.dev. udp 29 false 512" NOERROR qr,rd,ra 56 0.110263459s
[INFO] 10.1.28.1:54800 - 2463 "AAAA IN mrkaran.dev. udp 29 false 512" NOERROR qr,rd,ra 68 0.145091744s
Фу. Дар ин ҷо ду чиз диққати шуморо ҷалб мекунад:
- Дархост аз тамоми марҳилаҳои ҷустуҷӯ мегузарад, то он даме, ки ҷавоб рамзро дарбар гирад
NOERROR
(Муштариён DNS онро мефаҳманд ва дар натиҷа нигоҳ медоранд).NXDOMAIN
маънои онро дорад, ки ягон сабт барои номи домени додашуда ёфт нашуд. Зеро киmrkaran.dev
номи FQDN нест (мувофиқиndots=5
), ҳалкунанда ба роҳи ҷустуҷӯ назар мекунад ва тартиби дархостҳоро муайян мекунад; - Сабтҳо
А
иАААА
дар баробари омадан. Гап дар сари он аст, ки дархостхои якдафъаина дар/etc/resolv.conf
Бо нобаёнӣ, онҳо тавре танзим карда мешаванд, ки ҷустуҷӯҳои мувозӣ бо истифода аз протоколҳои IPv4 ва IPv6 анҷом дода шаванд. Шумо метавонед ин рафторро бо илова кардани хосият бекор кунедsingle-request
вresolv.conf
.
Эзоҳ: glibc
мумкин аст барои фиристодани ин дархостҳо пай дар пай танзим карда мешавад, ва musl
- не, аз ин рӯ, корбарони кӯҳҳои кӯҳӣ бояд ба назар гиранд.
Таҷриба бо ndots
Биёед каме бештар таҷриба кунем ndots
ва биёед бубинем, ки ин параметр чӣ гуна рафтор мекунад. Идея оддӣ аст: ndots
муайян мекунад, ки муштарии DNS ба домен ҳамчун мутлақ ё нисбӣ муносибат мекунад. Масалан, дар мавриди муштарии оддии Google DNS, он чӣ гуна медонад, ки ин домен мутлақ аст? Агар шумо муқаррар кунед ndots
ба 1 баробар бошад, муштарӣ мегӯяд: "Оҳ, дар google
як нукта нест; Ман фикр мекунам, ки ман тамоми рӯйхати ҷустуҷӯро аз назар мегузаронам." Аммо, агар пурсед google.com
, рӯйхати суффиксҳо комилан нодида гирифта мешавад, зеро номи дархостшуда ба ҳадди ниҳоӣ мувофиқат мекунад ndots
(ҳадди ақал як нукта вуҷуд дорад).
Биёед ба ин боварӣ ҳосил кунем:
$ cat /etc/resolv.conf
options ndots:1
$ nslookup mrkaran
Server: 10.152.183.10
Address: 10.152.183.10#53
** server can't find mrkaran: NXDOMAIN
Сабтҳои CoreDNS:
[INFO] 10.1.28.1:52495 - 2606 "A IN mrkaran.hello.svc.cluster.local. udp 49 false 512" NXDOMAIN qr,aa,rd 142 0.000524939s
[INFO] 10.1.28.1:59287 - 57522 "A IN mrkaran.svc.cluster.local. udp 43 false 512" NXDOMAIN qr,aa,rd 136 0.000368277s
[INFO] 10.1.28.1:53086 - 4863 "A IN mrkaran.cluster.local. udp 39 false 512" NXDOMAIN qr,aa,rd 132 0.000355344s
[INFO] 10.1.28.1:56863 - 41678 "A IN mrkaran. udp 25 false 512" NXDOMAIN qr,rd,ra 100 0.034629206s
Аз соли mrkaran
як нукта нест, кофтуков дар тамоми руйхати суффиксхо гузаронда шуд.
Эзоҳ: дар амал арзиши максималӣ ndots
маҳдуд ба 15; ба таври нобаёнӣ дар Kubernetes он 5 аст.
Истифодаи дар истеҳсолот
Агар барнома зангҳои зиёди шабакаи беруна кунад, DNS дар ҳолати трафики фаъол метавонад монеа гардад, зеро ҳалли ном дархостҳои зиёди нолозимро ба бор меорад (пеш аз он ки система ба рост ворид шавад). Барномаҳо одатан ба номҳои доменҳо минтақаи реша илова намекунанд, аммо ин ба ҳак монанд аст. Яъне ба ҷои пурсидан api.twitter.com
, шумо метавонед онро "коди сахт" кунед api.twitter.com.
(бо нуқта) дар барнома, ки муштариёни DNS-ро водор мекунад, ки мустақиман дар домени мутлақ ҷустуҷӯҳои бонуфузро анҷом диҳанд.
Илова бар ин, аз версияи Kubernetes 1.14 сар карда, васеъшавӣ dnsConfig
и dnsPolicy
вазъияти устувор гирифт. Ҳамин тариқ, ҳангоми ҷойгиркунии pod, шумо метавонед арзишро кам кунед ndots
, бигӯед, то 3 (ва ҳатто то 1!). Аз ин сабаб, ҳар як паём дар дохили гиреҳ бояд домени пурраро дар бар гирад. Ин яке аз муомилоти классикӣ аст, вақте ки шумо бояд байни иҷроиш ва қобили интиқол интихоб кунед. Ба назари ман, шумо бояд танҳо дар ин бора хавотир шавед, агар таъхири ултра паст барои барномаи шумо муҳим бошад, зеро натиҷаҳои DNS инчунин дар дохили он кэш карда мешаванд.
мурожиат
Ман аввал дар бораи ин хусусият дар бораи фаҳмидам
Инҳоянд чанд истинодҳо барои таҳқиқоти минбаъда:
-
Шарҳ , чаро ndots = 5 дар Кубернетес; -
Чизи олӣ чӣ гуна тағир додани ndots ба иҷрои барнома таъсир мерасонад; -
Нишондиҳандаҳо байни резолюторҳои musl ва glibc.
Эзоҳ: Ман интихоб кардам, ки истифода накунам dig
дар ин мақола. dig
ба таври худкор нуқта (идентификатори минтақаи решавӣ) илова мекунад, ки доменро "комилан соҳибихтисос" мекунад (FQDN), не аввал онро тавассути рӯйхати ҷустуҷӯ иҷро кунед. Дар ин бора навиштааст
DNSing муборак! То дидор!
PS аз тарҷумон
Инчунин дар блоги мо хонед:
- «
Calico барои шабака дар Кубернетес: муқаддима ва таҷрибаи каме »; - «
CoreDNS - сервери DNS барои ҷаҳони аслии абр ва кашфи хидмат барои Kubernetes »; - "Дастури тасвирӣ барои шабака дар Кубернетес":
қисмҳои 1 ва 2 (модели шабака, шабакаҳои фарогир) ,қисми 3 (хизматрасонӣ ва коркарди трафик) .
Манбаъ: will.com