EKS 복원력과 고가용성 퀴즈

이 퀴즈는 Amazon EKS 클러스터의 고가용성(HA), 복원력, Multi-AZ 배포, Cell-Based Architecture, Chaos Engineering, PodDisruptionBudget, Topology Spread Constraints에 대한 이해를 테스트합니다.

퀴즈 개요

  • Multi-AZ 아키텍처 및 구성

  • Cell-Based Architecture 패턴

  • Chaos Engineering 원칙 및 도구

  • PodDisruptionBudget (PDB) 구성

  • Topology Spread Constraints

  • 장애 복구 및 재해 복구

객관식 문제

1. Amazon EKS에서 Multi-AZ 배포의 가장 큰 이점은 무엇인가요?

A. 비용 절감 B. 단일 AZ 장애 시에도 애플리케이션 가용성 유지 C. 네트워크 지연 시간 증가 D. 관리 복잡성 감소

chevron-right정답 보기hashtag

정답: B. 단일 AZ 장애 시에도 애플리케이션 가용성 유지

설명: Multi-AZ 배포의 핵심 이점은 단일 가용 영역(AZ)에 장애가 발생하더라도 다른 AZ에서 워크로드가 계속 실행될 수 있어 애플리케이션의 가용성을 유지할 수 있다는 것입니다.

Multi-AZ 배포의 주요 이점:

  • 단일 AZ 장애 시 자동 페일오버

  • 데이터센터 수준의 장애 복원력

  • 99.99% 이상의 가용성 달성 가능

  • 지역 내 재해 복구 능력 향상

# Multi-AZ를 위한 노드 그룹 구성 예시
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
  name: ha-cluster
  region: ap-northeast-2
nodeGroups:
  - name: ng-multi-az
    instanceType: m5.large
    desiredCapacity: 6
    availabilityZones: ["ap-northeast-2a", "ap-northeast-2b", "ap-northeast-2c"]

2. PodDisruptionBudget(PDB)의 주요 목적은 무엇인가요?

A. Pod의 CPU 사용량 제한 B. 자발적 중단 시 최소 가용 Pod 수 보장 C. Pod 간 네트워크 트래픽 제어 D. Pod의 메모리 사용량 모니터링

chevron-right정답 보기hashtag

정답: B. 자발적 중단 시 최소 가용 Pod 수 보장

설명: PodDisruptionBudget(PDB)은 노드 드레인, 클러스터 업그레이드, 자동 스케일링 등 자발적 중단(Voluntary Disruption) 상황에서 최소한의 Pod가 항상 실행 상태를 유지하도록 보장합니다.

PDB의 핵심 기능:

  • minAvailable: 항상 유지해야 할 최소 Pod 수

  • maxUnavailable: 동시에 중단될 수 있는 최대 Pod 수

  • 롤링 업데이트 및 노드 유지보수 시 서비스 연속성 보장

3. Topology Spread Constraints에서 whenUnsatisfiable: DoNotSchedule의 의미는 무엇인가요?

A. 제약 조건을 만족하지 못하면 Pod를 아무 노드에나 스케줄링 B. 제약 조건을 만족하지 못하면 Pod 스케줄링을 거부 C. 제약 조건을 무시하고 항상 스케줄링 D. 제약 조건 위반 시 기존 Pod를 삭제

chevron-right정답 보기hashtag

정답: B. 제약 조건을 만족하지 못하면 Pod 스케줄링을 거부

설명: whenUnsatisfiable: DoNotSchedule은 토폴로지 분산 제약 조건을 만족시킬 수 없는 경우 해당 Pod의 스케줄링을 거부합니다. 이는 엄격한 분산 정책을 적용할 때 사용됩니다.

whenUnsatisfiable 옵션:

  • DoNotSchedule: 제약 조건 미충족 시 스케줄링 거부 (Hard 제약)

  • ScheduleAnyway: 제약 조건을 최대한 만족시키되, 불가능하면 어디든 스케줄링 (Soft 제약)

4. Cell-Based Architecture에서 "Cell"의 주요 특징으로 올바르지 않은 것은?

A. 독립적으로 배포 및 확장 가능 B. 장애가 전체 시스템으로 전파됨 C. 자체 완결적인 기능 단위 D. 다른 Cell과 느슨하게 결합

