DevOps/Kubernetes

[kubernetes] EKS 노드 트러블 슈팅

Jflip 2024. 11. 21. 23:48
728x90

클라우드 네이티브 환경에서 Amazon EKS는 가장 강력한 컨테이너 오케스트레이션 플랫폼 중 하나입니다. 하지만 복잡한 분산 시스템에서 노드 수준의 문제는 피할 수 없는 현실입니다. 이 가이드는 EKS 노드의 잠재적 문제를 진단하고 해결하는 체계적인 접근법을 제공합니다.

1. 노드 상태 진단

1.1 초기 상태 점검

# 노드 전체 상태 확인
kubectl get nodes -o wide

# 상세 노드 정보 추출
kubectl describe node <node-name>

노드 상태 유형

  • Ready: 정상 작동
  • NotReady: 문제 감지
  • SchedulingDisabled: 스케줄링 제한
  • Unknown: 통신 불가

2. 리소스 병목 현상 심층 분석

2.1 CPU 성능 모니터링

  • 평균 CPU 사용률 90% 초과 시 즉각 대응 필요
  • 주요 원인:
    • 비효율적 애플리케이션 알고리즘
    • 부적절한 리소스 제한
    • 비최적화 멀티스레딩

2.2 메모리 관리 전략

위험 신호

  • OOMKilled 파드 발생
  • 지속적인 메모리 스왑
  • 메모리 누수 패턴

3. 고급 로깅 및 진단

3.1 로그 수집 전략

# Kubelet 로그 심층 분석
journalctl -u kubelet.service

# 컨테이너 런타임 로그
crictl logs <container_id>

3.2 로그 분석 핵심 포인트

  • 인증/권한 에러
  • 리소스 할당 예외
  • 네트워크 연결 실패

4. 네트워크 문제 해결

4.1 진단 도구 및 접근법

# 네트워크 연결성 확인
kubectl get pods -o wide
traceroute <node-ip>

네트워크 장애 유형

  • CNI 플러그인 설정 오류
  • 보안 그룹 제한
  • 서브넷 구성 문제

5. 노드 복구 및 대체 전략

5.1 안전한 노드 드레이닝

# 우아한 노드 비우기
kubectl drain <node-name> --ignore-daemonsets --force

5.2 Auto Scaling 최적화

  • 동적 노드 크기 조정
  • 인스턴스 유형 세분화
  • 탄력적 스케일링 정책

6. 모니터링 및 예방

6.1 추천 모니터링 도구

  • Amazon CloudWatch
  • Prometheus
  • Grafana
  • ELK 스택

6.2 핵심 모니터링 메트릭

  • 노드 리소스 사용률
  • 네트워크 처리량
  • 파드 재시작 빈도
  • 컨테이너 상태
728x90
반응형