1. AWS VPC CNI 소개
K8S CNI
: Container Network Interface 는 k8s 네트워크 환경을 구성해준다 - 링크, 다양한 플러그인이 존재 - 링크
AWS VPC CNI
: 파드의 IP를 할당해준다, 파드의 IP 네트워크 대역과 노드(워커)의 IP 대역이 같아서 직접 통신이 가능하다 - AWS_CNI Github Proposal
- Amazon EKS supports native VPC networking with the Amazon VPC Container Network Interface (CNI) plugin for Kubernetes.
- VPC 와 통합 : VPC Flow logs , VPC 라우팅 정책, 보안 그룹(Security group) 을 사용 가능함
- This plugin assigns an IP address from your VPC to each pod.
- VPC ENI 에 미리 할당된 IP를 파드에서 사용할 수 있음
K8S Calico CNI 와 AWS VPC CNI 차이
- 네트워크 통신의 최적화(성능, 지연)를 위해서 노드와 파드의 네트워크 대역을 동일하게 설정함
그림 1 - 일반적인 K8S CNI 플러그인(Calico) 와 AWS VPC CNI 간 노드와 파드 네트워크 대역 비교
- 파드간 통신 시 일반적으로
K8S CNI
는 오버레이(VXLAN, IP-IP 등) 통신을 하고, AWS VPC CNI
는 동일 대역으로 직접 통신을 한다
워커 노드에 생성 가능한 최대 파드 갯수
- Secondary IPv4 addresses : 인스턴스 유형에 최대 ENI 갯수와 할당 가능 IP 수를 조합하여 선정
- IPv4 Prefix Delegation : IPv4 28bit 서브넷(prefix)를 위임하여 할당 가능 IP 수와 인스턴스 유형에 권장하는 최대 갯수로 선정
2. AWS VPC CNI - 파드 기본 통신
실습 환경 소개
- AWS EKS 클러스터, 관리형 노드 그룹(t3.medium, 노드 2대)
<aside>
👉🏻 실습 사용 버전 : EKS(K8S) v1.21.2 , AWS VPC CNI v1.7.5 , kube-ops-view
</aside>
- (옵션) kube-ops-view 설치 - 링크
2.1 워커 노드 기본 정보 확인
워커 노드1
기본 네트워크 구성 : 워커 노드2
는 구성이 유사하여 생략
- Network 네임스페이스는 호스트(Root)와 파드 별(Per Pod)로 구분된다
- 특정한 파드(kube-proxy, aws-node)는 호스트(Root)의 IP를 그대로 사용한다
- t3.medium 의 경우 ENI 에 최대 6개의 IP를 가질 수 있다
- ENI0, ENI1 으로 2개의 ENI는 자신의 IP 이외에 추가적으로 5개의 보조 프라이빗 IP를 가질수 있다
- coredns 파드는 veth 으로 호스트에는 eniY@ifN 인터페이스와 파드에 eth0 과 연결되어 있다