Kubernetes Node NotReady 완벽 가이드! Worker Node 장애 원인과 복구 방법 이해하기

Kubernetes Cluster 운영에서 가장 중요한 요소 중 하나는 Worker Node 상태 관리입니다.

Pod는 Node 위에서 실행되기 때문에 Worker Node에 문제가 발생하면 Application 서비스에도 영향을 줄 수 있습니다.

예:

Worker Node 장애 발생

Node 상태 변경

Pod 실행 불가

Application 영향

Production 환경에서는 Node 장애를 빠르게 발견하고 원인을 분석하는 능력이 필요합니다.

Kubernetes에서는 Node 상태를 지속적으로 확인하며 문제가 발생하면 NotReady 상태로 표시합니다.

Node 상태설명
Ready정상 운영 상태
NotReadyNode 장애 또는 통신 문제
Unknown상태 확인 불가
SchedulingDisabledPod 배치 제한

Node NotReady 문제를 이해하면 Kubernetes Cluster 장애 대응과 운영 안정성을 높일 수 있습니다.

Kubernetes Node 상태 확인 방법

가장 먼저 Node 상태를 확인합니다.

명령어:

kubectl get nodes

정상 상태:

NAME        STATUS
worker-1    Ready
worker-2    Ready

문제 발생:

NAME        STATUS
worker-1    NotReady

NotReady 상태라면 추가 분석이 필요합니다.

Kubernetes Node NotReady 발생 원인

Node NotReady는 하나의 원인으로 발생하지 않습니다.

대표 원인:

원인설명
kubelet 문제Node Agent 오류
Network 문제API Server 연결 실패
Resource 부족CPU·Memory 부족
Disk 문제Storage 부족
Container Runtime 문제Docker·containerd 오류

Node 내부 Component 상태를 확인해야 합니다.

Kubernetes kubelet 문제 분석

kubelet은 Worker Node에서 가장 중요한 Component입니다.

역할:

API Server

kubelet

Container 실행 관리

kubelet이 중지되면 Node 상태 확인이 불가능합니다.

확인:

systemctl status kubelet

재시작:

systemctl restart kubelet

kubelet Log 확인:

journalctl -u kubelet

Node 장애 분석에서 가장 먼저 확인하는 영역입니다.

Kubernetes API Server 연결 문제

Worker Node는 Kubernetes API Server와 지속적으로 통신합니다.

구조:

Worker Node

kubelet

API Server

통신 실패:

Node NotReady

확인 항목:

  • Network 연결
  • Firewall
  • Certificate
  • DNS

Cluster Network 상태 확인이 필요합니다.

Kubernetes Container Runtime 문제

Kubernetes는 Container Runtime을 통해 Container를 실행합니다.

대표 Runtime:

  • containerd
  • CRI-O

문제:

Runtime 중지

Container 실행 불가

Node 문제 발생

확인:

systemctl status containerd

Runtime 상태가 정상인지 확인해야 합니다.

Kubernetes Memory 부족 문제

Node Memory가 부족하면 문제가 발생할 수 있습니다.

상황:

Memory 부족

System 압박

Pod 종료

Node 불안정

확인:

free -h

또는:

kubectl describe node node-name

Resource 상태를 확인합니다.

Kubernetes Disk Pressure 문제

Disk 부족도 Node NotReady의 주요 원인입니다.

상황:

Log 증가

Disk Full

Container 실행 실패

확인:

df -h

Kubernetes는 Disk 상태를 감지하여 Node Condition을 변경합니다.

Kubernetes Node Condition 확인

Node 상세 정보를 확인합니다.

명령어:

kubectl describe node node-name

확인 항목:

  • Ready 상태
  • MemoryPressure
  • DiskPressure
  • PIDPressure

예:

Conditions:

Ready False

DiskPressure True

문제 영역을 확인할 수 있습니다.

Kubernetes Node Event 분석

Event는 장애 원인을 찾는 중요한 정보입니다.

확인:

kubectl get events

또는:

kubectl describe node node-name

확인 내용:

  • kubelet 오류
  • Resource 부족
  • Network 문제

Event 분석은 Troubleshooting의 핵심입니다.

Kubernetes Node Drain과 복구

Node 장애가 예상되는 경우 안전하게 Pod를 이동할 수 있습니다.

Drain:

kubectl drain node-name

Node 유지보수 후:

kubectl uncordon node-name

운영 환경에서 자주 사용하는 명령어입니다.

Kubernetes Node 재등록 과정

심각한 문제가 발생하면 Node 재등록이 필요할 수 있습니다.

과정:

kubelet 중지

Node 설정 확인

Certificate 확인

kubelet 재시작

Cluster 연결 확인

Ready 상태 확인

단계적인 복구가 필요합니다.

Kubernetes Node NotReady 장애 대응 순서

실제 운영 순서:

1단계

Node 상태 확인

kubectl get nodes

2단계

Node 상세 확인

kubectl describe node

3단계

kubelet 확인

systemctl status kubelet

4단계

Runtime 확인

systemctl status containerd

5단계

Resource 확인

복구 원인을 찾습니다.

Kubernetes Node 장애 예방 방법

운영 환경에서는 장애 발생 전에 관리해야 합니다.

권장 방법:

항목방법
MonitoringNode Metric 확인
Resource 관리Limit 설정
Log 관리Disk 증가 방지
Update 관리안정적인 Version 사용
Health Check상태 감시

사전 예방이 중요합니다.

Kubernetes Node NotReady와 High Availability

Production 환경에서는 하나의 Node 장애를 고려해야 합니다.

구조:

Worker Node 1

Worker Node 2

Worker Node 3

하나 장애 발생

나머지 Node 서비스 유지

Replica 구성과 Multi Node Architecture가 중요합니다.

Kubernetes Node NotReady 장점 있는 대응 구조

Node 장애 대응 구조:

Monitoring

Alert 발생

원인 분석

Node 복구

Service 정상화

자동화된 운영 환경을 구축할 수 있습니다.

자주 묻는 질문

Node NotReady가 발생하면 모든 Pod가 종료되나요?

아닙니다.

상황에 따라 다른 Node로 이동하거나 기존 Pod가 유지될 수 있습니다.

kubelet이 왜 중요한가요?

kubelet은 Worker Node에서 Pod 실행과 상태 보고를 담당하는 핵심 Component입니다.

Node 장애를 완전히 방지할 수 있나요?

완전한 방지는 어렵지만 Monitoring, Replica, High Availability 구성으로 영향을 최소화할 수 있습니다.

마무리

Kubernetes Node NotReady는 Worker Node의 상태 이상을 나타내는 대표적인 장애 상황입니다.

확인 대상역할
kubeletNode Agent
Container RuntimeContainer 실행
NetworkAPI 통신
ResourceCPU·Memory·Disk

Node 장애 분석 방법을 이해하면 Kubernetes Production 환경에서 빠르게 문제를 해결하고 안정적인 서비스를 운영할 수 있습니다.

다음 글에서는 Kubernetes Container 장애 분석을 위한 Kubernetes OOMKilled 완벽 가이드! Memory 부족과 Container 종료 원인 분석하기를 진행하겠습니다.

댓글 남기기