Cuardach DNS i Kubernetes

Nóta. aistrigh.: Fadhb DNS i Kubernetes, nó níos cruinne, socruithe paraiméadar ndots, tá sé ionadh tóir, agus cheana féin Ní ar dtús bliana. I nóta eile ar an ábhar seo, labhraíonn a údar, innealtóir DevOps ó chuideachta bróicéireachta mór san India, ar bhealach an-simplí agus gonta faoi na rudaí atá úsáideach do chomhghleacaithe a oibríonn Kubernetes.

Cuardach DNS i Kubernetes

Ceann de na príomhbhuntáistí a bhaineann le feidhmchláir a imscaradh ar Kubernetes ná fionnachtain iarratais gan uaim. Déantar idirghníomhaíocht laistigh den bhraisle a shimpliú go mór a bhuíochas leis an gcoincheap seirbhíse (seirbhís), ar IP fíorúil é a thacaíonn le sraith seoltaí IP pod. Mar shampla, má tá an tseirbhís vanilla mian leis teagmháil a dhéanamh leis an tseirbhís chocolate, is féidir leis rochtain dhíreach a fháil ar an IP fíorúil le haghaidh chocolate. Éiríonn an cheist: cé a réiteoidh an t-iarratas DNS sa chás seo chocolate Agus Conas?

Tá taifeach ainm DNS cumraithe ar bhraisle Kubernetes ag baint úsáide as CoreDNS. Cláraíonn Kubelet pod le CoreDNS mar fhreastalaí ainm i gcomhaid /etc/resolv.conf gach pods. Má fhéachann tú ar an ábhar /etc/resolv.conf aon pod, beidh sé cuma rud éigin mar seo:

search hello.svc.cluster.local svc.cluster.local cluster.local
nameserver 10.152.183.10
options ndots:5

Úsáideann cliaint DNS an chumraíocht seo chun iarratais a chur ar aghaidh chuig an bhfreastalaí DNS. I gcomhad resolv.conf tá an t-eolas seo a leanas ann:

  • freastalaí ainm: freastalaí a seolfar iarratais DNS chuige. Inár gcás, is é seo seoladh na seirbhíse CoreDNS;
  • cuardaigh: Sainmhíníonn sé an cosán cuardaigh le haghaidh fearainn ar leith. Tá sé suimiúil go bhfuil google.commrkaran.dev nach bhfuil FQDN (ainmneacha fearainn láncháilithe). De réir an ghnáthghnáthaimh a leanann an chuid is mó de na réititheoirí DNS, ní mheastar ach na cinn a chríochnaíonn le ponc “.”, a ionadaíonn an fhréamhchrios, ina bhfearainn láncháilithe (FDQN). Is féidir le roinnt réititheoirí pointe a chur leo féin. Mar sin, mrkaran.dev. an t-ainm fearainn láncháilithe (FQDN), agus mrkaran.dev - Ní hea;
  • ndots: An paraiméadar is suimiúla (tá an t-alt seo faoi). ndots sonraítear uimhir tairsí na poncanna in ainm iarratais sula meastar gur ainm fearainn “láncháilithe” é. Labhróimid níos mó faoi seo níos déanaí nuair a dhéanaimid anailís ar an seicheamh cuardaigh DNS.

Cuardach DNS i Kubernetes

A ligean ar a fheiceáil cad a tharlaíonn nuair a iarraimid mrkaran.dev sa phod:

$ 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

Don turgnamh seo, shocraigh mé leibhéal logála CoreDNS go all (rud a fhágann go bhfuil sé briathra go leor). Breathnaímid ar logaí an pod 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

Phew. Tarraingíonn dhá rud d’aird anseo:

  • Téann an t-iarratas trí gach céim den chuardach go dtí go mbeidh an cód sa fhreagra NOERROR (Tuigeann cliaint DNS é agus stóráiltear é mar thoradh air). NXDOMAIN ciallaíonn sé sin nár aimsíodh aon taifead don ainm fearainn tugtha. Toisc go bhfuil an mrkaran.dev nach ainm FQDN é (de réir ndots=5), féachann an réititheoir ar an gcosán cuardaigh agus cinneann sé ord na n-iarratas;
  • taifeadtaí А и АААА teacht i gcomhthreo. Is é fírinne an scéil go bhfuil iarratais aon-uaire i /etc/resolv.conf De réir réamhshocraithe, tá siad cumraithe sa chaoi is go ndéantar cuardaigh chomhthreomhara ag baint úsáide as na prótacail IPv4 agus IPv6. Is féidir leat an iompar seo a chealú tríd an rogha a chur leis single-request в resolv.conf.

