Skip to content

EKS Auto Mode 노드 수명주기 퀴즈

관련 문서: 노드 수명주기

객관식 문제

1. NodePool에서 노드를 주기적으로 교체하기 위한 설정 필드 이름은 무엇인가요?

  • A) nodeLifetime
  • B) maxAge
  • C) expireAfter
  • D) rotationPeriod
정답 보기

정답: C) expireAfter

설명:expireAfter 필드를 사용하면 노드의 최대 수명을 설정하여 보안 패치나 AMI 업데이트를 위해 노드를 주기적으로 교체할 수 있습니다.

yaml
spec:
  template:
    spec:
      # 노드 최대 수명 설정
      expireAfter: 168h  # 7일 후 자동 교체

일반적인 설정값:

  • 개발 환경: 336h (14일)
  • 스테이징: 168h (7일)
  • 프로덕션: 72h ~ 168h (3-7일)
  • 보안 중요 환경: 24h ~ 48h (1-2일)

2. expireAfter가 설정된 노드가 만료되면 어떤 일이 발생하나요?

  • A) 노드가 즉시 삭제됨
  • B) 노드가 cordon되고 drain 후 삭제됨
  • C) 관리자에게 알림만 전송됨
  • D) 노드가 자동으로 재부팅됨
정답 보기

정답: B) 노드가 cordon되고 drain 후 삭제됨

설명: 노드가 만료되면 Karpenter가 graceful한 프로세스를 실행합니다:

  1. Cordon: 새 Pod 스케줄링 차단
  2. Drain: 기존 Pod를 다른 노드로 이동
  3. Delete: EC2 인스턴스 종료

이 과정에서 PodDisruptionBudget과 Disruption Budget이 존중됩니다.

yaml
disruption:
  budgets:
    # 만료로 인한 교체도 이 budget의 제한을 받음
    - nodes: "10%"

3. AL2023과 Bottlerocket AMI 중 더 빠른 부팅 시간을 제공하는 것은?

  • A) AL2023
  • B) Bottlerocket
  • C) 동일함
  • D) 인스턴스 타입에 따라 다름
정답 보기

정답: B) Bottlerocket

설명: Bottlerocket은 컨테이너 워크로드에 최적화된 OS로, AL2023보다 빠른 부팅 시간을 제공합니다.

부팅 시간 비교:

AMI부팅 시간특징
AL202320-40초범용 패키지, 유연성
Bottlerocket15-25초컨테이너 전용, 최소 OS
yaml
apiVersion: eks.amazonaws.com/v1
kind: NodeClass
metadata:
  name: fast-boot
spec:
  amiFamily: Bottlerocket  # 빠른 부팅

Bottlerocket 추가 장점:

  • 불변 루트 파일 시스템
  • 자동 보안 업데이트
  • 작은 공격 표면

4. AMI 업데이트가 발생했을 때 기존 노드에서 Drift가 감지되면 어떤 일이 발생하나요?

  • A) 노드가 자동으로 인플레이스 업데이트됨
  • B) 새 AMI로 노드가 순차적으로 교체됨
  • C) 관리자 승인 후 교체됨
  • D) 아무 일도 발생하지 않음
정답 보기

정답: B) 새 AMI로 노드가 순차적으로 교체됨

설명: EKS Auto Mode는 새 AMI가 사용 가능해지면 Drift를 감지하고 노드를 순차적으로 교체합니다.

Drift 감지 조건:

  • 새로운 EKS 최적화 AMI 릴리스
  • NodeClass의 amiFamily 변경
  • 보안 그룹 변경
  • 서브넷 설정 변경
yaml
# Drift로 인한 교체도 Disruption Budget 적용
disruption:
  budgets:
    - nodes: "10%"  # 한 번에 10%만 교체

5. 노드 freshness(신선도)를 위해 expireAfter를 짧게 설정하면 발생할 수 있는 trade-off는?

  • A) 비용 절감
  • B) 노드 교체 빈도 증가로 인한 일시적 성능 저하 가능성
  • C) 보안 취약점 증가
  • D) 클러스터 안정성 향상
