EKS Hybrid Nodes

이제는 Amazon EKS를 온프레미스에서도

Junseok Oh

Sr. Solutions Architect

Amazon Web Services

Agenda

총 40분 세션

1
개요 & 아키텍처 10분
2
네트워킹 & 트래픽 10분
3
노드 구성 & 운영 10분
4
고급 패턴 & 전략적 가치 10분
질문은 각 Block 종료 시에 받겠습니다.

온프레미스 Kubernetes 운영의 현실

Control Plane 관리 부담

"버전 업그레이드, etcd 백업/복구, 인증서 갱신... 운영팀의 야근이 끊이지 않습니다"

보안 패치 & 컴플라이언스

"CVE 대응, CIS 벤치마크 준수, 감사 대응에 수개월이 소요됩니다"

모니터링 사일로

"온프렘과 클라우드 환경 간 통합 관측이 어렵습니다"

최신 AI 서비스 접근의 한계

"온프렘 단독 환경에서 최신 AI 모델 활용과 Agent 개발이 어렵습니다"

EKS Hybrid/Edge 포트폴리오

EKS Anywhere

완전한 온프레미스 Kubernetes 배포

  • Control Plane + Worker 모두 온프레미스
  • VMware vSphere, Bare Metal, CloudStack 지원
  • AWS와 독립적으로 실행 가능 (Air-gapped 환경)
  • EKS Connector로 콘솔 통합 관리 가능

EKS Hybrid Nodes

Control Plane은 AWS, Worker는 온프레미스

  • AWS 관리형 Control Plane + 고객 관리 Worker
  • VPN 또는 Direct Connect 연결 필수
  • AWS 서비스 (Bedrock, SageMaker 등) 즉시 연계 가능
  • 온프렘 GPU/특수 하드웨어 활용 + 클라우드 관리 편의성

EKS on Outposts

AWS 하드웨어를 고객 데이터센터에 설치

  • AWS가 하드웨어까지 관리 (완전 관리형)
  • 로컬 Kubernetes + AWS 서비스 일체형
  • 최소 지연 시간, 데이터 지역성 보장
  • 초기 투자 비용 및 공간 요구사항 있음

EKS Hybrid Nodes란?

EKS Control Plane(AWS 완전 관리) + Worker Node(온프레미스) 하이브리드 구성

VPN Direct Connect Private Endpoint
EKS Hybrid Nodes Architecture

적합한 사용 사례

  • 온프레미스 GPU/특수 하드웨어 활용
  • 규제 준수를 위한 데이터 지역성 요구
  • 지연 시간에 민감한 Edge 워크로드
  • 클라우드 마이그레이션 전환기

부적합한 사용 사례

  • 순수 클라우드 네이티브 워크로드 → EKS managed node group 또는 Fargate 권장
  • 온프레미스 인프라가 없는 환경

아키텍처 개요: 노드 등록 흐름

↑↓ 키로 단계를 이동하세요

IaaS를 넘어서는 가치

Hybrid Nodes = AWS Managed Services Gateway

AI/ML

Bedrock, SageMaker

Database

RDS, ElastiCache

Analytics

OpenSearch, Kinesis

책임 공유 모델

AWS AWS 관리 영역

  • EKS Control Plane 가용성
  • etcd 백업 및 복구
  • API Server 고가용성
  • Kubernetes 버전 업그레이드
  • Control Plane 보안 패치

Customer 고객 관리 영역

  • Worker 노드 (HW, OS, 런타임)
  • 온프레미스 네트워크 연결
  • CNI 구성 (Cilium/Calico)
  • 모니터링 에이전트 배포
  • 워크로드 배포 및 관리
Control Plane 운영 부담이 AWS로 이전되어, 팀은 워크로드와 비즈니스 로직에 집중할 수 있습니다.

주요 제약 사항

도입 전 반드시 확인해야 할 사항

IPv4 전용 - IPv6 네트워크는 현재 미지원
Remote Network CIDR - 클러스터당 최대 15개까지 등록 가능
VPC CNI 미지원 - Cilium 또는 Calico 사용 필수
vCPU 기반 과금 - Hybrid Node당 $0.02/vCPU/시간
엔드포인트 모드 제한 - "Public and Private" 동시 사용 불가, 반드시 하나만 선택
네트워크 설계 시 CIDR 제한과 CNI 요구사항을 미리 검토하세요.

지원 환경

