클러스터의 모든 파드가 Evicted 및 Pending 상태 일 때

작성자 김효상 수정일 2022-11-25 16:23

#스파클링소다, #SparklingSoDA, #evicted

아티클 관련 제품: SparklingSoDA

현상
  • 포털 접속이 되지 않는 현상 발생
  • 파드의 상태를 확인 시 Evicted 및 Pending

원인
  • 노드의 디스크 용량 부족으로 인해 파드 스케줄링이 되지 않아 발생한 현상


문제 해결
  • 스파클링소다 제품 설치 시 일반적으로 Kubelet의 root directory(폴더)는 /k8s_images/k8s 지정합니다.
    DiskPressure 항목의 경우 kubelet의 root 폴더 및 /var/lib/kubelet 폴더의 마운트 된 디스크의 용량을 체크하여 DiskPressure 유무를 체크 합니다.
df -h /k8s_images/k8s
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   68G   49G   19G  73% /

df -h /var/lib/kubelet
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   68G   49G   19G  73% /

터미널에서 명령어 입력 시 명령어 실행이 정상적이지 않고 느려지는 현상이 있어 디스크 공간을 확보 하지 못 할 경우 자동으로 정상 복구가 되지 않을 경우
  • tail 명령어로 로그를 확인 합니다.
tail /var/log/messages
XFS: possible memory allocation deadlock in kmem_alloc (mode:0x250)

XFS: possible memory allocation deadlock in kmem_alloc (mode:0x250) 오류 메세지가 있을 경우 부득이하게 서버 재부팅이 필요합니다.

서버 재부팅 전 Container Runtime 및 kubelet 서비스 disable

예:

# 디스크 용량 부족 현상 후 
# XFS: possible memory allocation deadlock in kmem_alloc (mode:0x250) 오류 시
# 노드(서버) 재부팅 방법

# Container Runtime(Docker) 및 Kubelet 서비스 disable
# 서버가 재부팅 될 때  Container runtime, Kubelet 서비스가 바로 시작 되지 않게 하기 위해 설정
systemctl disable docker.service 
systemctl disable kubelet.service

# 서버 재부팅
shutdown -r now

# 서버 재시작 후 디스트 용량 확보 작업 진행

# docker 구동
systemctl start docker

# docker status running 상태 확인
systemctl status docker

# kubelet 구동
systemctl start kubelet

# kubelet status running 상태 확인
systemctl status kubelet

# 노드(서버) 상태 및 파드 결과 확인
kubectl get nodes
kubectl get pods --all-namespaces

# Container Runtime(Docker) 및 Kubelet 서비스 enable
systemctl enable docker.service 
systemctl enable kubelet.service






아티클이 유용했나요?

훌륭합니다!

피드백을 제공해 주셔서 감사합니다.

도움이 되지 못해 죄송합니다!

피드백을 제공해 주셔서 감사합니다.

아티클을 개선할 수 있는 방법을 알려주세요!

최소 하나의 이유를 선택하세요
CAPTCHA 확인이 필요합니다.

피드백 전송

소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.

02-558-8300