9주차 - AWS EKS : VPC CNI & LB Controller & External DNS
Last updated
Last updated
EKS 에서 VPC CNI 를 사용할 때의 네트워크 구성요소를 이해하고 네트워크흐름을 확인합니다.
AWS LB Controller를 사용해서 K8S 구성요소만으로 LB를 구성합니다.
External DNS 를 사용해서 K8S 구성요소만으로 DNS 를 구성합니다.
새로나온 Network Policy Controller를 이용해서 eBPF 를 사용해서 네트워크 정책을 구성합니다.
EKS는 VPC CNI 플러그인을 통해 클러스터 네트워킹 환경을 구성
AWS VPC와 유기적인 연결이 된다!!
POD IP 네트워크 대역과 노드(워커)의 IP 대역이 같아서 직접 통신이 가능하다.
그와 반면에 AWS CNI는 동일 대역으로 직접 통신한다. 다른 워커 노드들과 통신이 바로바로 된다.
파드간 통신시 K8S CNI는 오버레이 통신함
할당된 ENI0는 Primary IP Address이다.
Kubelet을 통해 늘어난 pod 에게 secondary Ip들을 할당한다.
워커 노드에 파드를 여러개 띄우게 되면 그에따라 secondary IP들과 ENI 가 추가되었다.
EC2 인스턴스 타입에 따라, ENI 에 따른 IP 할당 가능 개수가 정해져 있습니다.
이 때문에, 워커 노드에 생성가능한 최대 파드 갯수 제한이 생기며
위의 경우에는 한개의 t3.medium 노드에 3개의 ENI가 부착이 가능합니다.
3 * 15 = 45개의 POD만 생성 가능합니다.
Service는 Node들에 고정 진입점을 설정할 수 있게 해주는 k8s 구성요소입니다.
AWS의 ALB 와 NLB 를 EKS 에서 파드로 생성해서 환경을 통합시켜 주고 설정을 할 수 있습니다.
iptables 로직을 거치지 않고 aws load balancer Controller의 장점은 효율적이다!
AWS 구성요소인 NLB에게 EKS의 구성요소가 있다는 것을 알리고 권한을 주어야 합니다.
위의 LB Controller와 비슷하게, External Dns 서비스를 사용해서 AWS Route 53 도메인의 a 레코드를 자동으로 생성하고 Service로 노출 시켜 줍니다.
LoadBalancer controller 처럼 role이 필요하다
ExternalDNS CTRL 권한 주는 방법은 3가지가 있다.
IRSA (권고사항)
core dns가 어떤 방식으로 동작하는지 보여주는 플로우 입니다.
pod 에서 resolve 를 시도합니다.
node에서 DNS server를 참조하게 되는데 해당 서버가 CoreDNS 입니다.