노드 라이프사이클 관리

< 이전: 워크로드 배치 전략 | 목차 | 다음: 운영 및 유지보수 >

지원 버전: EKS 1.31+, nodeadm 0.1+ 마지막 업데이트: 2026년 2월 22일

이 문서에서는 EKS Hybrid Nodes의 nodeadm 고급 설정, 대규모 노드 설치 자동화, 업그레이드 전략, 자격 증명 관리 및 헬스체크 자동화를 다룹니다.

1. nodeadm 고급 설정 (Advanced NodeConfig)

kubelet 튜닝

프로덕션 환경에서는 kubelet의 리소스 예약, 축출 임계값, 이미지 가비지 컬렉션 등을 세밀하게 조정해야 합니다.

리소스 예약 (system-reserved / kube-reserved)

시스템 프로세스와 Kubernetes 컴포넌트를 위한 리소스를 예약하여 파드가 노드 전체 리소스를 소모하지 않도록 합니다.

kubelet:
  config:
    systemReserved:
      cpu: "500m"
      memory: "1Gi"
      ephemeral-storage: "10Gi"
    kubeReserved:
      cpu: "500m"
      memory: "1Gi"
      ephemeral-storage: "5Gi"
파라미터
설명
권장값

systemReserved.cpu

OS 및 시스템 데몬용 CPU

500m ~ 1000m

systemReserved.memory

OS 및 시스템 데몬용 메모리

1Gi ~ 2Gi

kubeReserved.cpu

kubelet, containerd용 CPU

500m ~ 1000m

kubeReserved.memory

kubelet, containerd용 메모리

1Gi ~ 2Gi

축출 임계값 (Eviction Thresholds)

노드 리소스가 부족할 때 파드를 자동으로 축출하여 노드 안정성을 유지합니다.

참고: evictionHard는 즉시 축출, evictionSoft는 유예 기간 후 축출됩니다. Soft 임계값을 먼저 설정하면 갑작스러운 파드 종료를 방지할 수 있습니다.

maxPods 계산

노드 리소스 기반으로 적절한 maxPods 값을 설정합니다. Cilium IPAM을 사용하는 하이브리드 노드에서는 clusterPoolIPv4MaskSize로 할당되는 IP 수를 고려해야 합니다.

마스크 크기
IP 수
권장 maxPods

/25

128

110

/24

256

240

/26

64

50

이미지 가비지 컬렉션

디스크 공간 관리를 위해 미사용 이미지를 자동으로 정리합니다.

셧다운 그레이스 기간

노드 셧다운 시 파드를 정상적으로 종료하기 위한 유예 기간을 설정합니다.

참고: shutdownGracePeriodCriticalPodsshutdownGracePeriod 내에 포함되어야 합니다. 일반 파드는 60s - 20s = 40s 동안 종료 유예를 받습니다.

containerd 고급 설정

프라이빗 레지스트리 미러 설정

프라이빗 레지스트리를 미러로 사용하여 이미지 풀 속도를 개선하고 외부 네트워크 의존성을 줄입니다.

hosts.toml 파일을 통해 레지스트리별 미러를 구성합니다:

GPU 노드용 NVIDIA 런타임 클래스

GPU 워크로드를 위해 NVIDIA Container Runtime을 기본 런타임으로 설정합니다.

레이블 및 테인트 전략

nodeadm 자동 레이블

nodeadm은 하이브리드 노드를 초기화할 때 다음 레이블을 자동으로 부여합니다:

이 레이블은 --node-labels 플래그에 수동으로 추가할 필요가 없습니다.

추가 커스텀 레이블 전략

용도별, 환경별로 추가 레이블을 부여하여 워크로드 배치를 세밀하게 제어합니다.

테인트 전략

전략
설명
사용 사례

자동 테인트 (NodeConfig)

nodeadm 초기화 시 적용

모든 하이브리드 노드에 공통 적용

수동 테인트 (kubectl)

운영 중 동적으로 적용

GPU 노드 격리, 유지보수 모드

전체 NodeConfig 예시 (프로덕션급)

kubelet, containerd, 레이블, 테인트를 모두 포함하는 프로덕션 환경용 설정입니다.


2. 대규모 노드 설치 자동화 (Fleet Installation)

Ansible Playbook

대규모 환경에서는 Ansible을 사용하여 다수의 노드를 일괄 설치합니다.

인벤토리 구성

자동화 플레이북

롤별 변수 (GPU 노드 vs 일반 노드)

설치 검증 스크립트


3. 노드 업그레이드 전략 (Upgrade Strategies)

버전 스큐 정책

Kubernetes는 kubelet과 API 서버 간 엄격한 버전 호환성 정책을 유지합니다.

kubelet 버전
API 서버 버전
호환 여부

1.31

1.31

✅ 동일 버전

1.30

1.31

✅ n-1

1.29

1.31

✅ n-2

1.28

1.31

✅ n-3

1.27

1.31

❌ n-4 (미지원)

1.32

1.31

❌ kubelet > API 서버 (미지원)

중요: 업그레이드 순서는 반드시 컨트롤 플레인(EKS) → 노드 순입니다. 노드를 컨트롤 플레인보다 먼저 업그레이드하면 호환성 문제가 발생합니다.

업그레이드 사전 체크리스트

업그레이드 전 다음 항목을 확인하세요:

롤링 업그레이드

N개 노드를 순차적으로 업그레이드하여 서비스 중단을 최소화합니다.

카나리 업그레이드

안전을 위해 1개 노드를 먼저 업그레이드하고 검증한 후 나머지를 진행합니다.

롤백 절차

업그레이드 실패 시 이전 버전으로 복원하는 절차입니다.


4. 자격 증명 라이프사이클 (Credential Lifecycle)

SSM Hybrid Activation 갱신

SSM Hybrid Activation은 생성 시 설정한 만료일이 있으며, 만료 전에 새로운 활성화를 생성해야 합니다.

노드 재등록이 필요한 경우:

IAM Roles Anywhere 인증서 갱신

IAM Roles Anywhere를 사용하는 경우, 노드 인증서 만료 전에 갱신해야 합니다.

인증서 만료 모니터링

자동 갱신 스크립트

Trust Anchor 업데이트

CA 인증서가 변경된 경우 Trust Anchor를 업데이트합니다:


5. 노드 헬스체크 자동화 (Health Monitoring)

자동화된 헬스체크 CronJob

nodeadm debug를 기반으로 주기적으로 노드 상태를 검증하고 이상 시 알림을 보냅니다.

kubelet/containerd 상태 모니터링 (노드 레벨)

각 노드에서 systemd 타이머로 로컬 헬스체크를 실행합니다.


< 이전: 워크로드 배치 전략 | 목차 | 다음: 운영 및 유지보수 >

마지막 업데이트