728x90
EKS 내 노드 간 Pod 통신 확인
- AWS CNI 특징으로 Node IP 대역과 Pod IP이 동일하여 직접 통신이 가능
- 일반적인 K8S CNI의 경우 오버레이 통신
- 파드간 통신 테스트 및 확인 : 별도의 NAT 동작 없이 통신
# 파드 IP 변수 지정
PODIP1=$(kubectl get pod -l app=netshoot-pod -o jsonpath='{.items[0].status.podIP}')
PODIP2=$(kubectl get pod -l app=netshoot-pod -o jsonpath='{.items[1].status.podIP}')
PODIP3=$(kubectl get pod -l app=netshoot-pod -o jsonpath='{.items[2].status.podIP}')
# 파드1 Shell 에서 파드2로 ping 테스트
kubectl exec -it $PODNAME1 -- ping -c 2 $PODIP2
# 파드2 Shell 에서 파드3로 ping 테스트
kubectl exec -it $PODNAME2 -- ping -c 2 $PODIP3
# 파드3 Shell 에서 파드1로 ping 테스트
kubectl exec -it $PODNAME3 -- ping -c 2 $PODIP1
# 워커 노드 EC2 : TCPDUMP 확인
sudo tcpdump -i any -nn icmp
- pod1 IP: 192.168.1.249
- pod2 IP: 192.168.2.165
- pod3 IP: 192.168.3.227
- tcpdump를 통해 ping 통신 확인 결과, 노드 간 Pod 통신에서 Pod IP로 직접 통신하는 것을 확인
EKS Pod에서 외부 통신 확인
파드에서 외부 통신 흐름 : iptable 에 SNAT 을 통하여 노드의 eth0 IP로 변경되어서 외부와 통신됨
- 파드에서 외부 통신 테스트 및 확인
- pod에서 외부 통신을 하는경우, 노드의 IP로 SNAT
- 통신이 Node의 IP로 통신
- Node2 IP: 192.168.2.85
- 각 노드의 공인IP 확인
- 각 Pod의 공인IP 확인
- Pod에서 인터넷 통신을 하는 경우, 서버의 공인IP로 NAT되어 통신
- 파드가 외부와 통신시에는 아래 처럼 'AWS-SNAT-CHAIN-0' 룰(rule)에 의해서 SNAT 되어서 외부와 통신
# 노드 iptabels rule 확인
ip rule
ip route show table main
sudo iptables -L -n -v -t nat
sudo iptables -t nat -S
sudo iptables -t nat -S | grep 'A AWS-SNAT-CHAIN'
→ 192.168.0.0/16과 통신은 SNAT Jump( SNAT 수행 X)
→ 매치가 되지 않는 IP는 SNAT을 수행 ( 서버의 IP )
728x90
'2025_AEWS Study' 카테고리의 다른 글
2주차 - EKS Networking(4)(Service & AWS LoadBalancer Controller) (0) | 2025.02.15 |
---|---|
2주차 - EKS Networking(3)(노드 내 파드 생성 갯수 제한) (0) | 2025.02.15 |
2주차 - EKS Networking(1)(AWS VPC CNI) (0) | 2025.02.15 |
1주차 - EKS Endpoint Access (0) | 2025.02.08 |
1주차 - Amzaon EKS 설치 및 기본 사용 (0) | 2025.02.08 |