Ops/Kubernetes

[이슈] 파드가 반복해서 Evicted되는 현상

록흐 2025. 9. 16. 17:32
반응형

 

 

이슈사항 

 

tigera-operator    tigera-operator-8bb6c747f-xf6m7                                   0/1     Evicted     0                3m52s
tigera-operator    tigera-operator-8bb6c747f-xfm2b                                   0/1     Evicted     0                2m38s
tigera-operator    tigera-operator-8bb6c747f-xfpwm                                   0/1     Evicted     0                2m7s
tigera-operator    tigera-operator-8bb6c747f-xgch9                                   0/1     Evicted     0                3m47s
tigera-operator    tigera-operator-8bb6c747f-xgdlm                                   0/1     Evicted     0                16s

 

 

갑자기 특정 파드가 Evicted 상태로 방출되는 현상이 발생하였다.

 

보통 이런 경우, K8s 노드의 루트파일시스템이 80%를 넘어. kubelet이 사용하지 않은 데이터를 정리해서 용량을 확보하려다가 실패하여 노드에서 동작하는 파드들을 강제로 방출시켜발생한다. 노드가 방출되면 다른쪽 노드에 생성되어야 하는데, 다른 실행될 노드가 없다면 다시 해당 노드에 생성되고 방출되기를 반복하는 것이다. 

 

# kubectl describe nodes [ 노드명 ]
Warning FreeDiskSpaceFailed 47m (x9 over 87m) kubelet (combined from similar events): Failed to garbage collect required amount of images. Attempted to free 5927389593 bytes, but only found 0 bytes eligible to free.

 

노드의 로그를 보니, kubelet의 가비지 컬렉터가 동작하여 공간을 확보하려다가 실패했다고 나와 있었다. 그래서 실제로 방출이 일어난 노드의 루트 파일시스템을 확인하니, 80% 사용중은 아니었지만 100G가 밖에 용량이 할당되어 있지 않아, 용량이 큰 이미지를 가져오거나 파드가 뜨기에는 부족하여 작업중 디스크 압박을 받기에 충분한 상황이었다. 

 

 

해결내용

 

 

lsblk 명령으로 확인하니 루트파일시스템에 볼륨을 할당한 파티션에 360GB 정도가 더 남아있어서, 루트 파일시스템의 볼륨을 확장해주었고 디스크 압박은 사라졌다. 

 

# 논리볼륨이 포함된 볼륨그룹의 용량 확인
sudo vgdisplay ubuntu-vg

# 논리볼륨 확장하기 
sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv

# 파일시스템 확장하기 
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv

# 조회하기
df -h
lsblk

 

 

 

그리고 아래 명령어로 Evicted 상태로 남아 있는 파드들을 모두 정리해주었다. 

 

kubectl delete pod \
  -n tigera-operator \
  --field-selector status.phase=Failed
반응형