๋ฉ๋ชจ. ๋ฒ์ญ: Kubernetes์ DNS ๋ฌธ์ , ๋ ์ ํํ๊ฒ๋ ๋งค๊ฐ๋ณ์ ์ค์ ๋ฌธ์ 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
(์ด๋ก ์ธํด ๋งค์ฐ ์ฅํฉํด์ง๋๋ค). 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
), ํด์๊ธฐ๋ ๊ฒ์ ๊ฒฝ๋ก๋ฅผ ์ดํด๋ณด๊ณ ์์ฒญ ์์๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. - ํญ๋ชฉ
ะ
ะธะะะะ
ํํํ๊ฒ ๋์ฐฉ. ์ฌ์ค์ ์ผํ์ฑ ์์ฒญ์ด/etc/resolv.conf
๊ธฐ๋ณธ์ ์ผ๋ก IPv4 ๋ฐ IPv6 ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ๋ณ๋ ฌ ๊ฒ์์ด ์ํ๋๋ ๋ฐฉ์์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ต์ ์ ์ถ๊ฐํ์ฌ ์ด ๋์์ ์ทจ์ํ ์ ์์ต๋๋ค.single-request
ะฒresolv.conf
.
์ฐธ๊ณ : glibc
์ด๋ฌํ ์์ฒญ์ ์์ฐจ์ ์ผ๋ก ๋ณด๋ด๋๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค. musl
- ์๋์, ๋ฐ๋ผ์ ์ํ์ธ ์ฌ์ฉ์๋ ์ฃผ์ํด์ผ ํฉ๋๋ค.
Ndot ์คํ
์ข ๋ ์คํํด๋ณด์ 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
์์ ์ ์ธ ์ํ๋ฅผ ๋ฐ์์ต๋๋ค. ๋ฐ๋ผ์ ํฌ๋๋ฅผ ๋ฐฐํฌํ ๋ ๊ฐ์ ์ค์ผ ์ ์์ต๋๋ค. ndots
, ์๋ฅผ ๋ค์ด ์ต๋ 3๊ฐ(์ฌ์ง์ด ์ต๋ 1๊ฐ!)๊น์ง ๊ฐ๋ฅํฉ๋๋ค. ์ด๋ก ์ธํด ๋
ธ๋ ๋ด์ ๋ชจ๋ ๋ฉ์์ง์๋ ์ ์ฒด ๋๋ฉ์ธ์ด ํฌํจ๋์ด์ผ ํฉ๋๋ค. ์ด๋ ์ฑ๋ฅ๊ณผ ์ด์์ฑ ์ฌ์ด์์ ์ ํํด์ผ ํ ๋ ๋ฐ์ํ๋ ์ ํ์ ์ธ ์ ์ถฉ์ ์ค ํ๋์
๋๋ค. DNS ๊ฒฐ๊ณผ๋ ๋ด๋ถ์ ์ผ๋ก ์บ์๋๋ฏ๋ก ์ ํ๋ฆฌ์ผ์ด์
์ ๋งค์ฐ ์งง์ ๋๊ธฐ ์๊ฐ์ด ์ค์ํ ๊ฒฝ์ฐ์๋ง ์ด์ ๋ํด ๊ฑฑ์ ํด์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค.
์ฐธ์กฐ
์ด ๊ธฐ๋ฅ์ ๋ํด ์ฒ์ ์๊ฒ ๋ ๊ฒ์
์ถ๊ฐ ํ์์ ์ํ ๋ช ๊ฐ์ง ๋งํฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
-
์ค๋ช , Kubernetes์์ ndots=5์ธ ์ด์ ; -
๋ฉ์ง ๋ฌผ๊ฑด๋ค ndot ๋ณ๊ฒฝ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ ์ด๋ค ์ํฅ์ ๋ฏธ์น๋์ง; -
๋ถ์ผ์น musl๊ณผ glibc ๋ฆฌ์กธ๋ฒ ์ฌ์ด.
์ฐธ๊ณ : ๋๋ ์ฌ์ฉํ์ง ์๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. dig
์ด ๊ธฐ์ฌ์์. dig
์ (๋ฃจํธ ์์ญ ์๋ณ์)์ ์๋์ผ๋ก ์ถ๊ฐํ์ฌ ๋๋ฉ์ธ์ "์ ๊ทํ๋"(FQDN)์ผ๋ก ๋ง๋ญ๋๋ค. ์๋ ๋จผ์ ๊ฒ์ ๋ชฉ๋ก์ ํตํด ์คํํฉ๋๋ค. ์ด์ ๋ํด ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
์ฆ๊ฑฐ์ด DNSing! ๋์ค์ ๋ด์!
๋ฒ์ญ๊ฐ์ ์ถ์
๋ธ๋ก๊ทธ์์๋ ์ฝ์ด๋ณด์ธ์.
- ยซ
Kubernetes ๋คํธ์ํน์ ์ํ Calico: ์๊ฐ ๋ฐ ์ฝ๊ฐ์ ๊ฒฝํ "; - ยซ
CoreDNS - ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์ธ๊ณ๋ฅผ ์ํ DNS ์๋ฒ ๋ฐ Kubernetes์ฉ ์๋น์ค ๊ฒ์ "; - "Kubernetes์ ๋คํธ์ํน์ ๋ํ ๊ทธ๋ฆผ ๊ฐ์ด๋":
ํํธ 1 ๋ฐ 2(๋คํธ์ํฌ ๋ชจ๋ธ, ์ค๋ฒ๋ ์ด ๋คํธ์ํฌ) ,3๋ถ(์๋น์ค ๋ฐ ํธ๋ํฝ ์ฒ๋ฆฌ) .
์ถ์ฒ : habr.com