아티클 관련 제품: 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% /
- 마운트 된 디스크의 용량이 전체 용량의 85% 이하가 되도록 정리 합니다.
- Disk 공간 확보가 충분이 이루어졌다면, kubelet은 다시 정상적으로 컨테이너를 구동시키기 위해 pod를 재시작 합니다.
참고 아티클: 메모리, 디스크 사용량 관련 모니터링에 대해 알아보기
터미널에서 명령어 입력 시 명령어 실행이 정상적이지 않고 느려지는 현상이 있어 디스크 공간을 확보 하지 못 할 경우 자동으로 정상 복구가 되지 않을 경우
- 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
아티클이 유용했나요?
훌륭합니다!
피드백을 제공해 주셔서 감사합니다.
도움이 되지 못해 죄송합니다!
피드백을 제공해 주셔서 감사합니다.
피드백 전송
소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.