항목 지원 사양
운영 체제 Ubuntu 20.04/22.04/24.04 RHEL 8/9 Amazon Linux 2023 Bottlerocket (VMware)
아키텍처 x86_64 arm64 (ARMv8.2+)
EKS 버전 1.31+
리전 대부분의 AWS 상용 리전 지원
CNI Cilium (공식 지원) Calico (공식 미지원)
Container Runtime containerd 1.6+
최소 하드웨어 CPU 1 vCPU Memory 1 GiB Disk 50 GB 권장: 4코어 / 8GB / 100GB NVMe

크리덴셜 프로바이더

노드 인증 방식 선택

SSM Hybrid Activations

  • PKI 인프라 불필요 - 빠른 설정
  • Activation Code + ID로 간편 등록
  • 자동 자격 증명 갱신
  • 세션 지속 시간: 최대 1시간
# nodeadm 설정 예시 (SSM) apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: my-cluster region: ap-northeast-2 hybrid: ssm: activationCode: xxxxxxxx activationId: xxxxxxxx-xxxx-xxxx

IAM Roles Anywhere

  • 기존 PKI 인프라 활용 가능
  • X.509 인증서 기반 인증
  • 세션 지속 시간: 최대 12시간
  • 에어갭(Air-gapped) 환경에 적합
# nodeadm 설정 예시 (IAM Roles Anywhere) apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: my-cluster region: ap-northeast-2 hybrid: iamRolesAnywhere: trustAnchorArn: arn:aws:rolesanywhere:... profileArn: arn:aws:rolesanywhere:... roleArn: arn:aws:iam::...

Block 1 Quiz

학습 내용을 확인해 봅시다

Q1. EKS Hybrid Nodes에 적합하지 않은 사용 사례는?

Q2. EKS Hybrid Nodes가 지원하는 운영 체제 조합은?

Q3. EKS Hybrid Nodes의 최소 하드웨어 요구 사항(AWS 공식)은?

Q&A

EKS CP는 AWS 관리형
온프렘 인프라 활용

🔗

VPN/DX로 안전한
하이브리드 네트워킹

📦

nodeadm으로 간편한
노드 부트스트랩

🔑

SSM 또는 IAM RA
인증 프로바이더

궁금한 점이 있으시면 질문해 주세요

네트워킹 심층분석

CIDR 설계, 6가지 트래픽 패턴, 방화벽 규칙

네트워크 전제 조건

EKS Hybrid Nodes를 위한 네트워크 아키텍처 요구사항

Hybrid Nodes Prerequisites Diagram
1 VPC에 EKS Control Plane ENI가 배치됨
2 Transit Gateway 또는 Virtual Private Gateway로 온프렘 연결
3 Remote Node/Pod CIDR을 클러스터 생성 시 지정
4 권장 네트워크 지연시간: 100ms 이하 (Direct Connect 시 <10ms 가능, 200ms 초과 시 연결 불안정)

CIDR 설계 체크리스트

IP 충돌 없는 하이브리드 네트워크 설계

  • Remote Node CIDR: 온프렘 노드 IP 범위 (예: 10.80.0.0/16)
  • Remote Pod CIDR: 온프렘 파드 IP 범위 (예: 10.85.0.0/16)
  • VPC CIDR과 겹치지 않을 것
  • Service CIDR과 겹치지 않을 것
  • RFC-1918 범위 내에 있을 것 (10.x, 172.16-31.x, 192.168.x)
  • 최대 15개 CIDR 블록 제한 준수
권장사항: Pod CIDR은 라우팅 가능하게 설계 (BGP 사용) — Admission Webhook 등 CP→Pod 통신에 필수

Pattern 1: Kubelet → EKS Control Plane

Kubelet이 API 서버에 연결하는 경로

Public Endpoint Route
Private Endpoint Route
권장: 프로덕션 환경에서는 Private 엔드포인트 사용 권장
aws eks update-cluster-config --name <cluster> --resources-vpc-config endpointPrivateAccess=true

Pattern 2: Control Plane → Kubelet

API Server가 Kubelet에 연결 (port 10250)

CP → Kubelet (port 10250)
용도: Webhook 호출, kubectl exec/logs 명령 처리
# 방화벽에서 TCP 10250 허용 필요

Pattern 3: Pod → EKS Control Plane

Pod가 CoreDNS를 경유하여 API Server에 접근

Pod → API Server (with CNI NAT)
CNI 동작: Pod IP (10.85.x.x)를 Node IP (10.80.x.x)로 SNAT 처리 후 전송
cilium status --verbose # NAT 정책 확인

Pattern 4: Control Plane → Pod (Webhooks)

Admission Webhook 호출 — Routable Pod CIDR 필수

