EKS Control Plane의 NLB 배치 구조

Jaden Kim·약 21시간 전
0
post-thumbnail

🔹 EKS Control Plane 구성

Amazon EKS의 Control Plane은 AWS가 직접 관리하는 managed service로 제공됩니다.
Control Plane은 k8s API Server, Controller Manager, Kube Scheduler, ETCD 로 구성되어 있습니다.
즉 클러스터를 생성하면, Control Plane은 사용자의 AWS 계정 외부에 호스팅되며, 사용자 VPC가 아닌 AWS 측의 EKS 관리 계정의 VPC 내에 Control Plane이 위치하게 됩니다.

🔹 Control Plane의 로드밸런싱

✅ Control Plane 다중 AZ 배포

Amazon EKS의 Control Plane은 고가용성 을 위해 최소 3개의 가용영역(AZ) 에 분산 배치됩니다.
각 AZ에는 control plane 구성요소들의 replica가 위치합니다.
이를 통해 장애 failover와 load balnacing이 가능해집니다.

✅ NLB의 역할

NLB는 EKS 클러스터 생성 시 AWS가 자동으로 생성하며, Control Plane의 API 서버들 앞단에 위치합니다.
클라이언트(kubectl, 노드의 kubelet 등)의 모든 요청은 이 NLB로 들어가고, NLB는 요청을 Control Plane 인스턴스 중 하나로 분산해서 전송합니다.

                   +-------------+
                   |   Client    |
                   |(kubectl etc)|
                   +-------------+
                          |
                          v
                 +------------------+
                 |     Public NLB   |
                 | (TCP Load Balancer)
                 +------------------+
                     /     |     \
                    v      v      v
         +-------------+-------------+-------------------+
         | Control Plane | Control Plane | Control Plane |
         |   in AZ-a     |   in AZ-b     |   in AZ-c     |
         +-------------+-------------+-------------------+

🔹 NLB의 배치 방식

1. Public Endpoint (기본값)

사용자가 eksctl, AWS Console, kubectl을 통해 접근하는 Kubernetes API 서버 주소는 https://<random>.<region>.eks.amazonaws.com 형식입니다.
이는 NLB는 Public IP 주소이며, 외부에서 접근이 가능하게 열려있는 Public IP 입니다.
이 주소로 통신을 보낼 경우, 네트워크 단에서는 NLB를 통해 Control Plane API Server에 연결됩니다.

IAM 인증 및 보안 그룹을 통해 접근이 제어될 수 있기는 하지만, 외부에 열려있는 구조이기 때문에 보안 우려가 존재하는 옵션입니다.
또한 워커 노드에서 k8s API 서버로 접근할 경우에는, 외부 인터넷으로 나가서 Public IP를 통해 NLB로 전달된 뒤에 k8s API에 최종적으로 전달되는 구조이기 때문에, 네트워크적으로 효율성이 떨어집니다.

2. Private Endpoint (옵션)

Control Plane에 대한 접근을 내부 VPC에서만 허용하도록 구성하는 것도 가능합니다.
이 경우 EKS는 사용자 VPC 내부에 컨트롤 플레인 측에 연결되는 ENI(Elastic Network Interface) 를 통해 프라이빗 통신을 하게 됩니다.
해당 ENI를 EKS owned ENI라고 말하며, 소유자는 사용자이지만 연결 대상은 EKS 관리 계정에 속하는 Cross Account ENI 입니다.
Private Endpoint로 구성 시 Route53 Private Hosted Zone이 구성되어, VPC 내부에서 클러스터 도메인에 대한 질의 시 EKS owned ENI의 IP 주소를 얻게 됩니다.

3. Dual Access (Public + Private)

Public + Private Access를 함께 사용하는 방식입니다.
클라이언트 접근은 Public Endpoint를 통해, 클러스터 내부 노드들은 Private ENI를 통해 Control Plane에 접근합니다.

kubectl / eksctl
      |
      | HTTPS
      v
+---------------------+
|    Public NLB       |  <- Managed by AWS, has public IP
+---------------------+
           |
   -------------------
   |    EKS Control   |
   |     Plane        |  <- Managed in AWS VPC
   -------------------
           ^
           | (Private Link)
     ENI in user's VPC  (EKS owned ENI)
           ^
           |
     EKS Worker Nodes

0개의 댓글