2026. 4. 25. 10:55ㆍk8s
Kubernetes 노드에서 root filesystem 사용량이 높아지면 아직 DiskPressure=False 상태라도 이미지 pull 실패, pod eviction, kubelet 이상 동작으로 이어질 수 있다. 이럴 때는 무작정 파일을 지우기보다 containerd 이미지, journald 로그, 실제 사용량을 순서대로 확인하는 것이 안전하다.
이 글에서는 Kubernetes 노드 디스크 사용량이 높을 때 확인한 순서와 정리 방법을 정리한다.
1. 노드 상태 확인
먼저 노드가 실제로 압박 상태인지 확인한다.
kubectl describe node <node-name>
확인할 항목은 아래와 같다.
DiskPressureMemoryPressurePIDPressureReady- event에 eviction 관련 메시지가 있는지
DiskPressure=False라도 root filesystem 사용률이 계속 올라가고 있다면 미리 정리하는 편이 낫다.
2. 디스크 사용량 확인
노드에 직접 접속할 수 있다면 df와 du로 확인한다.
df -h
du -xh /var/lib/containerd 2>/dev/null | sort -h | tail
du -xh /var/log 2>/dev/null | sort -h | tail
직접 SSH가 어렵다면 kubectl debug node로 확인할 수 있다.
kubectl debug node/<node-name> -q --image=busybox:1.36 -- sleep 600
3. 자주 커지는 위치
Kubernetes 노드에서 자주 커지는 위치는 보통 아래다.
/var/lib/containerd/var/log/var/log/journal- pod 로그 경로
- 오래된 이미지와 사용하지 않는 snapshot
containerd를 쓰는 환경에서는 Docker 명령이 아니라 crictl 또는 nerdctl 기준으로 확인해야 한다.
4. journald 로그 정리
journald 로그가 크면 보관 크기를 제한해 정리할 수 있다.
journalctl --disk-usage
journalctl --vacuum-size=1G
운영 환경에서는 일회성 정리만 하지 말고 /etc/systemd/journald.conf에 보관 제한을 두는 것이 좋다.
예시는 아래와 같다.
SystemMaxUse=1G
SystemKeepFree=2G
설정 변경 후에는 journald를 재시작한다.
systemctl restart systemd-journald
5. containerd 이미지 정리
사용하지 않는 이미지는 crictl로 정리할 수 있다.
crictl images
crictl rmi --prune
정리 전에는 현재 실행 중인 pod가 사용하는 이미지를 지우지 않는지 확인해야 한다. --prune은 사용하지 않는 이미지를 대상으로 하지만, 운영 중에는 작업 전후 상태를 반드시 확인하는 것이 좋다.
6. 정리 후 확인
정리 후에는 다시 사용량과 노드 상태를 확인한다.
df -h
kubectl describe node <node-name>
확인할 것은 아래다.
- root filesystem 사용률이 내려갔는지
DiskPressure가False인지- pod 재시작이나 eviction이 새로 발생하지 않았는지
- kubelet/containerd 로그에 오류가 없는지
7. 재발 방지
반복되는 문제라면 아래 설정을 같이 봐야 한다.
- journald 보관 크기 제한
- logrotate 설정
- kubelet image GC 설정
- containerd snapshot 정리 정책
- 모니터링에서 root filesystem 사용률 알림
이미 한 번 찬 노드는 시간이 지나면 다시 찰 가능성이 높다. 임계치 알림을 걸고, 어떤 디렉터리가 커지는지 주기적으로 보는 편이 안전하다.
같이 보면 좋은 글
- Kubernetes 노드 CPU 높아 보일 때 점검 순서
- rootful containerd에서 sudo 없이 nerdctl 쓰려다 실패한 기록
- Elasticsearch Pod Pending 원인: local PV와 taint 충돌 해결
정리
Kubernetes 노드 디스크가 부족할 때는 /var/lib/containerd와 /var/log를 먼저 확인한다. journalctl --vacuum-size, crictl rmi --prune으로 급한 사용량을 줄일 수 있지만, 재발 방지를 위해 journald 제한, logrotate, image GC 설정까지 같이 봐야 한다.
'k8s' 카테고리의 다른 글
| authentik OIDC를 Kubernetes에 붙일 때 반드시 알아야 할 핵심 (0) | 2026.04.26 |
|---|---|
| Kubernetes 노드 점검 직후 재부팅: busybox exec format error와 원인 분리 (0) | 2026.04.25 |
| Kubernetes 노드 CPU 높아 보일 때 점검 순서 (실전 트러블슈팅) (0) | 2026.04.25 |
| rootful containerd에서 sudo 없이 nerdctl 쓰려다 실패한 기록 (0) | 2026.03.29 |
| CKAD 실전 유형 정리(추가) — SA 연결, Docker Build, Docker Tar (0) | 2026.02.23 |