DevOps/Kubernetes

kubernetes - Health Check

beomzh 2023. 8. 24. 10:27
728x90
반응형

각 컨테이너의 상태를 주기적으로 체크해서, 문제가 있는 컨테이너를 자동으로 재시작하거나 또는 문제 있는 컨테이너를 서비스에서 제외시킬 수 있다. 이러한 기능을 헬스 체크라고 하며

컨테이너가 살아 있는지 아닌지를 체크하는 Liveness probe

컨테이너가 서비스가 가능한 상태인지를 체크하는 Readiness probe가 있다.

 

< Readiness >

Readniness probe Container 안의 어플리케이션이 서비스 할 준비가 되면 쿠버네티스에게 알리도록 설계 되어 있다. 서비스가 Pod로 트래픽을 보내기 전에 Readiness probe 검사 단계가 통과되어야만 해당 pod로 트래픽을 보내는 것을 의미한다.

 

< Liveness >

Liveness probe는 배포된 애플리케이션의 상태가 정상인지 비정상인지 여부를 판단하여 Kubernetes에 알리도록 설계되어 있다. 만약 어플리케이션에 문제가 발생하면 kubernetes는 문제가 발생한 Pod를 제거하고 새로운 Pod를 시작하게 된다.

 

Probe의 종류

Probe kubelet에 의해 주기적으로 수행되는데, 아래의 3가지 타입으로 Container에 구현된 Handle을 호출함으로써 Health Check를 수행한다.

 

HTTP

HTTP probe는 가장 일반적으로 사용되는 liveness probe 타입이다. 어플리케이션의 HTTP 서버로 probe에 설정한 트래픽을 보내 200~400 의 응답코드를 받으면 정상, 그 이외의 응답코드를 받으면 비정상으로 마킹한다.

 

Command

command probe Container안에서 해당 command를 수행한 결과가 정상인지 여부를 체크하는 probe타입으로 만약 command 수행결과 코드가 0이 리턴시 정상, 그렇지 않으면 비정상으로 마킹한다. 어플리케이션에 HTTP 서버를 실행할 수 없는 경우 유용하다.

 

TCP

TCP probe 타입은 Kubernetes가 지정된 포트로 TCP 연결을 시도해 연결에 성공하면 정상, 연결할 수 없다면 비정상으로 마킹하게 된다. TCP probe HTTP probe command probe를 사용할 수 없을 경우에 유용, 대표적인 유형으로 gRPC FTP service가 있다.

 

728x90
반응형