더북(TheBook)

궁금하면

readinessProbe랑 HealthCheckPolicy가 둘 다 /health를 체크하는 거야? 중복 아닌가?

응답

레이어가 다릅니다. readinessProbe는 kubelet이 Pod 수준에서 확인하는 것이고, HealthCheckPolicy는 로드밸런서가 백엔드 수준에서 확인하는 것입니다.

 

• readinessProbe: '이 Pod를 Service 엔드포인트에 포함할지'는 kubelet이 결정합니다.
• HealthCheckPolicy: '이 백엔드에 트래픽을 보낼지'는 GKE 로드밸런서가 결정합니다.

 

둘 중 하나만 있어도 내부 클러스터에서는 동작하지만, 외부 로드밸런서는 kubelet의 판단을 신뢰하지 않고 자기가 직접 한 번 더 확인합니다. 로드밸런서와 Pod 사이에 네트워크 구간이 있기 때문에 그 구간까지 포함해서 '진짜 요청을 받을 수 있는가'를 봐야 합니다.
그래서 둘 다 필요합니다. 번거롭게 보일 수 있지만, 덕분에 외부에서 오는 요청은 두 단계의 헬스체크를 통과한 Pod에만 도달합니다.