CP → Webhook Pod
중요: Remote Pod CIDR이 라우팅 가능해야만 동작합니다. BGP 또는 Static Route 필수.

Pattern 5: Pod ↔ Pod (Hybrid Nodes 간)

VXLAN 캡슐화를 통한 노드 간 Pod 통신

Node 1 → Node 2 (VXLAN)
Node 2 → Node 1 (VXLAN)
Cilium VXLAN: Port 8472/UDP 사용 — 방화벽에서 양방향 허용 필요
# UDP 8472 양방향 허용: iptables -A INPUT -p udp --dport 8472 -j ACCEPT

Pattern 6: Cloud Pod ↔ Hybrid Pod

EC2 Pod와 Hybrid Node Pod 간 Cross-boundary 통신

Cloud → Hybrid
Hybrid → Cloud
필수 설정: Pod CIDR 라우팅 + VPC 라우트 테이블에 온프렘 CIDR 추가
aws ec2 create-route --route-table-id rtb-xxx --destination 10.85.0.0/16 --transit-gateway-id tgw-xxx

방화벽 규칙 요약

네트워크 팀과 사전 조율이 필요한 포트 목록

포트 프로토콜 방향 용도
443 TCP On-Prem → AWS Kubelet → API Server 통신
10250 TCP AWS → On-Prem API Server → Kubelet (exec, logs, webhooks)
8472 UDP 양방향 Cilium VXLAN 터널링
4240 TCP 양방향 Cilium Health Check
53 TCP UDP 양방향 CoreDNS 쿼리
Tip: 초기 테스트 시에는 넓은 범위로 열고, 안정화 후 최소 권한으로 제한

VPC 엔드포인트 구성

Private Link를 통한 AWS 서비스 접근

필수 Required Endpoints

EKS
eks.<region>
ECR API
api.ecr.<region>
ECR DKR
<acct>.dkr.ecr.<region>
S3
Gateway Endpoint
STS
sts.<region>

선택 Optional Endpoints

SSM
ssm.<region>
CloudWatch Logs
logs.<region>
EC2
ec2.<region>
에어갭 환경: 모든 엔드포인트가 필수이며, ECR 미러링 또는 프라이빗 레지스트리 구성 필요

Block 2 Quiz

네트워킹 핵심 개념 점검

Q1. 온프레미스와 AWS 간 네트워크 연결 권장 방법은?

Q2. Kubelet → API Server 통신에 필수인 방화벽 포트는?

Q3. Pod CIDR 설계 시 고려사항이 아닌 것은?

Q4. EKS Hybrid Nodes 권장 네트워크 지연시간은?

Q&A

🔌

CIDR 겹침 방지
사전 설계 필수

🔁

6가지 트래픽 패턴
이해 & 방화벽 설정

🔒

Private Endpoint
권장 (보안 강화)

VPC 엔드포인트
에어갭 환경 핵심

궁금한 점이 있으시면 질문해 주세요

Deep Dive & References

더 깊이 공부하기 위한 공식 문서와 리소스

공식 문서

EKS Hybrid Nodes - Networking
네트워크 전제조건, CIDR 설계, 트래픽 패턴 전체 가이드
docs.aws.amazon.com/eks/latest/userguide/hybrid-nodes-networking.html
VPC Endpoints for EKS
Private 연결을 위한 VPC 엔드포인트 설정 가이드
docs.aws.amazon.com/eks/latest/userguide/private-clusters.html
EKS Hybrid Nodes - Firewall
필수 방화벽 포트 및 네트워크 요구사항
docs.aws.amazon.com/eks/latest/userguide/hybrid-nodes-networking.html#hybrid-nodes-firewall

추가 리소스

Cilium Documentation
VXLAN 터널링, IPAM, 네트워크 정책 심층 가이드
docs.cilium.io/en/stable/network/concepts/routing/#encapsulation
AWS Blog - EKS Hybrid Nodes
실전 사례와 아키텍처 패턴 블로그
aws.amazon.com/blogs/containers/getting-started-with-eks-hybrid-nodes/
EKS Hybrid Nodes Workshop
실습 워크샵으로 직접 구성해보기
catalog.workshops.aws/workshops/eks-hybrid-nodes

노드 구성 & 운영

nodeadm CLI, Bootstrap, Cilium CNI, 업그레이드

nodeadm CLI

Hybrid Node 부트스트랩을 위한 핵심 도구