Tabhair faoi deara: glibc a chumrú chun na hiarratais seo a sheoladh go seicheamhach, agus musl - ní hea, mar sin ba chóir d'úsáideoirí Alpacha a thabhairt faoi deara.

Ag triail le ndots

Déanaimis triail beagán níos mó leis ndots agus féachaimis conas a iompraíonn an paraiméadar seo. Tá an smaoineamh simplí: ndots a chinneann cé acu an ndéileálfaidh an cliant DNS leis an bhfearann ​​​​mar fhearann ​​iomlán nó coibhneasta. Mar shampla, i gcás cliant DNS simplí google, cén chaoi a bhfuil a fhios aige an bhfuil an fearann ​​seo iomlán? Má shocraíonn tú ndots comhionann le 1, déarfaidh an cliant: “Ó, in google níl aon phointe amháin ann; Is dóigh liom go rachaidh mé tríd an liosta cuardaigh ar fad.” Mar sin féin, má iarrann tú google.com, déanfar neamhaird iomlán ar liosta na n-iarmhíreanna toisc go gcomhlíonann an t-ainm iarrtha an tairseach ndots (tá pointe amháin ar a laghad).

Déanaimis cinnte de seo:

$ 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

Logchomhaid 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

Ó i mrkaran níl aon phointe amháin ann, rinneadh an cuardach thar liosta iomlán na n-iarmhíreanna.

Tabhair faoi deara: i ndáiríre an luach uasta ndots teoranta do 15; de réir réamhshocraithe in Kubernetes is é 5 é.

Feidhm i dtáirgeadh

Má dhéanann feidhmchlár go leor glaonna líonra seachtracha, féadfaidh DNS a bheith ina bhac i gcás tráchta gníomhach, ós rud é go ndéanann réiteach ainmneacha go leor ceisteanna gan ghá (sula dtagann an córas chuig an gceann ceart). De ghnáth ní chuireann feidhmchláir fréamhchrios le hainmneacha fearainn, ach is cosúil le haic é seo. Is é sin, in ionad a iarraidh api.twitter.com, is féidir leat hardcode api.twitter.com. (le ponc) san fheidhmchlár, a spreagfaidh cliaint DNS chun cuardaigh údarásacha a dhéanamh go díreach ar an bhfearann ​​iomlán.

Ina theannta sin, ag tosú le leagan Kubernetes 1.14, síntí dnsConfig и dnsPolicy fuair stádas cobhsaí. Mar sin, agus pod á imscaradh, is féidir leat an luach a laghdú ndots, abair, suas le 3 (agus fiú suas le 1!). Mar gheall air seo, beidh ar gach teachtaireacht laistigh de nód an fearann ​​iomlán a chur san áireamh. Tá sé seo ar cheann de na comhbhabhtáil clasaiceach nuair a chaithfidh tú a roghnú idir feidhmíocht agus iniomparthacht. Feictear dom nár cheart duit a bheith buartha faoi seo ach amháin má tá latency ultra-íseal ríthábhachtach do d'iarratas, ós rud é go bhfuil na torthaí DNS i dtaisce go hinmheánach freisin.

tagairtí

D'fhoghlaim mé ar dtús faoin ngné seo ar K8s - cruinniú, ar siúl ar 25 Eanáir. Bhí plé ar an bhfadhb seo, i measc rudaí eile.

Seo roinnt nasc le haghaidh tuilleadh iniúchta:

Nóta: Roghnaigh mé gan úsáid a bhaint as dig san alt seo. dig cuireann sé ponc (aitheantóir fréimhe-chrios leis go huathoibríoch), rud a fhágann go bhfuil an fearann ​​"láncháilithe" (FQDN), aon trí é a rith tríd an liosta cuardaigh ar dtús. Scríobhadh faoi seo i ceann de na foilseacháin roimhe seo. Mar sin féin, is mór an t-ionadh é, go ginearálta, go gcaithfear bratach ar leith a shonrú don iompar caighdeánach.

DNSing Shona! Feicfidh mé ar ball thú!

PS ó aistritheoir

Léigh freisin ar ár mblag:

Foinse: will.com

Add a comment