Skip to main content

Compute

EKS Clusters

mall-apne2-az-a

속성
Cluster Namemall-apne2-az-a
AZap-northeast-2a only
Private Subnetprivate_subnet_ids[0]10.2.16.0/20
Bootstrap Nodest3.medium / t3a.medium
Role Suffix-apne2-az-a
IRSAALB Controller, OTel Collector, Tempo

핵심: 모든 리소스(EKS 노드, NLB, Pod)가 ap-northeast-2a에만 존재합니다. private_subnet_ids 중 index [0]만 사용하여 single-AZ 격리를 달성합니다.

mall-apne2-az-c

속성
Cluster Namemall-apne2-az-c
AZap-northeast-2c only
Private Subnetprivate_subnet_ids[1]10.2.32.0/20
Bootstrap Nodest3.medium / t3a.medium
Role Suffix-apne2-az-c
IRSAALB Controller, OTel Collector, Tempo

AZ-A와 동일한 구조로 ap-northeast-2c에만 존재합니다.

Karpenter per AZ

각 EKS 클러스터의 Karpenter EC2NodeClass는 해당 AZ의 서브넷만 선택하도록 이중 안전장치를 적용합니다.

AZ-A EC2NodeClass

apiVersion: karpenter.k8s.aws/v1
kind: EC2NodeClass
metadata:
name: default
spec:
role: mall-apne2-az-a-node-group
subnetSelectorTerms:
- tags:
Tier: private
topology.kubernetes.io/zone: ap-northeast-2a # 물리적 AZ 고정
securityGroupSelectorTerms:
- tags:
karpenter.sh/discovery: mall-apne2-az-a # 논리적 격리
amiSelectorTerms:
- alias: al2023@latest
blockDeviceMappings:
- deviceName: /dev/xvda
ebs:
volumeSize: 100Gi
volumeType: gp3
iops: 3000
throughput: 125
encrypted: true
deleteOnTermination: true

AZ-C EC2NodeClass

spec:
role: mall-apne2-az-c-node-group
subnetSelectorTerms:
- tags:
Tier: private
topology.kubernetes.io/zone: ap-northeast-2c # AZ-C만
securityGroupSelectorTerms:
- tags:
karpenter.sh/discovery: mall-apne2-az-c # AZ-C 전용 SG
amiSelectorTerms:
- alias: al2023@latest
이중 AZ 고정
  1. topology.kubernetes.io/zone 서브넷 태그로 물리적 AZ 고정
  2. karpenter.sh/discovery SG 태그로 논리적 격리

NodePool의 topology.kubernetes.io/zone requirement도 추가하면 3중 안전장치가 됩니다.

NodePool Configuration

US 리전과 동일한 6개 NodePool을 각 AZ 클러스터에 배포합니다:

NodePool용도Instance Types
general범용 워크로드m5, m5a, m6i
critical시스템 컴포넌트m5, m5a
api-tierAPI 서비스c5, c5a, c6i
worker-tier비동기 워커m5, m5a
batch-tier배치 작업m5, m5a
memory-tier메모리 집약r5, r5a, r6i

NLB per AZ

각 AZ에 독립 NLB를 배포합니다. Route53 Latency-based 또는 Weighted routing으로 트래픽을 분배합니다.

속성AZ-A NLBAZ-C NLB
Public Subnet10.2.1.0/2410.2.3.0/24
TLSACM cert (*.atomai.click)ACM cert (*.atomai.click)
SGShared NLB SG (CloudFront prefix list)Shared NLB SG
TargetEKS mall-apne2-az-a podsEKS mall-apne2-az-c pods
Route53 (api-korea.atomai.click)
├── Latency/Weighted → NLB-A (AZ-A, Public Subnet 10.2.1.0/24)
│ └── → api-gateway pods (mall-apne2-az-a)
└── Latency/Weighted → NLB-C (AZ-C, Public Subnet 10.2.3.0/24)
└── → api-gateway pods (mall-apne2-az-c)

US 리전과의 차이점

항목US (Multi-Region)Korea (Multi-AZ)
클러스터 수리전당 1AZ당 1
클러스터 이름multi-region-mallmall-apne2-az-a/c
Private Subnet/24 (256 IPs)/20 (4,096 IPs)
Karpenter AZmulti-AZ 분산single-AZ 고정
EC2NodeClass rolemulti-region-mall-node-groupmall-apne2-az-a-node-group / az-c
TopologySpreadConstraints활성 (cross-AZ 분산)제거 (단일 AZ)