์ฐ๋ฆฌ๋ ์ต๊ทผ Kops๋ฅผ ์ฌ์ฉํ์ฌ AWS์์ Kubernetes 1.9๋ฅผ ์ถ์ํ์ต๋๋ค. ์ด์ ๊ฐ์ฅ ํฐ Kubernetes ํด๋ฌ์คํฐ์ ์๋ก์ด ํธ๋ํฝ์ ์ํํ๊ฒ ๋ฐฐํฌํ๋ ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ธฐ๋ก๋ ๋น์ ์์ ์ธ DNS ์ด๋ฆ ํ์ธ ์ค๋ฅ๋ฅผ ๋ฐ๊ฒฌํ๊ธฐ ์์ํ์ต๋๋ค.
GitHub์๋ ์ด์ ๋ํ ๋ด์ฉ์ด ๊ฝค ๋ง์ด ์์ต๋๋ค. kube-dns
ะธ dnsmasq
. ์ ์๊ฒ ๊ฐ์ฅ ํฅ๋ฏธ๋กญ๊ณ ์๋ก์ด ์ ์ DNS ์์ฒญ ํธ๋ํฝ์ด ํฌ๊ฒ ์ฆ๊ฐํ ๋ฐ๋ก ๊ทธ ์ด์ ์์ต๋๋ค. ๋ด ๊ฒ์๋ฌผ์ ์ด๊ฒ๊ณผ ์ด์ ๋ํด ๋ฌด์์ ํด์ผํ ์ง์ ๊ดํ ๊ฒ์
๋๋ค.
๋ชจ๋ Linux ์์คํ
์์์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ปจํ
์ด๋ ๋ด๋ถ์ DNS ํ์ธ์ ๊ตฌ์ฑ ํ์ผ์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค. /etc/resolv.conf
. ๊ธฐ๋ณธ Kubernetes dnsPolicy
๊ทธ๊ฒ ClusterFirst
์ด๋ ๋ชจ๋ DNS ์์ฒญ์ด ๋ค์์ผ๋ก ์ ๋ฌ๋จ์ ์๋ฏธํฉ๋๋ค. dnsmasq
, ํฌ๋์์ ์คํ ์ค kube-dns
ํด๋ฌ์คํฐ ๋ด๋ถ์์ ์์ฒญ์ ์ ํ๋ฆฌ์ผ์ด์
์ผ๋ก ์ ๋ฌํฉ๋๋ค. kube-dns
, ์ด๋ฆ์ด ํด๋ฌ์คํฐ ์ ๋ฏธ์ฌ๋ก ๋๋๋ ๊ฒฝ์ฐ, ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ ๋์ ์์ค์ DNS ์๋ฒ๋ก ๋๋๋ ๊ฒฝ์ฐ์
๋๋ค.
ํ์ผ /etc/resolv.conf
๊ฐ ์ปจํ
์ด๋ ๋ด๋ถ์ ๊ธฐ๋ณธ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
nameserver 100.64.0.10
search namespace.svc.cluster.local svc.cluster.local cluster.local
eu-west-1.compute.internal
options ndots:5
๋ณด์๋ค์ํผ ์ธ ๊ฐ์ง ์ง์๋ฌธ์ด ์์ต๋๋ค.
- ๋ค์์๋ฒ๋ ์๋น์ค์ IP์
๋๋ค.
kube-dns
- 4๊ฐ์ ์ง์ญ ๊ฒ์ ๋๋ฉ์ธ์ด ์ง์ ๋์์ต๋๋ค.
search
- ์ต์
์ด ์์ต๋๋ค
ndots:5
์ด ๊ตฌ์ฑ์ ํฅ๋ฏธ๋ก์ด ๋ถ๋ถ์ ๋ก์ปฌ ๊ฒ์ ๋๋ฉ์ธ ๋ฐ ์ค์ ์ด ์ด๋ป๊ฒ ๊ตฌ์ฑ๋๋์ง์
๋๋ค. ndots:5
ํจ๊ป ์ง๋ด์ญ์์ค. ์ด๋ฅผ ์ดํดํ๋ ค๋ฉด ์ ๊ทํ๋์ง ์์ ์ด๋ฆ์ ๋ํ DNS ํ์ธ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ์ดํดํด์ผ ํฉ๋๋ค.
์ฑ๋ช ์ด๋ ๋ฌด์์ ๋๊น?
์ ๊ทํ๋ ์ด๋ฆ์ ๋ก์ปฌ ์กฐํ๊ฐ ์ํ๋์ง ์๊ณ ์ด๋ฆ ํ์ธ ์ค์ ์ ๋ ์ด๋ฆ์ผ๋ก ๊ฐ์ฃผ๋๋ ์ด๋ฆ์
๋๋ค. ๊ท์น์ ๋ฐ๋ผ DNS ์ํํธ์จ์ด๋ ์ด๋ฆ์ด ์ (.)์ผ๋ก ๋๋๋ฉด ์ ๊ทํ๋ ์ด๋ฆ์ผ๋ก ๊ฐ์ฃผํ๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด ์ ๊ทํ๋์ง ์์ ์ด๋ฆ์ผ๋ก ๊ฐ์ฃผํฉ๋๋ค. ๊ทธ๊ฑด google.com.
์์ ํ ์ ์๋๊ณ google.com
- ์๋์.
์๊ฒฉ์ด ์๋ ์ด๋ฆ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌ๋๋์?
์ ํ๋ฆฌ์ผ์ด์
์ด ์ด๋ฆ์ ์ง์ ๋ ์๊ฒฉ ํธ์คํธ์ ์ฐ๊ฒฐ๋๋ฉด DNS ์ด๋ฆ ํ์ธ์ ์ผ๋ฐ์ ์ผ๋ก ์์คํ
ํธ์ถ์ ์ฌ์ฉํ์ฌ ์ํ๋ฉ๋๋ค. getaddrinfo()
. ๊ทธ๋ฐ๋ฐ ์ด๋ฆ์ด ์ ๊ทํ๋์ง ์์ ๊ฒฝ์ฐ(.๋ก ๋๋์ง ์์) ์์คํ
ํธ์ถ์ด ๋จผ์ ์ด๋ฆ์ ์ ๋ ์ด๋ฆ์ผ๋ก ํ์ธํ๋ ค๊ณ ์๋ํ ์ง, ์๋๋ฉด ๋ก์ปฌ ๊ฒ์ ๋๋ฉ์ธ์ ๋จผ์ ํต๊ณผํ ์ง ๊ถ๊ธํฉ๋๋ค. ์ต์
์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค ndots
.
๋งค๋ด์ผ์์ resolv.conf
:
ndots:n
ัััะฐะฝะฐะฒะปะธะฒะฐะตั ะฟะพัะพะณ ะดะปั ะบะพะปะธัะตััะฒะฐ ัะพัะตะบ, ะบะพัะพััะต ะดะพะปะถะฝั ะฟะพัะฒะธัััั ะฒ ะธะผะตะฝะธ, ะฟัะตะถะดะต ัะตะผ ะฑัะดะตั ัะดะตะปะฐะฝ ะฝะฐัะฐะปัะฝัะน ะฐะฑัะพะปััะฝัะน ะทะฐะฟัะพั. ะะฝะฐัะตะฝะธะต ะฟะพ ัะผะพะปัะฐะฝะธั ะดะปั n ัะฐะฒะฝะพ 1, ััะพ ะพะทะฝะฐัะฐะตั, ััะพ ะตัะปะธ ะฒ ะธะผะตะฝะธ ะตััั ะบะฐะบะธะต-ะปะธะฑะพ ัะพัะบะธ, ะธะผั ะฑัะดะตั ัะฝะฐัะฐะปะฐ ะพะฟัะพะฑะพะฒะฐะฝะพ ะบะฐะบ ะฐะฑัะพะปััะฝะพะต ะธะผั, ะฟัะตะถะดะต ัะตะผ ะบ ะฝะตะผั ะฑัะดัั ะดะพะฑะฐะฒะปะตะฝั ะบะฐะบะธะต-ะปะธะฑะพ ัะปะตะผะตะฝัั ัะฟะธัะบะฐ ะฟะพะธัะบะฐ.
์ด๋ ๋ค์์ ์๋ฏธํฉ๋๋ค. ndots
๊ฐ์ด 5์ด๊ณ ์ด๋ฆ์ ์ ์ด 5๊ฐ ๋ฏธ๋ง์ผ๋ก ํฌํจ๋์ด ์์ผ๋ฉด ์์คํ
ํธ์ถ์ ๋จผ์ ๋ชจ๋ ๋ก์ปฌ ๊ฒ์ ๋๋ฉ์ธ์ ์ํํ๋ฉด์ ์์ฐจ์ ์ผ๋ก ํด๊ฒฐ์ ์๋ํ๊ณ , ์คํจํ ๊ฒฝ์ฐ ๊ฒฐ๊ตญ ์ ๋ ์ด๋ฆ์ผ๋ก ํด๊ฒฐํ๋ ค๊ณ ์๋ํฉ๋๋ค.
์ ๊ฐ์๊ฐ? ndots:5
์ ํ๋ฆฌ์ผ์ด์
์ฑ๋ฅ์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๊น?
์์ํ ์ ์๋ฏ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ง์ ์ธ๋ถ ํธ๋ํฝ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ค์ ๋ ๋ชจ๋ TCP ์ฐ๊ฒฐ์ ๋ํด(๋ ์ ํํ๊ฒ๋ ๋ชจ๋ ์ด๋ฆ์ด ํ์ธ๋ ๋๋ง๋ค) ์ด๋ฆ์ด ์ฌ๋ฐ๋ฅด๊ฒ ํ์ธ๋๊ธฐ ์ ์ 5๊ฐ์ DNS ์ฟผ๋ฆฌ๋ฅผ ์คํํฉ๋๋ค. 4 ๋ก์ปฌ ๊ฒ์ ๋๋ฉ์ธ์ ๊ฒ์ํ๊ณ ๋ง์ง๋ง์ ์ ๋ ์ด๋ฆ ํ์ธ ์์ฒญ์ ๋ฐํํฉ๋๋ค.
๋ค์ ์ฐจํธ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑ๋ ๋ช ๊ฐ์ ํธ์คํธ ์ด๋ฆ์ ์ ๊ทํ๋ ํธ์คํธ ์ด๋ฆ์ผ๋ก ์ ํํ๊ธฐ ์ ๊ณผ ํ์ 3๊ฐ kube-dns ๋ชจ๋์ ์ด ํธ๋ํฝ์ ๋ณด์ฌ์ค๋๋ค.
๋ค์ ๋ค์ด์ด๊ทธ๋จ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑ๋ ์ฌ๋ฌ ํธ์คํธ ์ด๋ฆ์ ์ ์ฒด ์ด๋ฆ์ผ๋ก ์ ํํ๊ธฐ ์ ๊ณผ ํ์ ์ ํ๋ฆฌ์ผ์ด์ ๋๊ธฐ ์๊ฐ์ ๋ณด์ฌ์ค๋๋ค(ํ๋์ ์์ง์ ์ ๋ฐฐํฌ).
ํด๊ฒฐ ๋ฐฉ๋ฒ 1 - ์ ๊ทํ๋ ์ด๋ฆ์ ์ฌ์ฉํ์ธ์.
๋ง์ ์์ ์ฐ๊ฒฐ์ ์์ฑํ๋ ์ ์ ์ธ๋ถ ์ด๋ฆ(์: ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ฑ์ ์ ์๋จ)์ด ๊ฑฐ์ ์๋ ๊ฒฝ์ฐ ์๋ง๋ ๊ฐ์ฅ ๊ฐ๋จํ ํด๊ฒฐ์ฑ ์ ๋จ์ํ ์ถ๊ฐํ์ฌ ์ ๊ทํ๋ ์ด๋ฆ์ผ๋ก ์ ํํ๋ ๊ฒ์ ๋๋ค. ๋ง์ง๋ง์.
์ด๊ฒ์ด ์ต์ข ์ ์ธ ํด๊ฒฐ์ฑ ์ ์๋์ง๋ง, ๊นจ๋ํ์ง๋ ์๋๋ผ๋ ์ ์ํ๊ฒ ์ํฉ์ ๊ฐ์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ด ํจ์น๋ฅผ ์ ์ฉํ์ผ๋ฉฐ ๊ทธ ๊ฒฐ๊ณผ๋ ์์ ์คํฌ๋ฆฐ์ท์ ํ์๋์์ต๋๋ค.
์๋ฃจ์
#2 - ๋ง์ถคํ ndots
ะฒ dnsConfig
Kubernetes 1.9์์๋ ๊ธฐ๋ฅ์ด ์ํ ๋ชจ๋(๋ฒ ํ ๋ฒ์ v1.10)๋ก ๋ํ๋ฌ์ต๋๋ค. ์ด๋ฅผ ํตํด Pod ์์ฑ์ ํตํด DNS ๋งค๊ฐ ๋ณ์๋ฅผ ๋ ์ ์ ์ดํ ์ ์์ต๋๋ค. dnsConfig
. ๋ฌด์๋ณด๋ค๋ ๊ฐ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ndots
ํน์ ํฌ๋์ ๊ฒฝ์ฐ, ์ฆ
apiVersion: v1
kind: Pod
metadata:
namespace: default
name: dns-example
spec:
containers:
- name: test
image: nginx
dnsConfig:
options:
- name: ndots
value: "1"
์์ค
๋ธ๋ก๊ทธ์์ ๋ค๋ฅธ ๊ธฐ์ฌ๋ ์ฝ์ด๋ณด์ธ์.
Golang์ ์ปจํ ์คํธ ํจํค์ง ์ดํด Docker ์ด๋ฏธ์ง๋ฅผ ์ถ์ํ๋ ์ธ ๊ฐ์ง ๊ฐ๋จํ ํธ๋ฆญ Kubernetes์ ์ํ ์ ์ฅ ๋ฐฑ์ ๋ค์์ ์ด๊ธฐ์ข ์น ํ๋ก์ ํธ ๋ฐฑ์ Redmine์ฉ ํ ๋ ๊ทธ๋จ ๋ด. ์์ ๊ณผ ๋ค๋ฅธ ์ฌ๋์ ์ถ์ ๋จ์ํํ๋ ๋ฐฉ๋ฒ
์ถ์ฒ : habr.com