ΠΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².: ΠΡΠΎΠ±Π»Π΅ΠΌΠ° DNS Π² Kubernetes, Π° ΡΠΎΡΠ½Π΅Π΅ β Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ndots
, β Π½Π° ΡΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π°, ΠΏΡΠΈΡΡΠΌ ΡΠΆΠ΅
ΠΠ΄Π½ΠΎ ΠΈΠ· Π³Π»Π°Π²Π½ΡΡ
ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Kubernetes β Π±Π΅ΡΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ½ΡΡΡΠΈΠΊΠ»Π°ΡΡΠ΅ΡΠ½ΠΎΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΠ°Π΅ΡΡΡ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ° (vanilla
ΠΆΠ΅Π»Π°Π΅Ρ ΡΠ²ΡΠ·Π°ΡΡΡΡ Ρ ΡΠ΅ΡΠ²ΠΈΡΠΎΠΌ chocolate
, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ Π½Π°ΠΏΡΡΠΌΡΡ ΠΊ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΌΡ IP Π΄Π»Ρ chocolate
. ΠΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π²ΠΎΠΏΡΠΎΡ: ΠΊΡΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ°Π·ΡΠ΅ΡΠΈΡ DNS-Π·Π°ΠΏΡΠΎΡ ΠΊ chocolate
ΠΈ ΠΊΠ°ΠΊ?
Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ DNS Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ Kubernetes Ρ ΠΏΠΎΠΌΠΎΡΡΡ /etc/resolv.conf
Π²ΡΠ΅Ρ
pod’ΠΎΠ². ΠΡΠ»ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ /etc/resolv.conf
Π»ΡΠ±ΠΎΠ³ΠΎ pod’Π°, ΠΎΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
search hello.svc.cluster.local svc.cluster.local cluster.local
nameserver 10.152.183.10
options ndots:5
ΠΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ DNS-ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π½Π° DNS-ΡΠ΅ΡΠ²Π΅Ρ. Π ΡΠ°ΠΉΠ»Π΅ resolv.conf
ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ:
- nameserver: cΠ΅ΡΠ²Π΅Ρ, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄ΡΡ Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡΡΡ DNS-Π·Π°ΠΏΡΠΎΡΡ. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ Π°Π΄ΡΠ΅Ρ ΡΠ΅ΡΠ²ΠΈΡΠ° CoreDNS;
- search: ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΡΡΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π°. ΠΡΠ±ΠΎΠΏΡΡΠ½ΠΎ, ΡΡΠΎ
google.com
ΠΈΠ»ΠΈmrkaran.dev
Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ FQDN (ΠΏΠΎΠ»Π½ΡΠΌΠΈ Π΄ΠΎΠΌΠ΅Π½Π½ΡΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ). Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌΡ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΡΠ»Π΅Π΄ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ resolver’ΠΎΠ² DNS, ΠΏΠΎΠ»Π½ΡΠΌΠΈ (FDQN) Π΄ΠΎΠΌΠ΅Π½Π°ΠΌΠΈ ΡΡΠΈΡΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ ΡΠΎΡΠΊΠΎΠΉ Β«.Β», ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ ΠΊΠΎΡΠ½Π΅Π²ΡΡ Π·ΠΎΠ½Ρ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ resolver’Ρ ΡΠΌΠ΅ΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠΎΡΠΊΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ,mrkaran.dev.
β ΠΏΠΎΠ»Π½ΠΎΠ΅ Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΈΠΌΡ (FQDN), Π°mrkaran.dev
β Π½Π΅Ρ; - ndots: Π‘Π°ΠΌΡΠΉ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ (ΡΡΠ° ΡΡΠ°ΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎ Π½Π΅ΠΌ).
ndots
Π·Π°Π΄Π°Π΅Ρ ΠΏΠΎΡΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠΎΡΠ΅ΠΊ Π² ΠΈΠΌΠ΅Π½ΠΈ Π·Π°ΠΏΡΠΎΡΠ°, ΠΏΡΠΈ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠ½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ Β«ΠΏΠΎΠ»Π½ΠΎΠ΅Β» Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΈΠΌΡ. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΡΡΠΎΠΌ ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΠΎΠ·ΠΆΠ΅, ΠΊΠΎΠ³Π΄Π° Π±ΡΠ΄Π΅ΠΌ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ DNS-ΠΏΠΎΠΈΡΠΊΠ°.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ mrkaran.dev
Π² pod’Π΅:
$ 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
(ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ Π²Π΅ΡΡΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎΡΠ»ΠΎΠ²Π½ΡΠΌ). ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° Π»ΠΎΠ³ΠΈ 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
Π€ΡΡ . ΠΠ²Π΅ Π²Π΅ΡΠΈ Π·Π΄Π΅ΡΡ ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅:
- ΠΠ°ΠΏΡΠΎΡ ΠΏΡΠΎΡ
ΠΎΠ΄ΠΈΡ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΡΡΠ°ΠΏΠ°ΠΌ ΠΏΠΎΠΈΡΠΊΠ° Π΄ΠΎ ΡΠ΅Ρ
ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΎΡΠ²Π΅Ρ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΊΠΎΠ΄
NOERROR
(DNS-ΠΊΠ»ΠΈΠ΅Π½ΡΡ Π΅Π³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΠΈ Ρ ΡΠ°Π½ΡΡ ΠΊΠ°ΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ).NXDOMAIN
ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ Π·Π°ΠΏΠΈΡΡ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡmrkaran.dev
Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ FQDN-ΠΈΠΌΠ΅Π½Π΅ΠΌ (Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρndots=5
), resolver ΡΠΌΠΎΡΡΠΈΡ Π½Π° ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡΠΉ ΠΏΡΡΡ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π·Π°ΠΏΡΠΎΡΠΎΠ²; - ΠΠ°ΠΏΠΈΡΠΈ
Π
ΠΈΠΠΠΠ
ΠΏΠΎΡΡΡΠΏΠ°ΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°Π·ΠΎΠ²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ Π²/etc/resolv.conf
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π°ΡΡΡΠΎΠ΅Π½Ρ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΠΈΡΠΊ ΠΏΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°ΠΌ IPv4 ΠΈ IPv6. ΠΡΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΎΠΏΡΠΈΡsingle-request
Π²resolv.conf
.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: glibc
ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ ΠΎΡΠΏΡΠ°Π²ΠΊΡ ΡΡΠΈΡ
Π·Π°ΠΏΡΠΎΡΠΎΠ², Π° musl
β Π½Π΅Ρ, ΡΠ°ΠΊ ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ Alpine ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠΈΠ½ΡΡΡ ΡΡΠΎ ΠΊ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ.
ΠΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΡΠ΅ΠΌ Ρ 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.
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² production
ΠΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²Π½Π΅ΡΠ½ΠΈΡ
ΡΠ΅ΡΠ΅Π²ΡΡ
Π²ΡΠ·ΠΎΠ²ΠΎΠ², DNS ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΡΠ·ΠΊΠΈΠΌ ΠΌΠ΅ΡΡΠΎΠΌ Π² ΡΠ»ΡΡΠ°Π΅ Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΡΠ°ΡΠΈΠΊΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΈΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π»ΠΈΡΠ½ΠΈΡ
Π·Π°ΠΏΡΠΎΡΠΎΠ² (ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΡΠΈΡΡΠ΅ΠΌΠ° Π΄ΠΎΠ±Π΅ΡΠ΅ΡΡΡ Π΄ΠΎ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ). ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΊΠΎΡΠ½Π΅Π²ΡΡ Π·ΠΎΠ½Ρ ΠΊ Π΄ΠΎΠΌΠ΅Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π°ΠΌ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΡΡΠ½Π΅Ρ Π½Π° Ρ
Π°ΠΊ. Π’ΠΎ Π΅ΡΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ api.twitter.com
, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°’hardcode’ΠΈΡΡ api.twitter.com.
(Ρ ΡΠΎΡΠΊΠΎΠΉ) Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΡΡΠΎ ΠΏΠΎΠ±ΡΠ΄ΠΈΡ DNS-ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π°Π²ΡΠΎΡΠΈΡΠ΅ΡΠ½ΡΠΉ ΠΏΠΎΠΈΡΠΊ ΡΡΠ°Π·Ρ Π² Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎΠΌ Π΄ΠΎΠΌΠ΅Π½Π΅.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ Kubernetes 1.14, ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ dnsConfig
ΠΈ dnsPolicy
ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΡΡΠ°ΡΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ
. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΡΠΈ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠΈ pod’Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ndots
, ΡΠΊΠ°ΠΆΠ΅ΠΌ, Π΄ΠΎ 3 (ΠΈ Π΄Π°ΠΆΠ΅ Π΄ΠΎ 1!). ΠΠ·-Π·Π° ΡΡΠΎΠ³ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π²Π½ΡΡΡΠΈ ΡΠ·Π»Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΏΠΎΠ»Π½ΡΠΉ Π΄ΠΎΠΌΠ΅Π½. ΠΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΡΠΎΠ², ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΡΡ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ ΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΡΡ. ΠΠ½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΆΠΈΠ²Π°ΡΡ ΠΎΠ± ΡΡΠΎΠΌ ΡΡΠΎΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΡΠ²Π΅ΡΡ
Π½ΠΈΠ·ΠΊΠΈΠ΅ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎ Π²Π°ΠΆΠ½Ρ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ DNS ΡΠ°ΠΊΠΆΠ΅ ΠΊΡΡΠΈΡΡΡΡΡΡ Π²Π½ΡΡΡΠΈ.
Π‘ΡΡΠ»ΠΊΠΈ
ΠΠΏΠ΅ΡΠ²ΡΠ΅ ΠΎΠ± ΡΡΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ Ρ ΡΠ·Π½Π°Π» Π½Π°
ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ»ΠΎΠΊ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ:
-
ΠΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ , ΠΏΠΎΡΠ΅ΠΌΡ ndots=5 Π² Kubernetes; -
ΠΡΠ»ΠΈΡΠ½ΡΠΉ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ndots ΠΎΡΡΠ°ΠΆΠ°Π΅ΡΡΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ; -
Π Π°ΡΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ resolver’Π°ΠΌΠΈ musl ΠΈ glibc.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π― ΠΏΡΠ΅Π΄ΠΏΠΎΡΠ΅Π» Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ dig
Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅. dig
Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΡΠΎΡΠΊΡ (ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ Π·ΠΎΠ½Ρ), Π΄Π΅Π»Π°Ρ Π΄ΠΎΠΌΠ΅Π½ Β«ΠΏΠΎΠ»Π½ΡΠΌΒ» (FQDN), Π½Π΅ ΠΏΡΠΎΠ³ΠΎΠ½ΡΡ Π΅Π³ΠΎ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π· ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠΈΡΠΊΠ°. ΠΠΈΡΠ°Π» ΠΎΠ± ΡΡΠΎΠΌ Π²
Π₯ΠΎΡΠΎΡΠ΅Π³ΠΎ DNS’ΠΈΠ½Π³Π°! ΠΠΎ ΡΠΊΠΎΡΠΎΠ³ΠΎ!
P.S. ΠΎΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΠ°
Π§ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π² Π½Π°ΡΠ΅ΠΌ Π±Π»ΠΎΠ³Π΅:
- Β«
Calico Π΄Π»Ρ ΡΠ΅ΡΠΈ Π² Kubernetes: Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²ΠΎ ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ· ΠΎΠΏΡΡΠ° Β»; - Β«
CoreDNS β DNS-ΡΠ΅ΡΠ²Π΅Ρ Π΄Π»Ρ ΠΌΠΈΡΠ° cloud native ΠΈ Service Discovery Π΄Π»Ρ Kubernetes Β»; - Β«ΠΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Ρ ΡΠ΅ΡΠΈ Π² KubernetesΒ»:
ΡΠ°ΡΡΠΈ 1 ΠΈ 2 (ΡΠ΅ΡΠ΅Π²Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ, ΠΎΠ²Π΅ΡΠ»Π΅ΠΉΠ½ΡΠ΅ ΡΠ΅ΡΠΈ) ,ΡΠ°ΡΡΡ 3 (ΡΠ΅ΡΠ²ΠΈΡΡ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΡΠ°ΡΠΈΠΊΠ°) .
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com