livenessProbe

  • 컨테이너의 실행 여부를 진단하여 실패시 컨테이너를 종료시키고 재시작 정책에 따라 컨테이너 재시작
    • (Pod을 재시작하는 것이 아니라 Container을 재시작하는 한다.)
  • 컨테이너가 재시작되더라도 Pod의 IP address는 바뀌지 않는다.

 

 

 

livenessProbe 매커니즘

  • httpGet
    • 지정한 IP주소, port, path에 HTTP GET 요청을 보내, 해당 컨테이너의 응답을 확인
    • 반환코드가 200이 아닌 값이 나오면 컨테이너 재시작
  • tcpSocket
    • 지정된 포트에 TCP연결을 시도하여 연결되지 않으면 컨테이너 재시작
  • exec
    • exec 명령을 전달하고 명령 종료코드가 0이 아닌값이면 컨테이너 재시작
livenessProbe 필드 설명
initialDelaySeconds ( default: 0초 ) pod 실행 후 delay할 시간
periodSeconds (default: 10초) health check 검사 주기
timeoutSeconds (default: 1초)  health check 요청에 대한 응답대기시간
successThreshold (default: 1번) 성공 횟수
failureThreshold (default: 3번) 연속 실패횟수

 

 

 

livenessProbe 테스트

  • redis pod의 livenessProbe를 설정하여 container 정상성 확인

 

 

redis liveness probe 실패

  • liveness probe가 연속 3회(default) 실패하면 컨테이너 재시작
    • 컨테이너의 httpGet 요청이 실패

 

 

 

livenessProbe 멀티컨테이너 테스트

livenessProbe 멀티컨테이너

  • redis와 nginx 멀티컨테이너 생성(성공)

 

 

멀티 컨테이너 생성실패

  • 단일 pod 멀티컨테이너는 서로 리소스를 공유하므로 redis가 사용하는 6379 port를 각각 binding 할 수 없다.

 

 

 

readinessProbe

  • 컨테이너 실행된 후 실제로 서비스에 대한 응답을 할 수 있는지 진단
  • 해당 진단이 실패하는 경우 엔드포인트 컨트롤러는 해당 파드에 연결된 모든 서비스를 대상으로 엔드포인트 정보를 제거 
  • 해당 pod가 readinessProbe를 지원하지 않는 경우 기본 상태값은 succeed

'클라우드 > K8s' 카테고리의 다른 글

K8s 버전 업그레이드  (0) 2022.03.18
K8s 애플리케이션 변수관리  (0) 2022.03.17
K8s label  (0) 2022.03.17
K8s Network  (0) 2022.03.17
K8s Controller  (0) 2022.03.17

+ Recent posts