[k8s] CoreDNS
์ฟ ๋ฒ๋คํฐ์ค๋ ์๋น์ค๋ค ๊ฐ์ ๋ด๋ถ์ ์ธ ํต์ ์ ์ํด ์์ฒด์ ์ธ DNS ์์คํ
์ ๋ด์ฅํ๊ณ ์๋ค.
์์ ์๋ kubeDNS๋ผ๊ณ ์์๋๋ฐ, ๊ทธ๊ฑด deptrecated๋์ด์ v1.35๋ถํฐ๋ CoreDNS๊ฐ ๊ธฐ๋ณธ๊ฐ์ด๋ค.
CoreDNS๋ kube-system์ ์ํ๋ ๊ธฐ๋ณธ ๋ฆฌ์์ค๋ค.
๋ค์ ๋ช
๋ น์ ์ฌ์ฉํด์ ์ํ๋ฅผ ํ์ธํ ์ ์๋ค.
kubectl get all -n kube-system -l k8s-app=kube-dns
๊ฐ์ฅ ์ค์ํ ํต์ฌ ์ปดํฌ๋ํธ์ด๋ฏ๋ก, ์ด๊ฒ๋ค์ด ์ ์์ ์ธ ์ํ๊ฐ ์๋๋ผ๋ฉด ๋คํธ์ํน ์์คํ
์ ๋ฐ์ด ๊ณ ์ฅ๋ ๊ฒ์ด๋ค.
๊ธฐ๋ณธ ๊ตฌ์กฐ
CoreDNS๋ ์ฟ ๋ฒ๋คํฐ์ค ์์คํ ์ ์ผ๋ถ๋ก์ ๊ธฐ๋ฅํ๋ฉฐ, DNS ์์ฒญ์ ์ค๊ฐ์ ๊ฐ๋ก์ฑ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ์ทจํ๋ค.
์ฟ ๋ฒ๋คํฐ์ค์ ๋ฆฌ์์ค ์ด๋ฆ์ผ๋ก ๊ตฌ์ฑ๋ ๋๋ฉ์ธ ์์ฒญ์ด ๋ค์ด์ฌ ๊ฒฝ์ฐ, ๊ทธ ๋ฆฌ์์ค๋ฅผ ์ฐพ์์ ์๋ ค์ค๋ค.
ํ์ง๋ง ๋ชจ๋ฅด๋ ๋๋ฉ์ธ์ด๋ผ๋ฉด ์ง์ง DNS์ ๋ ๋๊ฒจ๋ฒ๋ฆฌ๋ ์์ผ๋ก ๋์ํ๋ค.
๋ด๋ถ DNS
CoreDNS๋ Pod์ ์๋น์ค์ ๋ํด์ ๋ด๋ถ DNS ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
๋น์ฐํ ์ด๊ฑด ํด๋ฌ์คํฐ ๋ด Pod๋ค์์๋ง ์ฌ์ฉํ ์ ์๋ ๊ฐ์ง ๋๋ฉ์ธ์ด๋ค. ๋ฐ๊นฅ์์๋ ๋์ํ์ง ์๋๋ค.
์๋น์ค์ ๊ฒฝ์ฐ ํ๋ค์์ "์๋น์ค๋ช .๋ค์์คํ์ด์ค๋ช .cluster.local"์ด๊ณ , "์๋น์ค๋ช .๋ค์์คํ์ด์ค๋ช "์ผ๋ก ์ค์ผ ์๋ ์๊ณ , ๋ค์์คํ์ด์ค๋ง์ ๋์ผํ๋ค๋ฉด "์๋น์ค๋ช "์ผ๋ก ํ์น ์๋ ์๋ค.

Pod์ ๊ฒฝ์ฐ์๋ ๋ด๋ถ DNS๋ฅผ ์ต์ง๋ก ์ฐ๋ ค๋ฉด ์ธ ์๋ ์์ง๋ง ์ผ๋ฐ์ ์ด์ง ์๋ค.
DNS ์ค์
CoreDNS๊ฐ ๋๋ฉ์ธ ํ์ธ๋ฅผ ํ๊ธด ํ์ง๋ง, ๊ฒฐ๊ตญ์๋ ์ง์ง ์ธ๋ถ DNS๋ ์จ์ผํ๋ค.
๋น์ฐํ DNS ๋ชฉ๋ก์ ์กฐ์ ์ด ๊ฐ๋ฅํ๋ฉฐ, ์ปค์คํ
DNS ์๋ฒ๋ฅผ ์ถ๊ฐํ ์๋ ์๋ค.
๋ค์ ๋ช ๋ น์ CoreDNS์ ์ค์ ์ ๋ณด๋ฅผ ์กฐํํ๋ค.
kubectl get configmap -n kube-system coredns -o yaml
์ฌ๊ธฐ์ forward๋ผ๋ ์ ์ด ์ง์ง DNS๋ก ๋ ๋๊ธฐ๋ ๊ธฐ์ค๊ฐ์ด๋ค.
์ด ๊ฒฝ์ฐ์๋ ํด๋น ๋
ธ๋ ํธ์คํธ์ /etc/resolved.conf๋ก ๋ ๋๊ธด๋ค๋ ๋ป์ด๋ค. ์ฆ, ํธ์คํธ์ ๋์ผํ DNS๋ฅผ ์ด๋ค.
์ ๊ฑธ ๋ช ์์ ์ผ๋ก ๋ฐ๊พธ๊ณ ์ถ๋ค๋ฉด ํธ์คํธ ์์คํ ์ /etc/resolved.conf ๋ด์ฉ์ ๋ฐ๋๊ฒ ํ๊ฑฐ๋, ์ ํ ์์ฒด๋ฅผ "forward . 1.1.1.1 8.8.8.8" ๊ฐ์ ์์ผ๋ก ๋ณ๊ฒฝํ๊ณ CoreDNS ์๋ฒ๋ฅผ ์ฌ๋ถํ ํ๋ฉด ๋๋ค.
์ฐธ์กฐ
https://kubernetes.io/ko/docs/concepts/services-networking/dns-pod-service/
https://kubernetes.io/ko/docs/tasks/administer-cluster/coredns/
https://github.com/coredns/deployment/blob/master/kubernetes/Scaling_CoreDNS.md