← Blog
트러블슈팅

CPU 부족으로 POD가 안 뜬다

목차

배경

분명 잘 뜨던 서비스에 새로운 기능을 추가하고 몇 가지 자원 설정을 변경하면서 부터 POD 생성이 안되는 현상이 발생하였다 :(

k9s로 확인해보면 상단의 전체 cpu 사용량은 10% 수준이지만 7개의 pod중 5개가 pending 상태인 것을 확인할 수 있다.

자세히 확인해보면 위와 같이 Insufficient cpu를 확인 할 수 있다.

원인 찾기

  • 각 노드에 항당된 자원 출력
  • 내 모든 노드에 할당된 CPU 상태

원인분석

쿠버네티스 스케줄러는 새로운 Pod를 배치할 때 Requests 값을 본다.

  1. 신규 배치 잡(Batch Job) 도입:
  2. Alloy DS(DaemonSet)의 자원 잠식 (기초 원인):
  3. Backend 서비스의 과도한 자원 예약 (결정적 원인):
  4. 자원 파편화(Fragmentation) 현상 발생:

반성/성찰

  1. 노드를 늘리면 그 만큼 ds가 불필요하게 차지하는 공간이 늘어나는 것을 간과하였음
  2. 서비스의 CPU가 계속 치고 올라가니까 노드 자원 고려없이 cpu request를 무지성 상향 조정

조치

  1. 노드를 줄이자!
  2. 자원을 제대로 분배하자!
  3. 추가 자원 구매
호스트CPURAMVM 구성 (Role)vCPUvRAM비고
N100 #14C/4T16GBMaster-0124GB제어부 분산 (HA)
N100 #24C/4T32GBMaster-0224GB제어부 분산 (HA)
Worker-02224GB일반 워크로드
N100 #34C/4T32GBMaster-0324GB제어부 분산 (HA)
Worker-03224GB일반 워크로드
5825U8C/16T64GBSuper-Worker-011460GB대장 노드
합계20C / 28T144GB총 VM 7개24 vCPU120GBIaC 관리 최적화
  • 위와 같은 구성으로 변경