ื—ื™ืคื•ืฉ DNS ื‘-Kubernetes

ื”ืขืจื”. ืชืจื’ื•ื: ื‘ืขื™ื™ืช DNS ื‘- Kubernetes, ืื• ืœื™ืชืจ ื“ื™ื•ืง, ื”ื’ื“ืจื•ืช ืคืจืžื˜ืจื™ื ndots, ืคื•ืคื•ืœืจื™ ื‘ืื•ืคืŸ ืžืคืชื™ืข, ื•ื›ื‘ืจ ืœื ื”ืจืืฉื•ืŸ ืฉื ื”. ื‘ื”ืขืจื” ื ื•ืกืคืช ื‘ื ื•ืฉื ื–ื”, ืžื—ื‘ืจื•, ืžื”ื ื“ืก DevOps ืžื—ื‘ืจืช ืชื™ื•ื•ืš ื’ื“ื•ืœื” ื‘ื”ื•ื“ื•, ืžื“ื‘ืจ ื‘ืฆื•ืจื” ืคืฉื•ื˜ื” ื•ืชืžืฆื™ืชื™ืช ืžืื•ื“ ืขืœ ืžื” ืฉืžื•ืขื™ืœ ืœืขืžื™ืชื™ื ื”ืžืคืขื™ืœื™ื Kubernetes ืœื“ืขืช.

ื—ื™ืคื•ืฉ DNS ื‘-Kubernetes

ืื—ื“ ื”ื™ืชืจื•ื ื•ืช ื”ืขื™ืงืจื™ื™ื ืฉืœ ืคืจื™ืกืช ื™ื™ืฉื•ืžื™ื ื‘- Kubernetes ื”ื•ื ื’ื™ืœื•ื™ ื—ืœืง ืฉืœ ื™ื™ืฉื•ืžื™ื. ื”ืื™ื ื˜ืจืืงืฆื™ื” ื‘ืชื•ืš ืืฉื›ื•ืœ ืžืคื•ืฉื˜ืช ืžืื•ื“ ื”ื•ื“ื•ืช ืœืชืคื™ืกืช ื”ืฉื™ืจื•ืช (ืฉืึตืจื•ึผืช), ืฉื”ื•ื IP ื•ื™ืจื˜ื•ืืœื™ ื”ืชื•ืžืš ื‘ืงื‘ื•ืฆื” ืฉืœ ื›ืชื•ื‘ื•ืช IP ืฉืœ ืชืจืžื™ืœื™ื. ืœื“ื•ื’ืžื”, ืื ื”ืฉื™ืจื•ืช vanilla ืžืขื•ื ื™ื™ืŸ ืœื™ืฆื•ืจ ืงืฉืจ ืขื ื”ืฉื™ืจื•ืช chocolate, ื”ื•ื ื™ื›ื•ืœ ืœื’ืฉืช ื™ืฉื™ืจื•ืช ืœ-IP ื”ื•ื•ื™ืจื˜ื•ืืœื™ ืขื‘ื•ืจ chocolate. ื ืฉืืœืช ื”ืฉืืœื”: ืœืžื™ ื‘ืžืงืจื” ื–ื” ื™ืคืชื•ืจ ืืช ื‘ืงืฉืช ื”-DNS chocolate ื•ืื™ืš?

