본문 바로가기

Cloud/AWS

EKS Hybrid Nodes 네트워크 및 구축 아키텍처 가이드

Today Key : hybrid, node, eks, network, gateway, control, plane, architecture, 아키텍처, cluster


1. EKS Hybrid Nodes 핵심 개념 및 컨트롤 플레인 통신 구조

  • 개념 요약
    • AWS 관리를 받는 EKS Control Plane에 온프레미스 베어메탈/가상 서버를 워커 노드로 연결하여 제어면 관리 부담을 줄인 하이브리드 클러스터 솔루션입니다.
  • Control Plane 통신 매커니즘
    • 온프레미스 노드 레벨: kubelet이 OS 내 systemd 서비스로 실행되며, 온프레미스 사설 IP를 출발지(Source IP)로 사용합니다.
    • Cross-Account ENI: EKS 클러스터 생성 시 Private Access를 활성화하면 사용자 VPC 내부 서브넷에 AWS 관리 전용 네트워크 인터페이스(Cross-Account ENI)가 자동 생성됩니다.
    • 통신 경로:
      온프렘 kubelet $\rightarrow$ Direct Connect / IPsec VPN $\rightarrow$ 사용자 VPC 내 Cross-Account ENI $\rightarrow$ AWS Managed VPC 내 EKS Control Plane(kube-apiserver)
  • Cluster DNS (CoreDNS) 동작
    • Control Plane이 단일하므로 Cloud/On-Prem 상관없이 모든 Pod는 동일한 CoreDNS ClusterIP(예: 10.100.0.10)를 참조합니다.
    • 지연 시간 단축 및 고가용성을 위해 CoreDNS Pod는 AWS EC2 노드와 온프레미스 노드에 분산 배치(Pod Anti-Affinity)하는 것이 권장됩니다.

2. 네트워크 요건 및 Pod 통신 아키텍처

  • 기본 네트워크 연결 조건
    • AWS VPC 대역과 온프레미스 노드 IP 대역 간 Direct Connect 또는 IPsec VPN 사설 연결 필수.
    • IP 대역 중복 금지: VPC CIDR과 온프레미스 Node CIDR 간 IP 충돌이 없어야 합니다.
  • Pod 통신 방식 (2가지)
    • Direct Routing (Non-Overlay):
      • AWS VPC, TGW, 온프레미스 라우터에 Cloud Pod CIDR 및 On-Prem Pod CIDR에 대한 양방향 L3 라우팅 설정 필수.
    • Overlay Network (EKS Hybrid Nodes Gateway 사용):
      • 중간 네트워크 장비에 Pod CIDR 라우팅을 등록하지 않고, VXLAN 터널링(UDP 8472)을 통해 Cloud Pod와 On-Prem Pod 간 직접 통신 구현.

3. EKS Hybrid Nodes Gateway 아키텍처 및 동작 원리

구분 AWS VPC (Cloud) On-Premises (Hybrid Node)
VTEP 역할 주체 EKS Hybrid Nodes Gateway Pod Cilium CNI (Node 레벨)
CNI 구성 AWS VPC CNI Cilium CNI for EKS Hybrid Nodes
주요 역할 VPC Pod 트래픽 $\leftrightarrow$ VXLAN 패킷 상호 변환 Pod 트래픽을 Node IP 기반 VXLAN 패킷으로 SNAT/캡슐화
  • AWS Gateway Pod 동작 방식
    • Deployment 형태 배포: VPC 내부 EC2 노드 위에서 Pod로 구동됩니다.
    • Active-Standby HA 구동: Kubernetes Lease 기반 Leader Election으로 1개의 Active Pod만 모든 VXLAN 트래픽을 처리하며, 나머지는 대기(Standby)합니다.
    • 3개 이상 Replica 구성 가능 여부: Multi-AZ 내결함성은 향상시킬 수 있으나, Active-Standby 특성상 스루풋/대역폭 분산 효과는 없습니다. (대역폭 확장은 Gateway EC2 인스턴스 사양 Upgrading 필요)
  • AWS Gateway 전용 노드(Node Group) 분리 필수 사유 (Best Practice)
    • Source/Destination Check Disabled: Gateway 노드는 중계기(VTEP) 역할을 수행하므로 EC2 ENI의 Source/Destination Check 속성을 비활성화해야 패킷이 드랍되지 않습니다.
    • I/O 병목 방지: 하이브리드 간 모든 Cross-Domain 트래픽이 집중되므로 일반 애플리케이션 Pod와의 리소스 경합을 격리해야 합니다.

4. 구성요소별 전제조건 및 기술 요건

  • AWS 노드 요건
    • AWS VPC CNI 사용 필수.
    • Gateway 전용 EC2 Node Group 구성 (Source/Destination Check: False 적용).
  • 온프레미스 노드 요건
    • Cilium CNI for EKS Hybrid Nodes 사용 필수 (Amazon ECR Public Gallery 제공 공식 이미지 사용).
    • Cilium 설정 값 규칙:
      • Cilium VTEP 기능 활성화 (vtep.enabled=true).
      • L7 프록시 기능 비활성화 (l7Proxy=false).
      • 클러스터를 이탈하는 Pod 트래픽의 Source IP를 Node IP로 변환(Masquerade)하도록 설정.
  • 주요 사용 사례 (Use Cases)
    • AWS Control Plane에서 온프레미스 노드 내 Webhook Pod(OPA, cert-manager 등)로의 직접 호출.
    • AWS EKS Pod와 온프레미스 Pod 간 사설 IP 통신.
    • AWS ALB/NLB에서 온프레미스 Pod로의 직접 트래픽 타겟팅 및 Health Check.

5. 온프레미스 노드 등록 프로세스 (nodeadm)

  • nodeadm 개요
    • AWS가 제공하는 온프레미스 노드 전용 부트스트랩 CLI 도구로, OS 상에 kubelet, containerd, 인증 종속성을 설치 및 초기화합니다.
  • 설치 및 구동 스텝
    1. 바이너리 수급: AWS 제공 S3/CloudFront 경로에서 nodeadm 바이너리 다운로드.
    2. 환경 설치 (nodeadm install): 쿠버네티스 버전 및 인증 제공자(SSM 또는 IAM Roles Anywhere) 지정 후 패키지 설치.
    3. 노드 설정 파일 생성 (nodeConfig.yaml): EKS 클러스터 이름, 리전, 온프레미스 인증 정보(SSM Activation Code/ID 등) 작성.
    4. 노드 초기화 (nodeadm init): 작성한 설정 파일을 전달하여 kubelet 구동 및 EKS Control Plane 바인딩 완료.

6. EKS 노드 관리 개념 정리

  • Managed Node Group
    • AWS EC2 Auto Scaling Group(ASG) 기반으로 동작하는 노드 집합.
    • 인프라 프로비저닝 단계에서 정적으로 사전에 할당하여 관리.
  • Node Class (EC2NodeClass)
    • Karpenter 또는 EKS Auto Mode에서 사용되는 AWS 인프라 전용 템플릿.
    • 서브넷 선택, 보안 그룹, AMI, IAM Role, EBS 디스크 크기 등 하드웨어 및 AWS 속성 정의.
  • Node Pool (NodePool)
    • Karpenter의 쿠버네티스 논리적 스케줄링 정책 (아키텍처, 인스턴스 타입 범위, Spot/On-Demand 비율 등).
    • NodePool 선언 시 내부 nodeClassRef 필드로 NodeClass를 참조하여 구동.