EKS Auto Mode 마이그레이션 가이드 퀴즈
관련 문서: 마이그레이션 가이드
객관식 문제
1. 관리형 노드 그룹에서 Auto Mode로 마이그레이션 시 첫 번째 단계는 무엇인가요?
- A) 기존 노드 그룹 즉시 삭제
- B) 현재 상태 분석 (노드 리소스 사용량, 워크로드 분포 확인)
- C) Auto Mode NodePool 생성
- D) 모든 Pod drain
정답 보기
정답: B) 현재 상태 분석 (노드 리소스 사용량, 워크로드 분포 확인)
설명: 마이그레이션의 첫 단계는 현재 환경을 철저히 분석하는 것입니다.
마이그레이션 단계:
- 현재 상태 분석 - 노드 그룹, 리소스 사용량, 워크로드 분포 확인
- Auto Mode 활성화
- NodePool 구성
- 워크로드 마이그레이션
- 기존 노드 그룹 축소
- 기존 노드 그룹 삭제
- 검증 및 최적화
bash
# 현재 노드 그룹 확인
eksctl get nodegroup --cluster my-cluster
# 노드 리소스 사용량 분석
kubectl top nodes
# 워크로드 분포 확인
kubectl get pods -A -o wide | awk '{print $8}' | sort | uniq -c2. 마이그레이션 중 기존 노드 그룹과 Auto Mode를 공존시키는 방법은?
- A) 불가능하므로 순차적으로만 가능
- B) nodeSelector로 워크로드 분리
- C) 별도 클러스터 필요
- D) AWS Support 티켓 필요
정답 보기
정답: B) nodeSelector로 워크로드 분리
설명: 공존 기간 동안 nodeSelector와 affinity를 사용하여 워크로드를 분리합니다.
yaml
# 기존 노드 그룹에 고정된 워크로드
apiVersion: apps/v1
kind: Deployment
metadata:
name: legacy-critical-app
spec:
template:
spec:
nodeSelector:
eks.amazonaws.com/nodegroup: old-nodegroup
---
# Auto Mode로 이전 가능한 워크로드
apiVersion: apps/v1
kind: Deployment
metadata:
name: migrated-app
spec:
template:
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: karpenter.sh/nodepool
operator: Exists3. 점진적 워크로드 이전 순서로 권장되는 것은?
- A) 프로덕션 -> 스테이징 -> 개발
- B) 개발 -> 스테이징 -> 프로덕션 (비중요 워크로드부터)
- C) 모든 워크로드 동시 이전
- D) 랜덤 순서
정답 보기
정답: B) 개발 -> 스테이징 -> 프로덕션 (비중요 워크로드부터)
설명: 점진적 마이그레이션으로 위험을 최소화합니다.
yaml
# 1단계: 비중요 워크로드 이전
apiVersion: apps/v1
kind: Deployment
metadata:
name: dev-app
spec:
template:
spec:
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
preference:
matchExpressions:
- key: node-type
operator: In
values: ["auto-mode"]이전 순서:
- 개발 환경 워크로드
- 스테이징 워크로드
- 프로덕션 비중요 워크로드
- 프로덕션 중요 워크로드
4. 롤백이 필요할 때 수행해야 하는 단계 순서는?
- A) 클러스터 삭제 후 재생성
- B) NodePool 삭제 -> 기존 노드 그룹 스케일업 -> 워크로드 이전
- C) AWS Support 문의
- D) Auto Mode만 비활성화
정답 보기
정답: B) NodePool 삭제 -> 기존 노드 그룹 스케일업 -> 워크로드 이전
설명: 롤백은 역순으로 진행합니다.
bash
#!/bin/bash
# rollback.sh
# 1. Auto Mode NodePool 비활성화
kubectl delete nodepool migration-pool
# 2. 기존 노드 그룹 스케일 업
eksctl scale nodegroup \
--cluster my-cluster \
--name old-nodegroup \
--nodes 10 \
--nodes-min 3
# 3. 워크로드를 기존 노드로 이전
kubectl patch deployment migrated-app -p '
{
"spec": {
"template": {
"spec": {
"nodeSelector": {
"eks.amazonaws.com/nodegroup": "old-nodegroup"
},
"affinity": null
}
}
}
}'
# 4. Auto Mode Pod drain
for node in $(kubectl get nodes -l karpenter.sh/nodepool=migration-pool -o name); do
kubectl drain $node --ignore-daemonsets --delete-emptydir-data
done5. 기존 노드 그룹을 단계적으로 축소할 때 권장되는 방법은?
- A) 즉시 0으로 축소
- B) 50%씩 단계적 축소 후 안정화 확인
- C) 1개씩만 축소
- D) 모든 노드 동시에 drain
정답 보기
정답: B) 50%씩 단계적 축소 후 안정화 확인
설명: 점진적 축소로 서비스 영향을 최소화합니다.
bash
#!/bin/bash
CLUSTER="my-cluster"
NODEGROUP="old-nodegroup"
CURRENT_SIZE=$(eksctl get nodegroup --cluster $CLUSTER --name $NODEGROUP -o json | jq -r '.[0].DesiredCapacity')
# 50%씩 축소
while [ $CURRENT_SIZE -gt 0 ]; do
NEW_SIZE=$((CURRENT_SIZE / 2))
if [ $NEW_SIZE -lt 1 ]; then
NEW_SIZE=0
fi
echo "Scaling from $CURRENT_SIZE to $NEW_SIZE"
eksctl scale nodegroup --cluster $CLUSTER --name $NODEGROUP \
--nodes $NEW_SIZE --nodes-min 0
# 안정화 대기
sleep 300
# 워크로드 상태 확인
kubectl get pods -A --field-selector=status.phase=Pending
CURRENT_SIZE=$NEW_SIZE
done6. 마이그레이션 중 모니터링해야 할 핵심 지표가 아닌 것은?
- A) Pending Pod 수
- B) 노드 프로비저닝 시간
- C) EC2 인스턴스 비용
- D) 워크로드 가용성
정답 보기
정답: C) EC2 인스턴스 비용
설명: 마이그레이션 중에는 서비스 안정성이 최우선이므로 다음 지표를 모니터링합니다.
| 지표 | 정상 범위 | 알람 조건 |
|---|---|---|
| Pending Pod 수 | 0-5 | > 10 for 5분 |
| 노드 프로비저닝 시간 | < 90초 | > 120초 |
| 워크로드 가용성 | > 99.9% | < 99.5% |
| API 응답 시간 | < 200ms | > 500ms |
비용은 마이그레이션 완료 후 최적화 단계에서 확인합니다.
bash
# 실시간 모니터링
watch -n 5 'echo "=== Pending Pods ===" && \
kubectl get pods -A --field-selector=status.phase=Pending && \
echo "=== Node Status ===" && kubectl get nodes -o wide'7. 마이그레이션 완료 후 검증해야 할 항목이 아닌 것은?
- A) 모든 워크로드 정상 실행 확인
- B) Auto Mode 노드에서 Pod 분포 확인
- C) 기존 노드 그룹 완전 삭제
- D) NodePool 상태 확인
정답 보기
정답: C) 기존 노드 그룹 완전 삭제
설명: 마이그레이션 검증 시점에서는 기존 노드 그룹을 유지하여 롤백 옵션을 보존합니다. 삭제는 안정성 확인 후 진행합니다.
검증 체크리스트:
- 모든 Pod Running 상태 확인
- Auto Mode 노드에 워크로드 분포 확인
- NodePool 및 NodeClaim 정상 상태
- 애플리케이션 성능 테스트
- 로그 및 메트릭 정상 수집
- 일정 기간(1-2주) 안정성 확인 후 기존 노드 그룹 삭제
8. Karpenter를 직접 사용하던 클러스터에서 Auto Mode로 전환 시 주의사항은?
- A) 직접 전환 가능
- B) 기존 Karpenter 리소스와 충돌 가능, Karpenter 제거 후 전환
- C) 동시 운영 권장
- D) 추가 비용 발생
정답 보기
정답: B) 기존 Karpenter 리소스와 충돌 가능, Karpenter 제거 후 전환
설명: Auto Mode는 내부적으로 Karpenter를 사용하므로, 기존 self-managed Karpenter와 충돌할 수 있습니다.
전환 절차:
- 기존 Karpenter NodePool 구성 백업
- Karpenter가 관리하는 워크로드를 관리형 노드 그룹으로 임시 이전
- self-managed Karpenter 제거
- Auto Mode 활성화
- Auto Mode NodePool 구성 (백업 참고)
- 워크로드 이전
bash
# Karpenter 제거 전 확인
kubectl get nodepools
kubectl get nodeclaims
kubectl get nodes -l karpenter.sh/nodepool
# Karpenter 제거
helm uninstall karpenter -n karpenter
kubectl delete namespace karpenter