chevron-right정답 보기hashtag

정답: B. 장애가 전체 시스템으로 전파됨

설명: Cell-Based Architecture의 핵심 목적은 장애 격리입니다. 각 Cell은 독립적으로 동작하여 한 Cell의 장애가 다른 Cell로 전파되지 않도록 설계됩니다.

Cell-Based Architecture의 핵심 원칙:

  1. 장애 격리: 한 Cell의 장애가 다른 Cell에 영향을 주지 않음

  2. 독립적 배포: 각 Cell을 개별적으로 업데이트 가능

  3. 수평적 확장: Cell 단위로 용량 확장

  4. 자체 완결성: 각 Cell이 필요한 모든 구성 요소 포함

5. Chaos Engineering에서 "Steady State Hypothesis"의 의미는 무엇인가요?

A. 시스템을 항상 정지 상태로 유지 B. 실험 전후로 시스템이 정상 동작함을 검증하는 기준 C. 카오스 실험을 중단하는 조건 D. 시스템의 최대 부하 상태

chevron-right정답 보기hashtag

정답: B. 실험 전후로 시스템이 정상 동작함을 검증하는 기준

설명: Steady State Hypothesis는 시스템의 "정상" 상태를 정의하는 측정 가능한 지표입니다. 카오스 실험 전에 이 가설이 참인지 확인하고, 실험 후에도 시스템이 이 상태로 돌아오는지 검증합니다.

Steady State 지표 예시:

  • 응답 시간 < 200ms (p99)

  • 에러율 < 0.1%

  • 처리량 > 1000 req/s

  • Pod 가용률 > 99%

6. EKS에서 Zone-Aware Routing을 구현하기 위한 Service 설정은 무엇인가요?

A. service.kubernetes.io/topology-aware-hints: auto B. service.kubernetes.io/zone-routing: enabled C. service.kubernetes.io/local-only: true D. service.kubernetes.io/cross-zone: disabled

chevron-right정답 보기hashtag

정답: A. service.kubernetes.io/topology-aware-hints: auto

설명: Kubernetes 1.23+에서 도입된 Topology Aware Hints를 사용하면 kube-proxy가 같은 Zone 내의 엔드포인트로 트래픽을 우선 라우팅하여 Cross-AZ 트래픽 비용과 지연 시간을 줄일 수 있습니다.

Zone-Aware Routing의 이점:

  • Cross-AZ 데이터 전송 비용 절감

  • 네트워크 지연 시간 감소

  • 같은 Zone 내 트래픽 유지로 안정성 향상

7. PDB에서 maxUnavailable: 25%를 설정하고 replicas가 8개일 때, 동시에 중단될 수 있는 최대 Pod 수는?

A. 1개 B. 2개 C. 3개 D. 4개

chevron-right정답 보기hashtag

정답: B. 2개

설명: maxUnavailable: 25%는 전체 replicas의 25%까지 동시에 중단될 수 있음을 의미합니다. 8개의 25%는 2개입니다 (8 × 0.25 = 2).

계산 방식:

  • 백분율은 내림 처리됨

  • replicas = 8, maxUnavailable = 25%

  • 8 × 0.25 = 2개 (소수점 이하 내림)

  • 따라서 최소 6개의 Pod가 항상 실행 상태 유지

8. Litmus Chaos에서 제공하는 실험 유형이 아닌 것은?

A. pod-delete B. node-drain C. network-loss D. cluster-delete

chevron-right정답 보기hashtag

정답: D. cluster-delete

설명: Litmus Chaos는 클러스터 전체를 삭제하는 실험은 제공하지 않습니다. Chaos Engineering의 목적은 통제된 환경에서 시스템 복원력을 테스트하는 것이지, 전체 인프라를 파괴하는 것이 아닙니다.

Litmus Chaos 주요 실험 유형:

  • Pod 레벨: pod-delete, pod-cpu-hog, pod-memory-hog, pod-network-loss

  • Node 레벨: node-drain, node-cpu-hog, node-memory-hog, node-taint

  • Network 레벨: network-loss, network-latency, network-corruption

  • AWS 특화: ec2-terminate, ebs-loss, az-chaos

