Back to blog
Kubernetes1 min read2024년 12월 16일

Kubernetes 프로브 실전 정리

liveness, readiness, startup 프로브가 각각 무엇을 통제하는지, 그리고 잘못 쓰면 어떤 식으로 무너지는지 정리했습니다.

세 가지 프로브는 서로 다른 질문에 답합니다. 하나로 다른 질문에 답하려는 순간, 정상적으로 돌던 배포가 재시작 루프에 빠집니다.

각 프로브가 통제하는 것

  • startup: 프로세스가 부팅을 마쳤는가? 실행되는 동안 나머지 두 프로브를 멈춰 둡니다.
  • readiness: 지금 이 파드가 트래픽을 받아도 되는가?
  • liveness: 이 프로세스는 회복 불가능해서 재시작할 가치가 있는가?

가장 흔한 실패

liveness를 의존성까지 확인하는 핸들러에 연결하는 경우입니다. 데이터베이스가 느려지면 모든 파드가 동시에 liveness에 실패하고 한꺼번에 재시작하면서, 성능이 떨어진 의존성 하나가 전면 장애로 번집니다.

무난한 기본값

startupProbe:
  httpGet: { path: /healthz, port: 8080 }
  failureThreshold: 30
  periodSeconds: 2
readinessProbe:
  httpGet: { path: /readyz, port: 8080 }
  periodSeconds: 5
livenessProbe:
  httpGet: { path: /healthz, port: 8080 }
  periodSeconds: 10
  failureThreshold: 3

startup의 임계값은 가장 느린 콜드 스타트에 맞추고, liveness는 넉넉하게 두세요. 재시작은 플랫폼이 사용자를 대신해 취할 수 있는 가장 파괴적인 조치입니다.

Topics

kubernetesreliability

Related work

See the correlation view