ืจื–ื•ืœื•ืฆื™ื™ืช ืฉื DNS ืžื•ื’ื“ืจืช ื‘ืืฉื›ื•ืœ Kubernetes ื‘ืืžืฆืขื•ืช CoreDNS. Kubelet ืจื•ืฉื ืคื•ื“ ืขื CoreDNS ื›ืฉืจืช ืฉืžื•ืช ื‘ืงื‘ืฆื™ื /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;
  • search: ืžื’ื“ื™ืจ ืืช ื ืชื™ื‘ ื”ื—ื™ืคื•ืฉ ืขื‘ื•ืจ ืชื—ื•ื ืกืคืฆื™ืคื™. ื–ื” ืžืขื ื™ื™ืŸ google.com ืื• mrkaran.dev ืื™ื ื FQDN (ืฉืžื•ืช ื“ื•ืžื™ื™ืŸ ืžื•ืกืžื›ื™ื ืœื—ืœื•ื˜ื™ืŸ). ืขืœ ืคื™ ื”ืžื•ืกื›ืžื” ื”ืกื˜ื ื“ืจื˜ื™ืช ืฉืจื•ื‘ ืคื•ืชืจื™ ื”-DNS ืคื•ืขืœื™ื ืœืคื™ื”, ืจืง ืืœื• ื”ืžืกืชื™ื™ืžื™ื ื‘ื ืงื•ื“ื” ".", ื”ืžื™ื™ืฆื’ืช ืืช ืื–ื•ืจ ื”ืฉื•ืจืฉ, ื ื—ืฉื‘ื™ื ืœื“ื•ืžื™ื™ื ื™ื ื›ืฉื™ืจื™ื ืœื—ืœื•ื˜ื™ืŸ (FDQN). ื—ืœืง ืžื”ืคื•ืชืจื™ื ื™ื›ื•ืœื™ื ืœื”ื•ืกื™ืฃ ื ืงื•ื“ื” ื‘ืขืฆืžื. ืœื›ืŸ, mrkaran.dev. ื”ื•ื ืฉื ื”ื“ื•ืžื™ื™ืŸ ื”ืžืœื (FQDN), ื• mrkaran.dev - ืœื;
  • ื ืงื•ื“ื•ืช: ื”ืคืจืžื˜ืจ ื”ืžืขื ื™ื™ืŸ ื‘ื™ื•ืชืจ (ืžืืžืจ ื–ื” ืขื•ืกืง ื‘ื•). ndots ืžืฆื™ื™ืŸ ืืช ืžืกืคืจ ื”ืกืฃ ืฉืœ ื ืงื•ื“ื•ืช ื‘ืฉื ื‘ืงืฉื” ืœืคื ื™ ืฉื”ื•ื ื™ื™ื—ืฉื‘ ื›ืฉื ื“ื•ืžื™ื™ืŸ "ืžื•ืกืžืš ืœื—ืœื•ื˜ื™ืŸ". ื ื“ื‘ืจ ืขืœ ื›ืš ื™ื•ืชืจ ืžืื•ื—ืจ ื™ื•ืชืจ ื›ืืฉืจ ื ื ืชื— ืืช ืจืฆืฃ ื‘ื“ื™ืงืช ื”-DNS.

ื—ื™ืคื•ืฉ DNS ื‘-Kubernetes

ื‘ื•ื ื ืจืื” ืžื” ืงื•ืจื” ื›ืฉื ืฉืืœ 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 ืงื•ื‘ืข ืื ืœืงื•ื— ื”-DNS ื™ืชื™ื™ื—ืก ืœืชื—ื•ื ื›ืืœ ืžื•ื—ืœื˜ ืื• ื™ื—ืกื™. ืœื“ื•ื’ืžื”, ื‘ืžืงืจื” ืฉืœ ืœืงื•ื— 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 ืœื‘ืฆืข ื—ื™ืคื•ืฉื™ื ืกืžื›ื•ืชื™ื™ื ื™ืฉื™ืจื•ืช ืขืœ ื”ืชื—ื•ื ื”ืžื•ื—ืœื˜.