9. EKS Control Plane의 고가용성은 어떻게 보장되나요?

A. 사용자가 직접 Multi-AZ 구성 필요 B. AWS가 자동으로 여러 AZ에 걸쳐 관리 C. 단일 AZ에서만 실행됨 D. 수동 페일오버 구성 필요

chevron-right정답 보기hashtag

정답: B. AWS가 자동으로 여러 AZ에 걸쳐 관리

설명: Amazon EKS Control Plane은 AWS에 의해 완전 관리되며, 자동으로 여러 가용 영역에 걸쳐 고가용성으로 배포됩니다. etcd 데이터도 여러 AZ에 복제됩니다.

EKS Control Plane HA 특징:

  • 자동 Multi-AZ 배포 (최소 2개 AZ)

  • API 서버 자동 스케일링

  • etcd 데이터 자동 복제 및 백업

  • 자동 장애 감지 및 복구

  • 99.95% SLA 보장

사용자 책임 영역:

  • 데이터 플레인(노드) Multi-AZ 구성

  • 워크로드 Pod 분산 배치

  • PDB 및 Topology Spread 설정

10. Topology Spread Constraints에서 maxSkew의 의미는 무엇인가요?

A. 최대 Pod 수 B. 토폴로지 도메인 간 Pod 수 차이의 최대 허용치 C. 최소 노드 수 D. 최대 노드당 Pod 수

chevron-right정답 보기hashtag

정답: B. 토폴로지 도메인 간 Pod 수 차이의 최대 허용치

설명: maxSkew는 서로 다른 토폴로지 도메인(예: AZ, 노드) 간에 허용되는 Pod 수 차이의 최대값입니다. 예를 들어 maxSkew: 1이면 어떤 두 도메인 간에도 Pod 수 차이가 1을 초과할 수 없습니다.

maxSkew 예시 (replicas=6, 3개 AZ):

  • maxSkew=1: Zone-A(2), Zone-B(2), Zone-C(2) - 균등 분산

  • maxSkew=2: Zone-A(3), Zone-B(2), Zone-C(1) - 허용됨

  • maxSkew=1 위반: Zone-A(4), Zone-B(1), Zone-C(1) - 스케줄링 거부

단답형 문제

1. EKS에서 Cross-AZ 데이터 전송 비용을 줄이기 위한 Service 어노테이션은 무엇인가요?

chevron-right정답 보기hashtag

정답: service.kubernetes.io/topology-aware-hints: auto

설명: 이 어노테이션을 Service에 추가하면 Kubernetes가 Topology Aware Hints를 활성화하여 같은 AZ 내의 엔드포인트로 트래픽을 우선 라우팅합니다.

2. PodDisruptionBudget에서 "자발적 중단(Voluntary Disruption)"의 예시 3가지를 작성하세요.

chevron-right정답 보기hashtag

정답:

  1. 노드 드레인 (kubectl drain)

  2. 클러스터 업그레이드

  3. 클러스터 오토스케일러에 의한 노드 축소 (Scale-down)

추가 예시:

  • Deployment/StatefulSet의 롤링 업데이트

  • 수동 Pod 삭제 (kubectl delete pod)

  • 노드 유지보수를 위한 cordon/drain

비자발적 중단(Involuntary Disruption) 예시:

  • 하드웨어 장애

  • 커널 패닉

  • VM 삭제

  • OOM Kill

3. Chaos Engineering의 4가지 핵심 원칙을 나열하세요.

chevron-right정답 보기hashtag

정답:

  1. Steady State 가설 수립: 정상 상태를 정의하는 측정 가능한 지표 설정

  2. 실제 이벤트 시뮬레이션: 실제 발생 가능한 장애 상황 재현

  3. 프로덕션 환경에서 실험: 가능한 실제 환경에서 테스트

  4. 폭발 반경 최소화: 실험의 영향 범위를 제한하고 자동 중단 조건 설정

추가 원칙:

  • 실험 자동화로 지속적 검증

  • 결과 분석 및 시스템 개선

4. EKS 노드 그룹을 Multi-AZ로 구성할 때 최소 권장 AZ 수는 몇 개인가요?

chevron-right정답 보기hashtag

