"Kubernetes로 컨테이너를 운영하기로 했습니다. AWS, Azure, GCP 모두 매니지드 Kubernetes를 제공하는데, 어떤 걸 써야 하죠?" 팀에서 이미 주로 사용하는 클라우드가 있다면 해당 벤더의 매니지드 서비스를 선택하는 것이 자연스럽습니다. 다만 각 서비스의 Control Plane 관리 방식, 비용 구조, 네트워킹 모델, 운영 편의성에는 분명한 차이가 있습니다. 이 차이를 이해해야 클러스터 설계 단계에서 운영 비용과 복잡도를 예측할 수 있습니다.
요약
| 기준 | EKS (AWS) | AKS (Azure) | GKE (GCP) |
|---|---|---|---|
| Control Plane 비용 | $0.10/시간 (~$73/월) | 무료 (Standard), $0.10/시간 (Uptime SLA 옵션) | 무료 (1 클러스터), $0.10/시간 (Standard) |
| 기본 K8s 버전 관리 | 수동 업그레이드 (13개월 지원) | 수동 또는 자동 업그레이드 선택 | 자동 업그레이드 (Release Channel) |
| 서버리스 노드 옵션 | Fargate Profile | Virtual Nodes (ACI 기반) | Autopilot 모드 |
| 네트워킹 모델 | VPC CNI (Pod에 VPC IP 할당) | Azure CNI 또는 kubenet | VPC-native (Alias IP) |
| IAM 통합 | IRSA / Pod Identity | Workload Identity (Managed Identity) | Workload Identity (GCP SA 바인딩) |
| 노드 자동 스케일링 | Karpenter 또는 Cluster Autoscaler | Cluster Autoscaler (AKS 내장) | Node Auto-provisioning 또는 Autopilot |
| 운영 복잡도 | 높음 (Add-on 수동 관리 많음) | 중간 (Azure Portal 통합) | 낮음 (Autopilot 시 대부분 자동) |
| 멀티 클러스터 관리 | 별도 구성 필요 | Azure Arc / Fleet Manager | GKE Fleet |
1. 아키텍처 비교: Control Plane 관리 방식
세 서비스 모두 Control Plane(API Server, etcd, Controller Manager, Scheduler)을 벤더가 관리합니다. 사용자는 Worker Node만 관리하면 됩니다. 다만 관리의 깊이와 자동화 수준이 다릅니다.
EKS — Control Plane을 사용자 VPC에 연결
EKS는 Control Plane을 AWS 관리 계정에서 실행하고, 사용자 VPC에 ENI(Elastic Network Interface)를 생성하여 연결합니다.
- API Server Endpoint: Public, Private, 또는 Public+Private 선택 가능
- etcd: AWS가 관리하는 별도 계정에서 실행, 암호화 적용
- Worker Node와 Control Plane 통신: 사용자 VPC 내 ENI를 통해 프라이빗 통신 가능
특징적인 점: EKS는 Control Plane의 네트워크 노출 범위를 사용자가 직접 제어할 수 있습니다. Private Endpoint만 활성화하면 VPC 외부에서 API Server에 접근할 수 없어, 보안 요구사항이 높은 환경에서 유리합니다.
AKS — 관리형 리소스 그룹 분리
AKS는 클러스터 생성 시 두 개의 리소스 그룹을 사용합니다.
- 사용자 리소스 그룹: 사용자가 직접 관리하는 AKS 리소스
- 노드 리소스 그룹 (
MC_*): AKS가 자동 생성하는 인프라 리소스 (VM, Disk, NIC, NSG)
Control Plane은 Azure가 완전히 관리하며 사용자에게 노출되지 않습니다. API Server는 기본적으로 Public Endpoint이며, Private Cluster 옵션으로 Private Endpoint를 활성화할 수 있습니다.
특징적인 점: AKS는 무료 티어에서도 Control Plane SLA 없이 운영이 가능합니다. 프로덕션 환경에서 99.95% SLA가 필요하면 Standard 또는 Premium 티어를 선택해야 합니다.
GKE — 가장 성숙한 자동화
GKE는 Google이 Kubernetes를 직접 개발한 만큼, 가장 긴밀하게 통합된 관리 환경을 제공합니다.
- Standard 모드: 사용자가 Node Pool을 관리 (EKS, AKS와 유사)
- Autopilot 모드: Node 관리까지 GKE가 자동 처리 (Pod 수준에서만 관리)
Autopilot은 노드 프로비저닝, OS 패치, 보안 설정을 모두 GKE가 처리합니다. 사용자는 Pod manifest만 배포하면 됩니다. 다만 Autopilot에서는 특권 컨테이너가 기본적으로 차단되며, DaemonSet도 allowlist를 통해 선택적으로만 허용됩니다. 보안 강화를 위해 privileged: true나 NET_RAW, SYS_ADMIN 같은 Linux capability가 제한됩니다.
특징적인 점: GKE는 Release Channel(Rapid, Regular, Stable)을 통해 Kubernetes 버전 자동 업그레이드를 기본으로 제공합니다. 버전 관리에 대한 운영 부담이 세 서비스 중 가장 적습니다.
2. 비용 구조 비교
매니지드 Kubernetes의 비용은 크게 Control Plane 비용과 Worker Node(컴퓨팅) 비용으로 나뉩니다. 동일한 워크로드를 운영해도 비용 구조의 차이로 인해 총 비용이 달라질 수 있습니다.
Control Plane 비용
| 서비스 | 무료 티어 | 유료 티어 |
|---|---|---|
| EKS | 없음 | $0.10/시간 (~$73/월) 고정 |
| AKS | Free 티어 (SLA 없음) | Standard $0.10/시간, Premium $0.10/시간 + 추가 기능 |
| GKE | Autopilot/Standard 1개 클러스터 존별 무료 | Standard: $0.10/시간 (~$73/월) |
실무 시나리오: 개발/테스트용 클러스터 3개 + 프로덕션 클러스터 2개를 운영한다면?
- EKS: 5 × $73 = $365/월 (Control Plane만)
- AKS: Free 티어 3개(dev) + Standard 2개(prod) = 2 × $73 = $146/월
- GKE: 무료 1개 + 4 × $73 = $292/월
AKS의 Free 티어는 SLA를 제공하지 않으므로 프로덕션에는 부적합하지만, 개발/테스트 클러스터에 활용하면 비용을 절감할 수 있습니다.
Worker Node 비용
Worker Node 비용은 클라우드별 VM 가격에 따르며, 이것이 전체 Kubernetes 비용의 대부분(80~90%)을 차지합니다. 동일 스펙 VM의 가격은 리전과 프로모션에 따라 달라지므로 단순 비교가 어렵지만, 할인 프로그램에 차이가 있습니다.
| 서비스 | Spot/Preemptible | 예약 할인 | 자동 할인 |
|---|---|---|---|
| EKS | Spot Instance (최대 ~90% 할인) | Reserved Instance, Savings Plan | 없음 |
| AKS | Spot VM (최대 ~90% 할인) | Reserved VM Instance | 없음 |
| GKE | Spot VM (최대 ~91% 할인) | Committed Use Discount (1년/3년) | Sustained Use Discount (자동 적용) |
GKE의 Sustained Use Discount는 월 사용량에 따라 자동으로 할인이 적용됩니다. 별도 약정 없이도 장기 실행 워크로드의 비용이 줄어드는 점이 차별화됩니다.
서버리스 노드 옵션 비용
노드 관리 없이 Pod 단위로 비용을 지불하는 옵션도 비교해야 합니다.
| 서비스 | 옵션 | 과금 방식 | 적합한 상황 |
|---|---|---|---|
| EKS | Fargate | vCPU/메모리 × 초 단위 | 배치 작업, 간헐적 워크로드 |
| AKS | Virtual Nodes (ACI) | vCPU/메모리 × 초 단위 | 버스트 트래픽 처리 |
| GKE | Autopilot | Pod 요청 리소스 × 초 단위 | 노드 관리 부담을 완전히 제거하고 싶은 팀 |
Control Plane 비용보다 Worker Node 비용이 훨씬 큽니다. 서비스 선택 시 Control Plane 비용 차이($73/월)보다 해당 클라우드의 VM 가격, 할인 프로그램, 팀의 기존 예약 계약을 더 중요하게 고려해야 합니다.
3. 네트워킹 모델 비교
Kubernetes 네트워킹은 "모든 Pod가 다른 모든 Pod와 NAT 없이 통신할 수 있어야 한다"는 요구사항을 충족해야 합니다. 세 서비스는 이를 구현하는 방식이 다르며, 이 차이가 IP 주소 관리, 네트워크 정책, VPC 통합에 영향을 미칩니다.
EKS — VPC CNI
EKS의 기본 CNI(Container Network Interface)인 VPC CNI는 각 Pod에 VPC 서브넷의 실제 IP를 할당합니다.
- Pod IP = VPC 내 실제 ENI의 Secondary IP
- VPC 내 다른 리소스(EC2, RDS, Lambda)와 직접 통신 가능 (별도 라우팅 불필요)
- Security Group을 Pod 단위로 적용 가능 (Security Group for Pods)
trade-off: - 장점: Pod가 VPC 네이티브 IP를 사용하므로, VPC Flow Logs, Security Group, Route Table 등 기존 AWS 네트워크 도구를 그대로 활용할 수 있습니다. - 단점: 서브넷의 IP 주소를 Pod가 소비합니다. Pod 수가 많으면 IP 고갈 문제가 발생할 수 있습니다. 대규모 클러스터에서는 서브넷 CIDR 설계가 중요합니다.
# IP 고갈 방지: 별도 CIDR을 Pod 전용으로 할당
aws ec2 associate-vpc-cidr-block --vpc-id vpc-xxx --cidr-block 100.64.0.0/16
AKS — Azure CNI vs kubenet
AKS는 두 가지 네트워킹 모델을 제공합니다.
Azure CNI (기본 권장): - Pod에 VNet 서브넷의 실제 IP를 할당 (EKS VPC CNI와 유사) - Azure 네트워크 도구(NSG, UDR, Private Endpoint)와 직접 통합 - IP 소비량이 크므로 서브넷 CIDR 계획이 필수
kubenet: - Node에만 VNet IP를 할당하고, Pod는 Node 내부의 Overlay 네트워크 IP를 사용 - UDR(User Defined Route)로 노드 간 통신을 라우팅 - IP 소비가 적지만, Azure 네트워크 기능과의 통합이 제한적
Azure CNI Overlay (GA, 현재 AKS 기본 IPAM 모드): - Pod에 Overlay 네트워크 IP를 사용하되, Azure CNI의 네트워크 기능은 유지 - VNet IP 소비 없이 대규모 클러스터 운영 가능 - 기본 Pod CIDR: 10.244.0.0/16 (65,536 IP), 노드당 /24 할당으로 최대 256개 노드 스케일링 - 기존 kubenet 클러스터에서 Azure CNI Overlay로의 마이그레이션 경로 지원
GKE — VPC-native (Alias IP)
GKE의 VPC-native 모드는 각 Node에 Secondary IP Range(Alias IP)를 할당하고, 해당 범위에서 Pod IP를 배분합니다.
- Pod IP는 VPC의 Secondary Range에서 할당
- GCP의 네트워크 도구(Firewall Rule, Cloud NAT, VPC Flow Logs)와 통합
- IP 범위를 Node Pool별로 분리할 수 있어 관리가 용이
trade-off: - 장점: Pod CIDR을 VPC와 분리하여 설계할 수 있어, IP 고갈 문제가 EKS보다 적습니다. - 단점: Alias IP의 최대 Pod 수 제한 (노드당 기본 110개)이 있습니다.
네트워킹 모델 비교 요약
| 항목 | EKS (VPC CNI) | AKS (Azure CNI) | GKE (VPC-native) |
|---|---|---|---|
| Pod IP 유형 | VPC 실제 IP | VNet 실제 IP | VPC Secondary Range IP |
| IP 소비 | 높음 (Pod당 VPC IP 1개) | 높음 (CNI) / 낮음 (kubenet, CNI Overlay) | 중간 (Secondary Range 분리) |
| VPC/VNet 통합 | 높음 | 높음 (CNI) / 제한적 (kubenet) | 높음 |
| Network Policy 엔진 | Calico (Add-on) | Calico 또는 Azure NPM | Calico 또는 Dataplane V2 (Cilium 기반) |
| 노드당 최대 Pod 수 | 인스턴스 타입에 따라 다름 (ENI × IP 수) | 250개 (CNI) / 110개 (kubenet) | 110개 (기본) |
4. IAM 통합과 보안
Kubernetes 워크로드에서 클라우드 리소스(S3, Blob Storage, GCS 등)에 접근해야 할 때, 각 서비스의 IAM 통합 방식이 달라집니다.
EKS — IRSA와 Pod Identity
EKS는 Kubernetes ServiceAccount에 IAM Role을 연결하는 두 가지 방식을 제공합니다.
IRSA (IAM Roles for Service Accounts): - OIDC Provider를 설정하여 K8s ServiceAccount와 IAM Role을 연결 - Pod가 AWS STS를 통해 임시 자격 증명을 획득 - 설정이 다소 복잡하지만 세밀한 권한 제어 가능
EKS Pod Identity (GA, 신규 클러스터 권장): - IRSA보다 설정이 간단한 방식으로, 2023년 말 출시 후 GA 상태 - EKS Add-on으로 설치하고 Association을 생성하면 완료 (OIDC Provider 설정 불필요) - Trust Policy가 범용적이어 계정/클러스터마다 재작성할 필요 없음 - 세션 태그가 자동 부여되어 ABAC(Attribute-Based Access Control) 활용 가능 - IRSA도 계속 지원되지만, 신규 설정에는 Pod Identity가 권장됨
AKS — Workload Identity
AKS는 Azure AD(Entra ID)의 Workload Identity를 사용합니다.
- Kubernetes ServiceAccount에 Azure Managed Identity를 연결
- Federated Credential을 통해 토큰 교환
- Azure 리소스(Key Vault, Storage, Cosmos DB 등)에 비밀번호 없이 접근 가능
설정이 비교적 직관적이며, Azure Portal에서 시각적으로 관리할 수 있습니다.
GKE — Workload Identity Federation
GKE의 Workload Identity는 Kubernetes ServiceAccount를 GCP IAM Service Account에 매핑합니다.
- Node의 기본 Service Account 대신 Pod별 권한 분리 가능
iam.gke.io/gcp-service-accountannotation으로 매핑- GCP 리소스에 최소 권한으로 접근
GKE는 Workload Identity가 가장 일찍 도입되어 성숙도가 높고, 설정 과정이 비교적 단순합니다.
보안 기능 비교
| 기능 | EKS | AKS | GKE |
|---|---|---|---|
| Pod 수준 IAM | IRSA / Pod Identity | Workload Identity | Workload Identity |
| Node 격리 | Managed Node Group + Launch Template | Node Pool + VMSS | Node Pool + Shielded GKE Nodes |
| 이미지 검증 | ECR 스캔 + 서명 (별도 구성) | ACR + Defender for Containers | Binary Authorization (네이티브) |
| 네트워크 정책 | Calico (Add-on 설치 필요) | Calico 또는 Azure NPM (생성 시 활성화) | Dataplane V2 (기본 활성화 가능) |
| Secret 암호화 | KMS envelope encryption (수동 설정) | Azure Key Vault 통합 | Cloud KMS 통합 + Application-layer encryption |
세 서비스 모두 Pod 수준의 IAM 분리를 지원합니다. 다만 Node의 기본 Service Account/Instance Profile에 과도한 권한이 있으면, Pod가 metadata endpoint를 통해 Node 권한을 획득할 수 있습니다. Workload Identity를 활성화하고, Node의 기본 권한은 최소화해야 합니다.
5. 운영 편의성과 업그레이드
Kubernetes 버전 관리
| 항목 | EKS | AKS | GKE |
|---|---|---|---|
| 지원 버전 수 | 4개 (일반적으로 최근 4개 minor 버전) | 3~4개 | 3개 (Release Channel 기준) |
| 자동 업그레이드 | 없음 (수동) | 선택 가능 (Planned Maintenance) | 기본 활성화 (Release Channel) |
| 지원 종료 후 | Extended Support ($0.60/시간 추가) | 자동 업그레이드 강제 | Release Channel에서 자동 진행 |
| 업그레이드 방식 | In-place (Control Plane → Node Group 순차) | In-place (Surge 업그레이드) | In-place (Surge 또는 Blue-Green) |
실무 시나리오: Kubernetes 1.28에서 1.29로 업그레이드해야 합니다.
- EKS: Control Plane 업그레이드(CLI/콘솔, ~20분) → 각 Node Group을 순차적으로 업그레이드. Add-on(CoreDNS, kube-proxy, VPC CNI)도 별도로 업데이트해야 합니다. 가장 수동 작업이 많습니다.
- AKS: 클러스터 업그레이드 명령 한 번으로 Control Plane + Node Pool 순차 업그레이드 가능.
az aks upgrade또는 자동 업그레이드 정책으로 처리합니다. - GKE: Release Channel에 따라 자동으로 진행됩니다. Maintenance Window 내에서 Control Plane → Node Pool 순서로 업그레이드됩니다. 사용자가 개입할 일이 가장 적습니다.
Add-on 관리
| Add-on 유형 | EKS | AKS | GKE |
|---|---|---|---|
| CNI | VPC CNI (EKS Add-on) | Azure CNI (기본 내장) | VPC-native (기본 내장) |
| DNS | CoreDNS (EKS Add-on) | CoreDNS (내장) | kube-dns (내장) |
| Ingress Controller | AWS LB Controller (별도 설치) | AGIC 또는 Nginx (Add-on) | GKE Ingress Controller (내장) |
| Monitoring | CloudWatch Agent (별도) | Container Insights (활성화) | Cloud Operations (기본 활성화) |
| Service Mesh | App Mesh 또는 Istio (별도) | Istio-based (Add-on 프리뷰) | Anthos Service Mesh (Add-on) |
EKS의 운영 부담이 큰 이유: EKS는 "필요한 것을 직접 설치"하는 철학입니다. Ingress Controller, External DNS, Cert Manager, Metrics Server, CSI Driver 등을 모두 사용자가 설치하고 버전을 관리해야 합니다. 유연하지만 운영 부담이 큽니다.
GKE의 운영이 편한 이유: GKE는 대부분의 기능이 내장되어 있거나 체크박스 하나로 활성화됩니다. Kubernetes를 처음 운영하는 팀에게는 GKE의 자동화 수준이 진입 장벽을 크게 낮춥니다.
6. 노드 스케일링 전략
기본 스케일링 옵션
| 서비스 | 기본 도구 | 고급 옵션 | 서버리스 |
|---|---|---|---|
| EKS | Cluster Autoscaler | Karpenter | Fargate |
| AKS | Cluster Autoscaler (내장) | KEDA (이벤트 기반) | Virtual Nodes (ACI) |
| GKE | Cluster Autoscaler (내장) | Node Auto-provisioning (NAP) | Autopilot 모드 |
EKS + Karpenter
Karpenter는 AWS에서 개발한 노드 스케일러로, Cluster Autoscaler보다 빠르고 유연합니다.
- Pod 요구사항에 맞는 최적의 인스턴스 타입을 자동 선택
- Node Group 없이 직접 EC2를 프로비저닝
- 30초~1분 내에 노드 추가 가능 (Cluster Autoscaler는 2~5분)
- Spot Instance와의 통합이 용이
GKE Autopilot
Autopilot은 노드 관리를 완전히 제거합니다.
- 사용자는 Node Pool, 인스턴스 타입, OS 업데이트를 관리하지 않음
- Pod의
resources.requests기반으로 과금 - 보안 설정(Shielded Nodes, Workload Identity)이 기본 적용
- 다만 DaemonSet, 특권 컨테이너 등 일부 기능에 제약 존재
스케일링 속도 비교
| 시나리오 | EKS (Karpenter) | AKS (CA) | GKE (NAP) |
|---|---|---|---|
| 신규 노드 추가 | ~30초~1분 | ~2~5분 | ~1~2분 |
| 스케일 다운 | 빈 노드 즉시 제거 | 10분 대기 후 제거 | 빈 노드 즉시 제거 |
| 인스턴스 타입 선택 | 자동 (다양한 타입 혼합) | Node Pool에 고정 | 자동 (NAP) |
7. 선택 기준: 어떤 상황에서 어떤 서비스를 고르는가
팀 상황별 권장
EKS를 선택하는 경우: - 팀이 이미 AWS 서비스(RDS, S3, SQS 등)를 중심으로 아키텍처를 구성하고 있음 - Kubernetes 운영 경험이 있고, 세밀한 커스터마이징이 필요함 - Karpenter를 활용한 고급 노드 스케일링이 필요함 - IAM, VPC, Security Group 등 AWS 네트워크/보안 도구와 깊은 통합이 필요함
AKS를 선택하는 경우: - 팀이 Azure 환경(Active Directory, Azure DevOps, Key Vault 등)을 사용 중임 - .NET 기반 워크로드가 있거나, Windows 컨테이너를 운영해야 함 - Control Plane 비용을 절감하고 싶음 (Free 티어 활용) - Azure Portal에서 시각적으로 클러스터를 관리하고 싶음
GKE를 선택하는 경우: - Kubernetes 운영 경험이 적고, 관리 부담을 최소화하고 싶음 - Autopilot 모드로 노드 관리를 완전히 위임하고 싶음 - 데이터 분석/ML 워크로드와 연계해야 함 (BigQuery, Vertex AI) - 버전 업그레이드, 보안 패치를 자동으로 처리하고 싶음
멀티 클라우드 고려사항
"멀티 클라우드를 위해 Kubernetes를 선택했으니 어떤 벤더든 상관없다"는 이론과 현실은 다릅니다.
실제로는 각 서비스가 클라우드 네이티브 기능(IAM, 네트워킹, 스토리지, LB)과 깊게 결합되어 있어, 클러스터를 다른 벤더로 옮기는 것은 상당한 작업을 필요로 합니다. Kubernetes manifest(Deployment, Service 등)는 이식 가능하지만, 인프라 통합 부분(Ingress annotation, StorageClass, IAM binding)은 벤더별로 다시 작성해야 합니다.
멀티 클라우드가 실제로 필요한 경우라면, 벤더 종속 부분을 추상화하는 계층(예: Crossplane, Terraform, 표준화된 Helm chart)을 도입하는 것이 현실적인 접근입니다.
8. 실무 사용 사례
사례: 50인 규모 스타트업, MSA 15개 서비스 운영
상황: - 팀: DevOps 2명, 백엔드 개발자 10명 - 워크로드: 웹 서비스 15개 (Python, Node.js), 일일 트래픽 변동 큼 - 이미 AWS를 주력으로 사용, RDS, S3, SQS 의존 - Kubernetes 운영 경험: DevOps 팀 2명만 있음
선택: EKS + Karpenter
| 결정 요소 | 이유 |
|---|---|
| AWS 종속 | RDS, S3, SQS와의 통합이 이미 깊고, 다른 클라우드로 이전 계획 없음 |
| Karpenter | 트래픽 변동이 커서 빠른 스케일링 필요. Spot Instance 활용으로 비용 40% 절감 |
| IRSA | 서비스별 S3 버킷, SQS 큐 접근 권한을 Pod 단위로 분리 |
고려한 대안: GKE Autopilot도 검토했지만, AWS 서비스와의 통합 비용(VPN, 지연)이 더 컸습니다.
사례: 대기업 Azure 환경, Windows + Linux 혼합 워크로드
상황: - 조직: Azure AD로 전사 인증 관리, Azure DevOps 파이프라인 사용 중 - 워크로드: .NET 레거시(Windows 컨테이너) + 신규 서비스(Linux) - 보안: 금융 규제로 Private Cluster 필수, Key Vault 중앙 관리
선택: AKS
| 결정 요소 | 이유 |
|---|---|
| Windows 노드 지원 | AKS는 Windows Node Pool을 네이티브로 지원, 혼합 워크로드 운영 가능 |
| Azure AD 통합 | RBAC를 Azure AD 그룹과 연동하여 전사 인증 체계 유지 |
| Private Cluster | Azure Private Link/Endpoint와의 네이티브 통합으로 네트워크 격리 용이 |
| 비용 | Free 티어로 dev/staging 클러스터 비용 절감 |
사례: ML 팀, GPU 워크로드 + 최소 운영 부담
상황: - 팀: ML 엔지니어 5명 (K8s 운영 경험 없음) - 워크로드: 모델 학습(GPU), 추론 서비스(CPU), 데이터 전처리(BigQuery) - 요구사항: K8s 운영에 시간을 쓰고 싶지 않음, 모델 개발에 집중하고 싶음
선택: GKE Autopilot
| 결정 요소 | 이유 |
|---|---|
| Autopilot | 노드 관리, OS 패치, 보안 설정을 GKE가 자동 처리 |
| GPU 지원 | Autopilot에서 GPU Pod 요청 시 자동으로 GPU 노드 프로비저닝 |
| BigQuery/Vertex AI 통합 | 같은 GCP 내에서 데이터 파이프라인과 자연스럽게 연결 |
| Workload Identity | GCS, BigQuery 접근 시 키 파일 없이 안전하게 인증 |
9. 주의할 점과 일반적인 실수
1. "Kubernetes니까 어디서든 동일하게 동작한다"는 가정
Kubernetes API는 표준이지만, 아래 영역은 벤더마다 다릅니다: - Ingress Controller 동작 방식과 annotation - StorageClass와 Persistent Volume 프로비저너 - IAM/RBAC 통합 방식 - Load Balancer 타입과 설정 - Node 스케일링 동작
2. Control Plane 비용만 보고 결정
Control Plane 비용 차이는 월 $73 수준입니다. 실제 총 비용의 80~90%는 Worker Node입니다. 비용 비교는 VM 가격, 할인 프로그램, 네트워크 전송 비용을 포함하여 전체적으로 해야 합니다.
3. 버전 업그레이드 전략 없이 클러스터 운영
EKS는 버전 지원이 종료되면 자동 업그레이드가 아닌 Extended Support(추가 비용)로 전환됩니다. 업그레이드를 미루면 비용이 증가하고, 여러 버전을 한 번에 건너뛰기 어려워집니다. 클러스터 생성 시점부터 업그레이드 주기를 계획해야 합니다.
4. 서버리스 노드 옵션의 제약을 모르고 선택
Fargate, Virtual Nodes, Autopilot 모두 일반 VM 노드 대비 제약이 있습니다: - DaemonSet 불가 또는 제한 - hostNetwork/hostPort 사용 불가 - 특권 컨테이너 제한 - GPU 지원 범위 차이 - 노드 레벨 커스터마이징 불가
운영하려는 워크로드가 이 제약에 영향을 받는지 사전에 확인해야 합니다.
10. 정리
| 선택 기준 | EKS | AKS | GKE |
|---|---|---|---|
| 이미 사용 중인 클라우드 | AWS 중심 | Azure 중심 | GCP 중심 |
| 팀 K8s 경험 | 중~상 | 초~중 | 초~중 |
| 운영 자동화 수준 | 직접 구성 | 중간 | 높음 (Autopilot) |
| 노드 스케일링 | Karpenter (가장 유연) | 기본 CA | NAP / Autopilot |
| 비용 효율 | Spot + Karpenter 조합 | Free 티어 + Reserved VM | Sustained Use + Autopilot |
| Windows 컨테이너 | 지원 (제한적) | 네이티브 지원 (강점) | 지원 (제한적) |
| 보안 자동화 | 수동 설정 많음 | 중간 | 높음 (Shielded Nodes 기본) |
결론적으로: 대부분의 경우, 팀이 이미 사용하고 있는 클라우드의 매니지드 Kubernetes를 선택하는 것이 가장 합리적입니다. 클라우드 간 서비스 간 통합(IAM, 네트워킹, 스토리지)이 매니지드 K8s의 핵심 가치이기 때문입니다. 다만 Kubernetes 운영 경험이 없는 팀이라면 GKE Autopilot이, 세밀한 커스터마이징이 필요한 팀이라면 EKS가, Azure 생태계에 깊이 투자한 조직이라면 AKS가 각각 강점을 보입니다.
관련 글
- Kubernetes 아키텍처 기본 구조: Control Plane과 Worker Node
- AWS ECS vs EKS 차이: 컨테이너 오케스트레이션 선택 기준
- Kubernetes Service 종류: ClusterIP, NodePort, LoadBalancer, Ingress 비교
참고 문서
'Kubernetes' 카테고리의 다른 글
| Kubernetes HPA가 동작하지 않는 이유 (0) | 2026.06.07 |
|---|---|
| Kubernetes RBAC란 무엇인가: Role, ClusterRole, Binding으로 권한 설계하기 (0) | 2026.06.01 |
| Kubernetes Service 종류: ClusterIP, NodePort, LoadBalancer, Ingress 비교 (0) | 2026.05.31 |
| Kubernetes 아키텍처 기본 구조: Control Plane과 Worker Node (0) | 2026.05.31 |