CNI 기본 사항
- container가 주어진 network 환경에서 동작 가능케 함
- 노드 to 노드 communication을 가능케 함
AWS CNI plugin
기본 사항
-
AWS CNI plugin은 AWS에서 공식 관리하는 open source plugin
-
private IPv4, IPv6 주소를 VPC에서 pod 및 Service에 할당
-
기본 VPC 네트워킹을 지원(ENI 간에는 k8s와는 관계 없이 연결 가능 - k8s와 관계 없이 VPC 기반의 AWS 인프라를 pod에도 적용 가능하다는 의미)
-
EC2 노드에는 다수의 ENI(Elastic Network Interface) 할당 가능
- 기본적으로 1개가 자동 할당되며 이를 가리켜 primary network interface라고 함
- 이외 추가되면 이들은 secondary network interface라고 함
- 각 ENI에는 다수의 IP가 할당될 수 있으며 pod에 할당되는 IP는 secondary IP임(primary는 해당 pod의 외부 통신용으로 사용)
-
각 노드에는 해당 노드 만의 CIDR block이 형성됨
-
ALB ingress controller에서 ip mode 지원(외부 connection을
NodePort를 통하지 않고 직접 pod로 연결) -
각 노드에 허용 가능한 IP 개수
- min((ENI 개수 * IP 개수 - ENI 개수), 해당 subnet의 free IP)
pod로의 ENI 할당 절차
-
plugin을 클러스터에 설치하면
L-IPAM(Local IP Address Manager),CNI plugin으로 구성된aws-node란 이름의DaemonSet이 각 노드에 생성됨-
L-IPAM은 해당 노드에 가용 secondary IP 주소의 warm-pool 관리
-
L-IPAM은 필요 시 secondary network interface를 생성 가능
-
-
pod 배포 명령은 해당 노드의
kubelet프로세스에 전달됨 -
kubelet프로세스는L-IPAM에 해당 pod를 네트워크에 추가하라는 request를 전달 -
L-IPAM은 warm-pool에서 IP 하나를 선택해 pod에 할당
References

Comments