정답 보기

정답: B) 노드 교체 빈도 증가로 인한 일시적 성능 저하 가능성

설명: 짧은 expireAfter는 보안을 강화하지만 다음과 같은 trade-off가 있습니다:

장점:

  • 최신 보안 패치 적용
  • AMI 업데이트 빠른 적용
  • 노드 드리프트 방지

단점:

  • 노드 교체 중 일시적 용량 감소
  • 더 많은 Pod 재스케줄링
  • 스팟 인스턴스의 경우 추가 인터럽트 가능성

권장 사항:

yaml
# 균형 잡힌 설정
spec:
  template:
    spec:
      expireAfter: 168h  # 7일
  disruption:
    budgets:
      - nodes: "10%"  # 동시 교체 제한

6. Consolidation과 Expiration이 동시에 트리거되면 어떤 것이 우선인가요?

  • A) Consolidation이 항상 우선
  • B) Expiration이 항상 우선
  • C) 둘 중 노드 교체 조건에 먼저 도달한 것이 실행
  • D) 관리자가 선택해야 함
정답 보기

정답: C) 둘 중 노드 교체 조건에 먼저 도달한 것이 실행

설명: Karpenter는 여러 disruption 이유를 독립적으로 평가하고, 조건에 맞으면 실행합니다.

Disruption 우선순위 (일반적인 평가 순서):

  1. Drift: 설정 변경이나 AMI 업데이트 감지
  2. Expiration: expireAfter 시간 초과
  3. Consolidation: 저사용률 또는 빈 노드
yaml
# 예: 5일 된 저사용률 노드
# - expireAfter: 7일 -> 아직 만료 안됨
# - consolidation 조건 충족 -> Consolidation으로 교체

# 예: 8일 된 정상 사용률 노드
# - expireAfter: 7일 -> 만료됨
# - Expiration으로 교체

7. 보안 패치 적용을 위해 노드를 즉시 교체해야 할 때 사용하는 방법은?

  • A) expireAfter를 0으로 설정
  • B) 노드에 Drift 어노테이션 추가
  • C) NodeClass 업데이트로 Drift 트리거 또는 노드 drain
  • D) 클러스터 재시작
정답 보기

정답: C) NodeClass 업데이트로 Drift 트리거 또는 노드 drain

설명: 긴급 보안 패치 적용 방법:

방법 1: NodeClass 업데이트 (권장)

yaml
# tags나 설정 변경으로 drift 트리거
apiVersion: eks.amazonaws.com/v1
kind: NodeClass
metadata:
  name: default
spec:
  tags:
    SecurityPatch: "2025-02-19"  # 태그 변경으로 drift

방법 2: 수동 drain

bash
# 특정 노드 drain
kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data

# 노드 삭제 (Auto Mode가 새 노드 프로비저닝)
kubectl delete node <node-name>

방법 3: Rolling 교체

bash
# 모든 노드를 순차적으로 교체
kubectl delete nodes -l karpenter.sh/nodepool=general-purpose

8. expireAfter를 Never로 설정하면 어떤 동작이 되나요?

  • A) 노드가 즉시 만료됨
  • B) 시간 기반 자동 교체가 비활성화됨
  • C) 설정이 무효화되고 기본값 적용
  • D) 에러 발생
정답 보기

정답: B) 시간 기반 자동 교체가 비활성화됨

설명:expireAfter: Never를 설정하면 시간 기반 노드 만료가 비활성화됩니다.

yaml
spec:
  template:
    spec:
      expireAfter: Never  # 시간 기반 만료 비활성화

주의사항:

  • Drift와 Consolidation은 여전히 작동
  • 보안 패치 적용이 지연될 수 있음
  • 장기 실행 워크로드에만 권장

권장 사용 사례:

  • 상태 저장 워크로드 (데이터베이스)
  • 매우 긴 실행 작업
  • 수동 유지보수 일정이 있는 환경