Shell# nodeadm 다운로드 curl -OL 'https://hybrid-assets.eks.amazonaws.com/releases/latest/bin/linux/amd64/nodeadm' chmod +x nodeadm && sudo mv nodeadm /usr/local/bin/ # 의존성 설치 (kubelet, containerd 등) sudo nodeadm install 1.31 --credential-provider ssm # 노드 초기화 (클러스터에 조인) sudo nodeadm init --config-source file://nodeconfig.yaml # 노드 업그레이드 sudo nodeadm upgrade 1.32 --config-source file://nodeconfig.yaml # 디버그 정보 수집 sudo nodeadm debug
주요 명령어
  • install - kubelet, containerd 등 의존성 설치
  • init - 클러스터에 노드 등록
  • upgrade - Kubernetes 버전 업그레이드
  • debug - 문제 진단 정보 수집
Credential Provider 옵션
  • ssm - Systems Manager Hybrid Activations
  • iam-ra - IAM Roles Anywhere

Bootstrap 워크플로우

온프레미스 노드가 EKS 클러스터에 조인되는 8단계

NodeConfig YAML

노드 설정의 핵심 - 4가지 주요 섹션

nodeconfig.yamlapiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: my-hybrid-cluster region: ap-northeast-2 apiServerEndpoint: https://XXXXX.gr7.ap-northeast-2.eks.amazonaws.com # 자동 조회 가능 certificateAuthority: | # 자동 조회 가능 (선택) -----BEGIN CERTIFICATE----- MIIDxxxx... -----END CERTIFICATE----- cidr: 10.100.0.0/16 # Service CIDR, 자동 조회 가능

cluster 섹션 설명

  • name - EKS 클러스터 이름
  • region - AWS 리전
  • apiServerEndpoint - EKS API 서버 엔드포인트 자동 조회
  • certificateAuthority - 클러스터 CA 인증서 자동 조회
  • cidr - Kubernetes Service CIDR 자동 조회
aws eks describe-cluster 명령으로 필요한 정보를 조회할 수 있습니다.
SSM Hybrid ActivationapiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: hybrid: ssm: activationCode: <activation-code> activationId: <activation-id>

hybrid 섹션 설명

  • ssm - Systems Manager Hybrid Activation 사용
  • activationCode/Id - SSM 콘솔에서 생성
activationCode는 만료 시간이 있습니다 (기본 24시간, 최대 30일). registrationLimit으로 하나의 activation에 등록 가능한 노드 수를 설정하세요.
kubelet 설정apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: kubelet: config: maxPods: 110 shutdownGracePeriod: 30s shutdownGracePeriodCriticalPods: 10s flags: - --node-labels=eks.amazonaws.com/compute-type=hybrid - --register-with-taints=eks.amazonaws.com/compute-type=hybrid:NoSchedule

kubelet 섹션 설명

  • maxPods - 노드당 최대 Pod 수
  • shutdownGracePeriod - 정상 종료 대기 시간
  • node-labels - Hybrid Node 식별 레이블
  • taints - NoSchedule effect로 Toleration 없는 Pod 스케줄링 차단 → Hybrid Node 전용 워크로드 격리
💡 이 Taint는 Block 4 Slide 41의 Taint/Toleration 패턴과 연결됩니다
containerd 설정apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: containerd: config: | version = 2 [plugins."io.containerd.grpc.v1.cri".registry] config_path = "/etc/containerd/certs.d"

containerd 섹션 설명

  • config - containerd 설정 파일 내용
  • Private Registry mirror 설정 가능
  • 에어갭 환경에서 ECR 미러링에 활용
/etc/containerd/certs.d 경로에 레지스트리별 설정을 추가합니다.

CNI 선택 가이드

왜 Cilium인가?

공식 지원 Cilium
  • eBPF 기반 데이터 플레인 — iptables 불필요
  • AWS ECR Public에서 공식 빌드 제공
  • VXLAN 오버레이 내장 — 온프렘 네트워크 호환
  • Hubble로 네트워크 observability 내장
  • BGP, Ingress, LB IPAM, kube-proxy replacement 지원
  • 지원 버전: v1.17.x, v1.18.x
공식 미지원 Calico
  • iptables 기반 데이터 플레인
  • AWS 공식 문서에서 제거됨 (examples repo에 설정 존재)
  • 별도 IP pool 관리 필요
  • AWS 기술 지원 범위 밖 (커뮤니티 지원)
Calico는 더 이상 AWS 공식 지원 대상이 아닙니다. 신규 배포는 반드시 Cilium을 사용하세요.
Cilium v1.18.x는 Linux kernel ≥ 5.10 필요 — Ubuntu 20.04, RHEL 8 미지원

Cilium CNI 설치

AWS ECR Public 공식 빌드 + Helm 배포

