🕰️ 작성일 : 2025.02.20
기존 Pod가 외부 인터넷과 통신하는 방법
- Worker Node가 Public Subnet에 위치 할 경우 Pod는 외부 인터넷 통신 시 Worker Node의 Public/EIP를 기반으로 외부 인터넷과 통신
- Worker Node가 Private Subnet에 위치 할 경우 NAT G/W을 통해 NAT GW의 공인 IP로 NAT되어 통신
Pod에 공인 IP 할당 - AWS Pod EIP Controller란?
- AWS Pod EIP Controller는 Annotation을 통해 Elastic IP를 자동으로 할당 및 해제하는 기능을 제공합니다.
- AWS Pod EIP Controller 생성 및 Annotation에 대한 설명은 아래 공식 Git을 참고하세요.
https://github.com/aws-samples/aws-pod-eip-controller
Pod에 대한 인터넷 Outbound 액세스 이해
- Pod의 통신 대상이 VPC에 연결된 CIDR 블록 내에 있지 않은 경우 기본적으로 Pod가 실행 중인 노드의 ENI의 IP 주소로 변환됩니다.
- 즉 실행 중인 노드가 Public Subnet에 위치하여 있고, 해당 노드가 퍼블릭 또는 EIP 주소를 할당 받은 경우에 인터넷과 통신이 가능하지만, Pod는 노드의 Public IP로 SNAT 되어 통신됩니다.
- 노드의 기본 ENI로의 SNAT을 해제하기 위해서는 아래 옵션으로 해제 할 수 있습니다.
kubectl set env daemonset -n kube-system aws-node AWS_VPC_K8S_CNI_EXTERNALSNAT=true
Pod 기반 White-List 처리를 위한 방안
- AWS Pod EIP Controller를 통해 Pod의 Public EIP를 부여합니다.
AWS_VPC_K8S_CNI_EXTERNALSNAT=true
을 통해 Node 기반 SNAT을 해제합니다.
테스트 하기