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
반응형
'as 소프트웨어엔지니어 > Kubernetes' 카테고리의 다른 글
Kubernetes StatefulSet - Volume, PV, PVC, StorageClass (0) | 2022.09.22 |
---|---|
Kubernetes Ingress (0) | 2022.09.22 |
Kubernetes 네트워크 기본 & Service (0) | 2022.09.20 |
댓글을 달아 주세요