정답: 3개

설명: 3개 이상의 AZ에 걸쳐 노드를 분산 배치하면:

  • 단일 AZ 장애 시에도 2/3 용량 유지

  • Quorum 기반 시스템(예: etcd)의 안정성 보장

  • 더 균등한 워크로드 분산 가능

5. Cell-Based Architecture에서 트래픽을 특정 Cell로 라우팅하는 방법은 무엇인가요?

chevron-right정답 보기hashtag

정답: 라우팅 레이어(예: API Gateway, Service Mesh, Load Balancer)에서 사용자/테넌트 ID 기반으로 특정 Cell로 트래픽을 분배합니다.

구현 방법:

  1. 해시 기반 라우팅: 사용자 ID를 해시하여 Cell 결정

  2. 명시적 매핑: 사용자-Cell 매핑 테이블 유지

  3. 지역 기반: 지리적 위치에 따른 Cell 할당

실습 문제

1. 다음 요구사항을 만족하는 PodDisruptionBudget YAML을 작성하세요.

  • 이름: api-server-pdb

  • 대상: label이 app: api-server인 Pod

  • 최소 3개의 Pod가 항상 실행 상태 유지

chevron-right정답 보기hashtag

검증 명령어:

예상 출력:

2. 3개의 AZ에 균등하게 Pod를 분산시키는 Topology Spread Constraints를 포함한 Deployment를 작성하세요.

  • Deployment 이름: web-frontend

  • replicas: 6

  • maxSkew: 1

  • 분산 키: topology.kubernetes.io/zone

chevron-right정답 보기hashtag

검증 명령어:

예상 출력:

3. Litmus Chaos를 사용하여 특정 Pod를 삭제하는 Chaos 실험을 정의하세요.

  • 대상: namespace가 production, label이 app: payment-service인 Pod

  • 실험 시간: 30초

  • 삭제할 Pod 수: 1개

chevron-right정답 보기hashtag

사전 준비:

검증 명령어:

심화 문제

1. 금융 서비스 회사에서 EKS 클러스터의 99.99% 가용성을 달성하기 위한 아키텍처를 설계하세요. Multi-AZ, Cell-Based Architecture, PDB, Chaos Engineering을 모두 활용한 종합적인 전략을 제시하세요.

chevron-right정답 보기hashtag

99.99% 가용성 달성을 위한 종합 아키텍처:

1. Multi-Region + Multi-AZ 구성:

2. Cell-Based Architecture 적용:

3. 강력한 PDB 정책:

4. Topology Spread + Anti-Affinity:

5. Chaos Engineering 프로그램:

6. 모니터링 및 자동 복구:

SLA 계산:

  • 99.99% = 연간 약 52분 다운타임

  • Multi-AZ: 단일 AZ 장애 대응

  • Multi-Region: 리전 장애 대응

  • Cell 격리: 영향 범위 제한

  • 자동 복구: MTTR 최소화

2. 대규모 이커머스 플랫폼에서 블랙프라이데이 트래픽 급증(10배)에 대비한 EKS 복원력 전략을 수립하세요. Pre-scaling, Chaos Engineering 검증, 장애 시나리오별 대응 방안을 포함하세요.

chevron-right정답 보기hashtag

블랙프라이데이 트래픽 급증 대비 전략:

1. 사전 용량 계획 (Pre-scaling):

2. 트래픽 급증 전 Chaos Engineering 검증:

3. 장애 시나리오별 대응 방안:

시나리오
감지
자동 대응
수동 대응

AZ 장애

CloudWatch Alarm

Topology Spread로 자동 분산

Route53 Failover

DB 지연

Latency Alert

Circuit Breaker 활성화

Read Replica 전환

메모리 부족

OOM Alert

HPA Scale-out

Node 추가

트래픽 폭주

TPS Alert

Rate Limiting

CDN 캐시 확대

4. Circuit Breaker 패턴:

5. 실시간 모니터링 대시보드:

6. 롤백 계획:

테스트 일정:

  • D-14: 기본 Chaos 테스트

  • D-7: 전체 시나리오 GameDay

  • D-3: 최종 확인 및 Pre-scaling

  • D-Day: 실시간 모니터링 및 대응

마지막 업데이트