9주차 - AWS EKS : VPC CNI & LB Controller & External DNS

1. 목적성

  • EKS 에서 VPC CNI 를 사용할 때의 네트워크 구성요소를 이해하고 네트워크흐름을 확인합니다.

  • AWS LB Controller를 사용해서 K8S 구성요소만으로 LB를 구성합니다.

  • External DNS 를 사용해서 K8S 구성요소만으로 DNS 를 구성합니다.

  • 새로나온 Network Policy Controller를 이용해서 eBPF 를 사용해서 네트워크 정책을 구성합니다.

2. VPC CNI 란?

  • EKS는 VPC CNI 플러그인을 통해 클러스터 네트워킹 환경을 구성

  • AWS VPC와 유기적인 연결이 된다!!

  • POD IP 네트워크 대역과 노드(워커)의 IP 대역이 같아서 직접 통신이 가능하다.

  • 그와 반면에 AWS CNI는 동일 대역으로 직접 통신한다. 다른 워커 노드들과 통신이 바로바로 된다.

3. 다른 CNI와 차이점은?

  • 파드간 통신시 K8S CNI는 오버레이 통신함

4. 네트워크 구조

  • 할당된 ENI0는 Primary IP Address이다.

  • Kubelet을 통해 늘어난 pod 에게 secondary Ip들을 할당한다.

  • 워커 노드에 파드를 여러개 띄우게 되면 그에따라 secondary IP들과 ENI 가 추가되었다.

  • EC2 인스턴스 타입에 따라, ENI 에 따른 IP 할당 가능 개수가 정해져 있습니다.

  • 이 때문에, 워커 노드에 생성가능한 최대 파드 갯수 제한이 생기며

    • 위의 경우에는 한개의 t3.medium 노드에 3개의 ENI가 부착이 가능합니다.

      • 3 * 15 = 45개의 POD만 생성 가능합니다.

5. AWS LB Controller 란?

  • Service는 Node들에 고정 진입점을 설정할 수 있게 해주는 k8s 구성요소입니다.

  • AWS의 ALB 와 NLB 를 EKS 에서 파드로 생성해서 환경을 통합시켜 주고 설정을 할 수 있습니다.

  • iptables 로직을 거치지 않고 aws load balancer Controller의 장점은 효율적이다!

  • AWS 구성요소인 NLB에게 EKS의 구성요소가 있다는 것을 알리고 권한을 주어야 합니다.

6. External DNS 란?

  • 위의 LB Controller와 비슷하게, External Dns 서비스를 사용해서 AWS Route 53 도메인의 a 레코드를 자동으로 생성하고 Service로 노출 시켜 줍니다.

  • LoadBalancer controller 처럼 role이 필요하다

    • ExternalDNS CTRL 권한 주는 방법은 3가지가 있다.

      • IRSA (권고사항)

  • core dns가 어떤 방식으로 동작하는지 보여주는 플로우 입니다.

  1. pod 에서 resolve 를 시도합니다.

  2. node에서 DNS server를 참조하게 되는데 해당 서버가 CoreDNS 입니다.

Last updated