Helm Install# Cilium 설치 - AWS ECR Public 공식 빌드 helm install cilium oci://public.ecr.aws/eks/cilium/cilium \ --version 1.18.3-0 \ --namespace kube-system \ --values cilium-values.yaml
설치 포인트
  • OCI Registry — ECR Public에서 공식 빌드 직접 설치
  • values YAML — 설정을 파일로 분리하여 GitOps 관리
  • namespace — 반드시 kube-system에 설치
  • nodeAffinity — Hybrid Nodes에만 배포 제한
설치 후 확인
# Cilium 상태 확인 cilium status kubectl get pods -n kube-system -l k8s-app=cilium # 연결 테스트 cilium connectivity test
Cilium은 Hybrid Nodes 전용입니다. 클라우드 노드의 VPC CNI와 독립 운영됩니다.

Cilium Values & Pod CIDR

cilium-values.yaml 핵심 설정과 Pod CIDR 설계

cilium-values.yaml
affinity: # Hybrid Nodes에만 배포 nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: In values: ["hybrid"] ipam: mode: cluster-pool operator: clusterPoolIPv4MaskSize: 25 clusterPoolIPv4PodCIDRList: ["10.85.0.0/16"] loadBalancer: serviceTopology: true operator: unmanagedPodWatcher: restart: false envoy: enabled: false # L7 정책 필요 시 별도 활성화 kubeProxyReplacement: "false"
Pod CIDR 설계
  • VPC CIDR과 겹치지 않도록 설정
  • 온프레미스 네트워크와 분리
  • 예: 10.85.0.0/16
  • /25: 노드당 126 Pod, /24: 254 Pod
  • Pod CIDR → 노드 IP 라우팅 필수 (Static 또는 BGP)
# Static Route (각 노드마다) ip route add 10.85.0.0/25 via 192.168.1.101 ip route add 10.85.0.128/25 via 192.168.1.102
# Cilium BGP (자동 광고) bgpControlPlane: enabled: true # + CiliumBGPPeeringPolicy 적용

노드 등록 확인

kubectl 명령으로 Hybrid Node 상태 확인

$ kubectl get nodes NAME STATUS ROLES AGE VERSION hybrid-node-001 Ready <none> 5m v1.31.2-eks hybrid-node-002 Ready <none> 3m v1.31.2-eks $ kubectl describe node hybrid-node-001 | grep -A5 Labels Labels: eks.amazonaws.com/compute-type=hybrid kubernetes.io/arch=amd64 kubernetes.io/os=linux node.kubernetes.io/instance-type=on-prem-gpu $ kubectl get nodes -l eks.amazonaws.com/compute-type=hybrid NAME STATUS ROLES AGE VERSION hybrid-node-001 Ready <none> 5m v1.31.2-eks hybrid-node-002 Ready <none> 3m v1.31.2-eks $ kubectl get pods -n kube-system -l k8s-app=cilium -o wide NAME READY STATUS NODE cilium-xxxxx 1/1 Running hybrid-node-001 cilium-yyyyy 1/1 Running hybrid-node-002 $ kubectl get nodes -o custom-columns='NAME:.metadata.name,PODCIDR:.spec.podCIDR' NAME PODCIDR hybrid-node-001 10.85.0.0/25 hybrid-node-002 10.85.0.128/25

업그레이드 전략

안전한 Kubernetes 버전 업그레이드

권장

Rolling Upgrade

노드를 하나씩 순차적으로 업그레이드

# 1. 노드 drain kubectl drain hybrid-node-001 \ --ignore-daemonsets # 2. 업그레이드 sudo nodeadm upgrade 1.32 \ --config-source file://nodeconfig.yaml # 3. uncordon kubectl uncordon hybrid-node-001
안전

Canary Upgrade

1개 노드만 먼저 업그레이드 후 검증

  • 새 버전 노드 1개만 업그레이드
  • 24시간 모니터링 후 검증
  • 문제없으면 나머지 순차 진행
  • 프로덕션 환경에 적합
비상

Rollback

업그레이드 실패 시 복구 절차

# 1. 노드 제거 sudo nodeadm uninstall # 2. 이전 버전 재설치 sudo nodeadm install 1.31 \ --credential-provider ssm # 3. 다시 조인 sudo nodeadm init \ --config-source file://nodeconfig.yaml

에어갭 환경

인터넷 연결 없이 Hybrid Nodes 운영하기

Step 1 사전 준비 (인터넷 호스트)

  • hybrid-assets.eks.amazonaws.com에서 아티팩트 다운로드
  • nodeadm, kubelet, containerd 바이너리
  • Cilium 컨테이너 이미지 + S3 업로드
