본문 바로가기

[EKS] AWS Load Balancer Controller on EKS 본문

Public Cloud

[EKS] AWS Load Balancer Controller on EKS

겨울바람_ 2024. 7. 29. 21:00

AWS Load Balancer Controller?

AWS Load Balancer Controller는 Kubernetes 클러스터를 위한 AWS Elastic Load Balancer를 관리하는 add-on이다. 따라서 별도로 AWS Load Balancer Controller를 추가 설치하여 로드 밸런서를 관리하는 것이다.

그림과 같이 클러스터 내부에 다수의 Pod가 존재하고 연결을 위해 AWS ELB를 구성했다고 가정해보자. 이 상황에서 AWS Load Balancer Controller는 Control Plane과 상호 작용하여 대상 Pod의 정보를 확인하고 이벤트를 모니터링 하는 것으로 클러스터 내부의 Pod 정보를 취득할 수 있다.

 

그리고 AWS ELB로 해당 Pod 정보를 프로비저닝하여 타겟 그룹 바인딩을 할 수 있다. 즉, 대상 그룹에 Pod 정보를 추가하거나 삭제하는 관리자 역할을 수행할 수 있다.

 

이렇듯 AWS Load Balancer Controller가 해당 권한을 수행하기 위해서는 IRSA라는 보안 작업을 선행해야 한다.

IRSAIAM Role for Service Accounts의 약자로 AWS Load Balancer Controller의 인증 절차를 통해 권한을 위임한다.

 

AWS Load Balancer Controller가 AWS ELB와 EKS Cluster Control Plane과 지속적인 상호작용을 통해 동작하는 것으로 미루어 봤을 때, Kubernetes 서비스 어카운트와 AWS IAM을 연동하여 인증 절차를 진행하는 것으로 볼 수 있다.

만약 위 그림처럼 AWS Load Balancer Controller가 존재하지 않는다면, ELB에서 노드의 IP와 Port로 Node Port와 Cluster IP를 거쳐 iptables 분산 룰로 Pod에 전달될 것이다.

 

AWS Load Balancer Controller가 구성된다면 노드에 Pod 형태로 구성이 된다. AWS Load Balancer Controller는 Control Plane과 상호 작용하여 ELB로 프로비저닝 하기 때문에 ELB는 대상 그룹에 Pod가 매핑되어 Node Port, Cluster IP를 거치지 않고 직접적으로 Pod와 통신을 수행한다.

그로 인해 리눅스 커널의 conntrack과 iptables 분산 룰을 확인하는 과정이 생략되어 효율적인 통신이 가능하다. 이러한 동작이 가능한 이유는 Amazon VPC CNI 환경에 따라 노드와 Pod가 동일한 IP 대역인 것이 가장 크다.

 

ELB의 대표적인 세 가지 중 NLB, CLB와 같이 L4 영역의 부하 분산으로 Kubernetes의 Service의 Load Balancer가 구성될 수 있고, ALB와 같은 L7 영역의 부하 분산으로 Ingress의 Load Balancer가 구성될 수 있다.

'Public Cloud' 카테고리의 다른 글

[EKS] Amazon VPC CNI  (1) 2024.07.26
[AWS] Elastic Block Storage (EBS)  (0) 2024.07.16
[AWS] Slack을 사용해서 EC2 인스턴스 조작하기  (1) 2024.07.15
[AWS] Elastic Network Interface (ENI)  (0) 2024.07.13
[AWS] Elastic Load Balancer  (0) 2024.07.11
Comments