Kubernetes Cluster 운영에서 가장 중요한 요소 중 하나는 Worker Node 상태 관리입니다.
Pod는 Node 위에서 실행되기 때문에 Worker Node에 문제가 발생하면 Application 서비스에도 영향을 줄 수 있습니다.
예:
Worker Node 장애 발생
↓
Node 상태 변경
↓
Pod 실행 불가
↓
Application 영향
Production 환경에서는 Node 장애를 빠르게 발견하고 원인을 분석하는 능력이 필요합니다.
Kubernetes에서는 Node 상태를 지속적으로 확인하며 문제가 발생하면 NotReady 상태로 표시합니다.
| Node 상태 | 설명 |
|---|---|
| Ready | 정상 운영 상태 |
| NotReady | Node 장애 또는 통신 문제 |
| Unknown | 상태 확인 불가 |
| SchedulingDisabled | Pod 배치 제한 |
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 장애 예방 방법
운영 환경에서는 장애 발생 전에 관리해야 합니다.
권장 방법:
| 항목 | 방법 |
|---|---|
| Monitoring | Node 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의 상태 이상을 나타내는 대표적인 장애 상황입니다.
| 확인 대상 | 역할 |
|---|---|
| kubelet | Node Agent |
| Container Runtime | Container 실행 |
| Network | API 통신 |
| Resource | CPU·Memory·Disk |
Node 장애 분석 방법을 이해하면 Kubernetes Production 환경에서 빠르게 문제를 해결하고 안정적인 서비스를 운영할 수 있습니다.
다음 글에서는 Kubernetes Container 장애 분석을 위한 Kubernetes OOMKilled 완벽 가이드! Memory 부족과 Container 종료 원인 분석하기를 진행하겠습니다.