# 아티팩트 다운로드 & S3 업로드 nodeadm install 1.31 --credential-provider ssm aws s3 sync ./artifacts/ \ s3://hybrid-assets-bucket/
# containerd mirror 설정 # /etc/containerd/certs.d/docker.io/hosts.toml server = "https://registry-mirror.local"

Step 2 런타임 (에어갭 환경)

  • Route 53 PHZ — hybrid-assets DNS override
  • S3 VPC Endpoint — Private S3 접근
  • ECR VPC Endpoint — 컨테이너 이미지 풀
# nodeadm init (에어갭) sudo nodeadm init \ --config-source \ s3://hybrid-assets-bucket/nodeconfig.yaml
# PHZ 레코드 (DNS override) hybrid-assets.eks.amazonaws.com CNAME s3.ap-northeast-2.amazonaws.com # → S3 VPC Gateway Endpoint로 라우팅
핵심 흐름: Route 53 PHZ로 DNS override → S3 VPC Endpoint 리다이렉트 — 온프레미스 DNS에서 PHZ 참조 설정 필요
eks.*.amazonaws.com ecr.*.amazonaws.com s3.*.amazonaws.com ssm.*.amazonaws.com sts.*.amazonaws.com

트러블슈팅

자주 발생하는 문제와 해결 방법

증상: kubectl get nodes에서 NotReady

원인: CNI 미설치, kubelet 설정 오류, 네트워크 연결 실패

해결:

# kubelet 로그 확인 sudo journalctl -u kubelet -f # nodeadm 디버그 정보 sudo nodeadm debug # Cilium 상태 확인 kubectl get pods -n kube-system -l k8s-app=cilium # 네트워크 연결 테스트 curl -v https://<api-server-endpoint>/healthz
체크리스트
  • Cilium DaemonSet이 Running 상태인가?
  • kubelet이 API Server에 연결 가능한가?
  • CA 인증서가 올바르게 설정되었나?
  • 방화벽에서 443, 10250 포트가 열려있나?

증상: ImagePullBackOff

원인: ECR 접근 불가, VPC Endpoint 미설정, 크리덴셜 만료

해결:

# ECR 연결 테스트 curl https://api.ecr.ap-northeast-2.amazonaws.com # VPC Endpoint 확인 aws ec2 describe-vpc-endpoints \ --filters "Name=service-name,Values=*ecr*" # containerd 로그 sudo journalctl -u containerd -f # 수동 이미지 풀 테스트 sudo crictl pull <image-url>
체크리스트
  • ECR VPC Endpoint가 설정되어 있나?
  • SSM/IAM RA 크리덴셜이 유효한가?
  • Security Group에서 443 포트가 열려있나?
  • Private Registry mirror가 설정되어 있나?

증상: DNS 해석 실패

원인: CoreDNS 미배포, clusterDNS 설정 오류, 방화벽 53 포트 차단

해결:

# CoreDNS Pod 확인 kubectl get pods -n kube-system -l k8s-app=kube-dns # DNS 테스트 Pod 실행 kubectl run dnstest --image=busybox --rm -it \ -- nslookup kubernetes.default # kubelet의 clusterDNS 설정 확인 cat /var/lib/kubelet/kubeadm-flags.env | grep dns # 방화벽 포트 확인 sudo iptables -L -n | grep 53
체크리스트
  • CoreDNS Pod가 Running 상태인가?
  • clusterDNS IP가 올바르게 설정되었나?
  • UDP/TCP 53 포트가 허용되어 있나?
  • Service CIDR 라우팅이 설정되었나?
  • CoreDNS가 Hybrid Nodes에도 스케줄링되어 있나?
CoreDNS Hybrid 배포 설정
# tolerations — Hybrid Node에 스케줄링 허용 tolerations: - key: eks.amazonaws.com/compute-type value: "hybrid" effect: NoSchedule # topologySpreadConstraints — Cloud/Hybrid 균등 분산 topologySpreadConstraints: - maxSkew: 1 topologyKey: eks.amazonaws.com/compute-type whenUnsatisfiable: ScheduleAnyway

Block 3 퀴즈

학습 내용 확인

1. nodeadm의 주요 역할은 무엇인가요?
2. nodeadm init 실행에 필요한 3가지 클러스터 정보는?
3. NodeConfig YAML에서 유효하지 않은 kubelet 설정은?

Deep Dive & References

더 깊이 공부하기 위한 공식 문서와 리소스

공식 문서

