728x90
๐จ Error :
$ k get po -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-flannel kube-flannel-ds-xxxxx 1/1 Running 0 52s
kube-flannel kube-flannel-ds-xxxxx 1/1 Running 0 52s
kube-system coredns-xxxxxxxxxx-xxxxx 1/1 Running 0 8m57s
kube-system coredns-xxxxxxxxxx-xxxxx 1/1 Running 0 8m57s
kube-system etcd-xxxxx 1/1 Running 0 9m4s
kube-system kube-apiserver-xxxxx 1/1 Running 0 9m4s
kube-system kube-controller-managerxxxxx 1/1 Running 0 9m4s
kube-system kube-proxy-xxxxx 1/1 Running 0 8m57s
kube-system kube-proxy-xxxxx 1/1 Running 0 88s
kube-system kube-scheduler-xxxxx 1/1 Running 0 9m4s
- master์ worker node์ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ค์นํ๊ณ ๋ณด๋ฉด ์ด๋ฌํ ์ํ๊ฐ ๋์ด์๋ค.
- ์ฐธ๊ณ ๋ก ๋๋ oracle linux 8.10์ Kubernetes 1.32v, CNI ํ๋ฌ๊ทธ์ธ์ flannel์ ์ฌ์ฉ ์ค์ด๋ค.
- ์ธ๋ป ๋ณด๊ธฐ์๋ ์ ๋๋ก ์ค์น๋ ๊ฒ ๊ฐ๋ค.
- ์ฌ๊ธฐ์ ํ ์คํธ ํ๋๋ฅผ ๋ง๋ค์ด๋ณด์.
๐จ busybox.yaml ์์ฑ
apiVersion: v1
kind: Pod
metadata:
name: busybox
labels:
app: busybox
spec:
containers:
- name: busybox
image: busybox:latest
command:
- sleep
- "3600" # Pod๊ฐ 1์๊ฐ ๋์ ์คํ๋จ. ํ์์ ๊ฐ์ ๋ณ๊ฒฝ.
restartPolicy: Always
๐จ ํ๋ ์คํ
$ k apply -f busybox.yaml
pod/busybox created
$ k get po -A
NAMESPACE NAME READY STATUS RESTARTS AGE
default busybox 1/1 Running 0 7s
- ํ๋๋ฅผ ์คํํ๋ค.
๐จ DNS ์ ๋ณด ์กฐํํ๊ธฐ
# master node
# ๊ตฌ๊ธ ์น์ฌ์ดํธ dns ์ ๋ณด ์กฐํ
$ nslookup google.com
Server: 169.254.169.254
Address: 169.254.169.254#53
Non-authoritative answer:
Name: google.com
Address: 142.250.198.14
Name: google.com
Address: 2404:6800:4004:822::200e
# ํ ๋ณด๋ด๋ณด๊ธฐ
$ ping 142.250.198.14
PING 142.250.198.14 (142.250.198.14) 56(84) bytes of data.
64 bytes from 142.250.198.14: icmp_seq=1 ttl=120 time=36.1 ms
64 bytes from 142.250.198.14: icmp_seq=2 ttl=120 time=36.1 ms
64 bytes from 142.250.198.14: icmp_seq=3 ttl=120 time=36.1 ms
--- 142.250.198.14 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 36.069/36.077/36.083/0.219 ms
- ํ๋ ๋ด๋ถ ์ ์๋ฅผ ํ๊ธฐ ์ ์ kubectl ๋ช ๋ น์ด๋ฅผ ์ํํ ๋ง์คํฐ ๋ ธ๋์์ ๊ตฌ๊ธ ์น์ฌ์ดํธ์ dns ์ ๋ณด๋ฅผ ์กฐํํด ๋ณด์.
- nslookup์ด๋ผ๋ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
- ๊ทธ๋ผ ํด๋น ๋๋ฉ์ธ์ ip ์ฃผ์๊ฐ ๋์ค๋๋ฐ, ์ด ip ์ฃผ์๋ก ping๋ ์ ๋ณด๋ด์ง๋ ๊ฒ์ ํ์ธํ๋ค.
๐จ ํ๋ ๋ด๋ถ ์ ์
# ํ๋ ๋ด๋ถ ์ ์
$ k exec -it busybox -- sh
# ping ๋ ๋ ค๋ณด๊ธฐ
/ # ping 142.250.198.14
PING 142.250.198.14 (142.250.198.14): 56 data bytes
64 bytes from 142.250.198.14: seq=0 ttl=119 time=42.431 ms
64 bytes from 142.250.198.14: seq=1 ttl=119 time=42.463 ms
--- 142.250.198.14 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 42.431/42.447/42.463 ms
- ping์ ๋ณด๋ด๋ ์๋ต์ ์ ๋ฐ๋๋ค.
- ์ฆ, kubernetes ์ค์น ์ ํ๋ก ํน๋ณํ ์ค์ ์ ํด๋์ง ์๋ ์ด์ pod ๋ด๋ถ์์ ์ธ๋ถ๋ก์ ์์ฒญ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ง์ง ์๋๋ค๋ ์ฌ์ค์ ์ ์ ์๋ค.
- ๊ทธ๋ผ dns ์ ๋ณด ์กฐํ๋ ์ด๋จ๊น?
๐จ ํ๋ ๋ด๋ถ์์ DNS ์ ๋ณด ์กฐํ
/ # nslookup google.com
Server: 10.96.0.10
Address: 10.96.0.10:53
** server can't find google.com: SERVFAIL
*** Can't find google.com: No answer
- ์ฐพ์ ์ ์๋ค๊ณ ๋์จ๋ค.
- ์ด๊ฒ ๋ฌธ์ ์๋ค.
- ๋๋ ์คํ๋ง ๋ถํธ ์๋ฒ๋ฅผ ๋์ฐ๊ณ ํด๋น ์คํ๋ง๋ถํธ ์๋ฒ๊ฐ ์ธ๋ถ API ํต์ ์ ํด์ผ ํ๋๋ฐ ๋๋ฉ์ธ ์ฃผ์๋ฅผ ์ฐพ์ง ๋ชปํด ๊ณ์ ์คํจํ๋ ์ํฉ์ด ๋ฐ์ํ๋ค.
๐ค ์์ธ :
๐ค ๋ง์ค์ปค๋ ์ด๋ฉ(Masquerading)
- ๋ง์ค์ปค๋ ์ด๋ฉ์ SNAT(Source Network Address Translation)์ ์ผ์ข ์ด๋ค.
- ๋ด๋ถ ๋คํธ์ํฌ์ IP ์ฃผ์๋ฅผ ์ธ๋ถ๋ก ์์ฒญ์ ๋ณด๋ผ ๋ NAT(Network Address Translation)๋ฅผ ํตํด ์ถ๋ฐ์ง IP๋ฅผ ๋ฐฉํ๋ฒฝ์ IP๋ก ๋ณํํ๊ณ , ์ธ๋ถ ์๋ต์ด ๋ค์ด์ฌ ๋ ์๋ ์ถ๋ฐ์ง๋ก ํธ๋ํฝ์ ๋ค์ ์ ๋ฌํ๋ ์์ ์ ์ํํ๋ค.
๐ค ์ฟ ๋ฒ๋คํฐ์ค์์ ๊ด๊ณ
- ์ฟ ๋ฒ๋คํฐ์ค์์ ๋ง์ค์ปค๋ ์ด๋ฉ ์ค์ ์ Pod ๋คํธ์ํฌ์ ํด๋ฌ์คํฐ ์ธ๋ถ ๋คํธ์ํฌ ๊ฐ์ ํต์ ์ ์ง์ํ๊ธฐ ์ํด ์ค์ํ๋ค.
1. ์ฟ ๋ฒ๋คํฐ์ค์์ ๋ง์ค์ปค๋ ์ด๋ฉ์ ํ์์ฑ
- ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์ Pod๋ ํด๋ฌ์คํฐ ๋ด๋ถ์์ ๊ณ ์ ํ IP(ClusterCIDR)๋ฅผ ๊ฐ์ง๋ฉฐ, ์ด IP๋ ์ธ๋ถ ๋คํธ์ํฌ์์ ์ง์ ์ ๊ทผํ ์ ์๋ค.
- ํด๋ฌ์คํฐ์ Pod๊ฐ ์ธ๋ถ ๋คํธ์ํฌ๋ก ์์ฒญ์ ๋ณด๋ผ ๋, ๋ง์ค์ปค๋ ์ด๋ฉ์ ํตํด Pod์ IP ์ฃผ์๋ฅผ ๋ ธ๋์ IP ์ฃผ์๋ก ๋ณํํด์ผ ํ๋ค.
- ์ธ๋ถ ๋คํธ์ํฌ๋ ๋ณํ๋ ๋ ธ๋ IP๋ฅผ ๋ณด๊ณ ์๋ต์ ๋ฐํํ๋ฉฐ, ํด๋ฌ์คํฐ ๋ด๋ถ์ Pod๋ก ์ ์์ ์ผ๋ก ์ ๋ฌ๋๋ค.
2. ๋ง์ค์ปค๋ ์ด๋ฉ ์ค์ ์ด ํ์ํ ๊ฒฝ์ฐ
- Flannel, Calico์ ๊ฐ์ CNI(Container Network Interface) ํ๋ฌ๊ทธ์ธ์ด ์ฌ์ฉํ๋ Pod ๋คํธ์ํฌ๊ฐ ์ธ๋ถ์ ํต์ ํด์ผ ํ ๋
- ํด๋ฌ์คํฐ์์ SNAT๋ฅผ ๋ช ์์ ์ผ๋ก ํ์ฑํํ์ง ์๋ ๊ฒฝ์ฐ
- Pod๊ฐ ์ธ๋ถ ์ธํฐ๋ท์ ์ ๊ทผํ๊ฑฐ๋, ํด๋ฌ์คํฐ ์ธ๋ถ์ ๋ฆฌ์์ค(API ์๋ฒ ๋ฑ)์ ํต์ ํด์ผ ํ ๋ ๋ฑ์ด ์๋ค.
3. ๋ง์ค์ปค๋ ์ด๋ฉ ์์ด ๋ฐ์ํ ์ ์๋ ๋ฌธ์
- ํด๋ฌ์คํฐ ๋ด๋ถ Pod๊ฐ ์ธํฐ๋ท์ผ๋ก ๋๊ฐ๋ ์์ฒญ์ ์๋ต์ ๋ฐ์ง ๋ชปํ ์ ์์.
- ์ธ๋ถ ๋คํธ์ํฌ์์ ํด๋ฌ์คํฐ ๋ด๋ถ์ ๋คํธ์ํฌ๋ฅผ ์ ์ ์๊ธฐ ๋๋ฌธ์ ๋ผ์ฐํ ๋ฌธ์ ๊ฐ ๋ฐ์.
๐ ํด๊ฒฐ :
๐ ๋ง์ค์ปค๋ ์ด๋ฉ ํ์ฉํ๊ธฐ
# masquerade: no -> yes๋ก ๋ณ๊ฒฝ
$ sudo firewall-cmd --add-masquerade --permanent
# ๋ฆฌ๋ก๋
$ sudo firewall-cmd --reload
# coredns restart
$ kubectl -n kube-system rollout restart deployment coredns
- ๋ง์คํฐ ๋ ธ๋์ ์์ปค ๋ ธ๋์์ ๋ฐฉํ๋ฒฝ์ ๋ง์ค์ปค๋ ์ด๋ฉ์ ํ์ฉํ๊ณ , coredns ๋ํ๋ก์ด๋จผํธ๋ฅผ ์ฌ์์ํ๋ค.
๐ ํ๋ ๋ด๋ถ์์ DNS ์ ๋ณด ๋ค์ ์กฐํํ๊ธฐ
$ k exec -it busybox -- sh
/ # nslookup google.com
Server: 10.96.0.10
Address: 10.96.0.10:53
Non-authoritative answer:
Name: google.com
Address: 2404:6800:4004:828::200e
Non-authoritative answer:
Name: google.com
Address: 142.250.196.142
- ์ ์์ ์ผ๋ก ํ๋ ๋ด๋ถ์์ ์ธ๋ถ๋ก DNS๋ฅผ ํตํ ํต์ ์ด ๊ฐ๋ฅํด์ก๋ค!
๐ค ์๋ฌธ์ :
์์.
์ฐธ๊ณ
https://stackoverflow.com/questions/68213989/kubedns-no-route-to-host-for-kubernetes-default
728x90