ื‘ื ื•ืกืฃ, ื”ื—ืœ ืžื’ืจืกื” 1.14 ืฉืœ Kubernetes, ื”ืจื—ื‘ื•ืช dnsConfig ะธ dnsPolicy ืงื™ื‘ืœ ืžืฆื‘ ื™ืฆื™ื‘. ืœืคื™ื›ืš, ื‘ืขืช ืคืจื™ืกืช ืคื•ื“, ืืชื” ื™ื›ื•ืœ ืœื”ืคื—ื™ืช ืืช ื”ืขืจืš ndots, ื ื ื™ื—, ืขื“ 3 (ื•ืืคื™ืœื• ืขื“ 1!). ื‘ื’ืœืœ ื–ื”, ื›ืœ ื”ื•ื“ืขื” ื‘ืชื•ืš ืฆื•ืžืช ืชืฆื˜ืจืš ืœื›ืœื•ืœ ืืช ื”ื“ื•ืžื™ื™ืŸ ื”ืžืœื. ื–ื”ื• ืื—ื“ ืžื”ืคืฉืจื•ืช ื”ืงืœืืกื™ื•ืช ื›ืืฉืจ ืืชื” ืฆืจื™ืš ืœื‘ื—ื•ืจ ื‘ื™ืŸ ื‘ื™ืฆื•ืขื™ื ื•ื ื™ื™ื“ื•ืช. ื ืจืื” ืœื™ ืฉืืชื” ืฆืจื™ืš ืœื“ืื•ื’ ืœื’ื‘ื™ ื–ื” ืจืง ืื ื–ืžืŸ ืื—ื–ื•ืจ ื ืžื•ืš ื‘ืžื™ื•ื—ื“ ื”ื•ื ื—ื™ื•ื ื™ ืœื™ื™ืฉื•ื ืฉืœืš, ืžื›ื™ื•ื•ืŸ ืฉืชื•ืฆืื•ืช ื”-DNS ื ืฉืžืจื•ืช ื’ื ื‘ืื•ืคืŸ ืคื ื™ืžื™.

ืชื–ื›ื•ืจ

ืœืžื“ืชื™ ืœืจืืฉื•ื ื” ืขืœ ื”ืชื›ื•ื ื” ื”ื–ื• ื‘- ืžืคื’ืฉ K8s, ืฉื ืขืจืš ื‘-25 ื‘ื™ื ื•ืืจ. ื”ื™ื” ื“ื™ื•ืŸ ืขืœ ื‘ืขื™ื” ื–ื•, ื‘ื™ืŸ ื”ื™ืชืจ.

ื”ื ื” ื›ืžื” ืงื™ืฉื•ืจื™ื ืœื—ืงื™ืจื” ื ื•ืกืคืช:

ื”ืขืจื”: ื‘ื—ืจืชื™ ืœื ืœื”ืฉืชืžืฉ dig ื‘ืžืืžืจ ื–ื”. dig ืžื•ืกื™ืฃ ืื•ื˜ื•ืžื˜ื™ืช ื ืงื•ื“ื” (ืžื–ื”ื” ืื–ื•ืจ ืฉื•ืจืฉ), ืžื” ืฉื”ื•ืคืš ืืช ื”ื“ื•ืžื™ื™ืŸ ืœ"ืžื•ืกืžืš ืœื—ืœื•ื˜ื™ืŸ" (FQDN), ืœื ืขืœ ื™ื“ื™ ื”ืคืขืœืชื• ืชื—ื™ืœื” ื‘ืจืฉื™ืžืช ื”ื—ื™ืคื•ืฉ. ื›ืชื‘ ืขืœ ื–ื” ื‘ ืื—ื“ ื”ืคืจืกื•ืžื™ื ื”ืงื•ื“ืžื™ื. ืขื ื–ืืช, ื–ื” ื“ื™ ืžืคืชื™ืข ืฉื‘ืื•ืคืŸ ื›ืœืœื™, ื™ืฉ ืœืฆื™ื™ืŸ ื“ื’ืœ ื ืคืจื“ ืขื‘ื•ืจ ื”ื”ืชื ื”ื’ื•ืช ื”ืกื˜ื ื“ืจื˜ื™ืช.

DNSing ืฉืžื—! ื ืชืจืื” ืื—ืจ ื›ืš!

ื .ื‘ ืžื”ืžืชืจื’ื

ืงืจื ื’ื ื‘ื‘ืœื•ื’ ืฉืœื ื•:

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”