EKS Hybrid Nodes - nodeadm
nodeadm CLI 레퍼런스 및 부트스트랩 가이드
docs.aws.amazon.com/eks/latest/userguide/hybrid-nodes-nodeadm.html
NodeConfig YAML Reference
cluster, hybrid, kubelet, containerd 4개 섹션 상세 스펙
docs.aws.amazon.com/eks/latest/userguide/hybrid-nodes-nodeadm.html#hybrid-nodes-nodeconfig
Credential Providers (SSM / IAM RA)
SSM Hybrid Activations vs IAM Roles Anywhere 비교
docs.aws.amazon.com/eks/latest/userguide/hybrid-nodes-creds.html

추가 리소스

Cilium Install Guide for EKS
Helm values, IPAM, VXLAN 설정 심층 가이드
docs.cilium.io/en/stable/installation/k8s-install-helm/
Air-Gapped Environment Setup
오프라인 환경에서의 아티팩트 관리 및 PHZ 설정
docs.aws.amazon.com/eks/latest/userguide/hybrid-nodes-artifacts.html
Troubleshooting Hybrid Nodes
공식 트러블슈팅 가이드 및 nodeadm debug 활용
docs.aws.amazon.com/eks/latest/userguide/hybrid-nodes-troubleshooting.html

고급 패턴 & 전략적 가치

Cloud Bursting, 규제 대응, AI Agent, 비용 최적화

Taint/Toleration으로 워크로드 격리

하이브리드 노드에 특정 Pod만 스케줄링

YAML # 노드 Taint 설정 (nodeadm flags) --register-with-taints=eks.amazonaws.com/compute-type=hybrid:NoSchedule # Pod Toleration + NodeAffinity (둘 다 필요!) tolerations: - key: eks.amazonaws.com/compute-type operator: Equal value: hybrid effect: NoSchedule affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: eks.amazonaws.com/compute-type operator: In values: ["hybrid"]
Toleration: Taint가 있는 노드에 스케줄링을 허용  |  NodeAffinity: 해당 노드에 반드시 배치되도록 강제
둘 다 설정해야 완전한 워크로드 격리

스케줄링 결과

Hybrid Node 1

H
H
X

Hybrid Node 2

H
H

Cloud Node 1

C
C
C

Cloud Node 2

C
C
H Hybrid 전용 C 일반 Pod X 스케줄 거부
📖 참고 문서

Cloud Bursting with Karpenter

온프레미스 용량 초과 시 클라우드로 자동 확장

Scale-out: 온프렘 가득 차면 Karpenter가 클라우드 노드 프로비저닝
Scale-in: pod-deletion-cost로 클라우드 Pod 먼저 제거
📖 참고 문서

Pod Deletion Cost 전략

스케일다운 시 클라우드 Pod 우선 제거

2

온프렘 Pod

cost: 1000

높은 우선순위
마지막에 제거

1

클라우드 Pod

cost: -100

낮은 우선순위
먼저 제거

결과: 스케일다운 시 클라우드 리소스 먼저 반환 → 온프렘 인프라 최대 활용
pod-deletion-cost.yaml # 온프렘 Pod - 높은 deletion cost apiVersion: v1 kind: Pod metadata: annotations: controller.kubernetes.io/pod-deletion-cost: "1000" --- # 클라우드 Pod - 낮은 deletion cost apiVersion: v1 kind: Pod metadata: annotations: controller.kubernetes.io/pod-deletion-cost: "-100"

적용 방법

  • MutatingWebhook으로 노드 레이블 기반 자동 주입
  • 또는 Kyverno/OPA 정책으로 구현
📖 참고 문서

MutatingAdmissionWebhook 자동 주입

Pod Deletion Cost · Tolerations 자동 설정

WebhookConfiguration
apiVersion: admissionregistration.k8s.io/v1 kind: MutatingWebhookConfiguration metadata: name: hybrid-pod-mutator webhooks: - name: hybrid.mutate.pods namespaceSelector: matchLabels: hybrid-inject: "enabled" rules: - apiGroups: [""] resources: ["pods"] operations: ["CREATE"] clientConfig: service: name: hybrid-mutator-svc namespace: hybrid-system path: "/mutate"
주입 결과 (Pod Spec)
metadata: annotations: # Cloud Pod 우선 축소 controller.kubernetes.io/ pod-deletion-cost: "-100" spec: tolerations: - key: eks.amazonaws.com/compute-type value: "hybrid" effect: NoSchedule nodeAffinity: preferredDuringScheduling: - weight: 80 preference: matchExpressions: - key: eks.amazonaws.com/compute-type operator: In values: ["hybrid"]
Namespace Label 필수: hybrid-inject: "enabled" 레이블이 있는 네임스페이스에만 자동 주입됩니다. 시스템 네임스페이스(kube-system 등)에는 적용하지 마세요.

규제 대응 & 컴플라이언스

데이터 주권 보장과 감사 추적

데이터 위치 선택권

데이터 위치를 자유롭게 선택 — 클라우드도 규제 충족 가능하지만, 온프레미스 유지가 필요한 조직에 최적

감사 추적

IAM Roles Anywhere의 x509Subject/CN으로 노드별 감사 추적 가능 → 인증서 기반 식별

네트워크 격리

VPN/Direct Connect + Private Endpoint로 퍼블릭 인터넷 경유 없음 → 보안 경계 유지

컴플라이언스 자동화

AWS Config, CloudTrail로 Control Plane 관련 컴플라이언스 자동 모니터링

핵심 가치: 클라우드와 온프레미스 모두 규제 충족 가능 — Hybrid Nodes는 데이터 위치 선택의 유연성 제공
🏦
금융권 클라우드 이용
가이드라인 충족
🔐
개인정보보호법
데이터 위치 선택권
📋
내부 보안 정책
유연한 배치 선택
📖 참고 문서

AWS Managed Services 연계

온프레미스에서 AWS AI/ML 서비스 직접 활용

▲▼ 화살표로 진행
핵심: Pod Identity를 통해 온프렘 Pod가 AWS IAM Role을 직접 Assume → Managed Services에 안전하게 접근
📖 참고 문서

AI Agent 개발 가속화

LLM Gateway: 모델 실험 · GPU Bursting · PII 라우팅

📖 참고 문서

비용 최적화 전략

기존 인프라 활용 + 필요 시 클라우드 확장

$0.02
vCPU/hr
EKS Hybrid Nodes 추가 비용
(기존 EKS 클러스터 비용 외)
100%
기존 HW 활용
온프레미스 서버 자산 최대 활용
GPU 투자 보존
$0.10/hr
EKS 클러스터 비용
EKS Control Plane 관리 비용
HA, etcd 백업, 인증서 갱신 포함
On-Demand
클라우드 버스팅
피크 시에만 클라우드 리소스 사용
유휴 비용 최소화
비용 철학: 기존 인프라 투자를 보존하면서 AWS Managed Services의 가치를 더하는 접근 - CapEx는 유지, OpEx는 최적화
📖 참고 문서

왜 EKS Hybrid Nodes인가?

Tanzu(VKS) · OpenShift 대비 전략적 장점

Tanzu / VKS
OpenShift
EKS Hybrid Nodes
핵심 수치
성능 vGPU 가상화 오버헤드 10-20%
성능 CRI-O + SELinux 오버헤드 5-10%
성능 베어메탈 직접 접근, 오버헤드 0-2%
처리량 23%↑
레이턴시 26%↓
유연성 온프렘 고정, 수동 확장
유연성 ROSA 연동 가능하나 별도 구독
유연성 피크 시 AWS GPU/CPU 자동 추가
Cloud Burst
자동 대응
운영 etcd·마스터 직접 운영
운영 CP 자체 관리, 업그레이드 복잡
운영 AWS 관리형 CP, 99.95% SLA
운영 인력
60% 절감
비용 vSphere 라이센스 + Over-provisioning
비용 서브스크립션 $13K+/yr per node
비용 사용한 vCPU만 과금 ($0.02/hr)
CapEx → OpEx
전환
최신 기술 vSphere 버전 락인, 드라이버 지연
최신 기술 K8s 릴리스 3-6개월 지연
최신 기술 최신 NVIDIA 드라이버 즉시 적용
Flash Attention
TensorRT-LLM
결론: Tanzu는 vSphere 락인, OpenShift는 높은 구독 비용과 업그레이드 복잡성 — EKS Hybrid Nodes는 성능·유연성·운영·비용·기술 모든 축에서 개선
📖 참고 문서

핵심 요약

EKS CP는 AWS가 관리
온프렘 인프라 활용

🔗

VPN/DX로 안전한
하이브리드 네트워킹

📦

nodeadm으로 간편한
노드 부트스트랩

🤖

Bedrock/AgentCore 등
AWS AI 서비스 즉시 연동

🛡

데이터 주권 유지 +
관리형 서비스 활용

Q&A

궁금한 점이 있으시면 질문해 주세요

Thank You

감사합니다

오준석 (Junseok Oh)

Sr. Solutions Architect, AWS

← All Presentations