본문 바로가기
Kubernetes(k8s)/따배쿠(따라하면서 배우는 쿠버네티스) 학습

[k8s]Kubernetes - Liveness Probe(Self-healing Pod)

by 열정주니어 2023. 2. 15.
반응형

Liveness Probe

  • Pod가 계속 실행할 수 있음을 보장
  • Pod의 Spec에 정의

  • 주기적으로 80포트에 접속
    • 응답이 나오면 건강한 컨테이너로 판단
    • 응답이 나오지 않으면 건강하지 않는 컨테이너로 판단

 

Liveness Probe 매커니즘

  • httpGet probe
    • 웹 서비스를 하는 컨테이너에 해당
    • 지정한 IP주소, port, path에 HTTP GET 요청을 주기적으로 보내 해당 컨테이너가 응답하는지 확인
    • 반환코드가 200이 아닌 값이 나오면 오류
    • 연속으로 세번 오류가 발생하면 컨테이너 죽임
    • 도커 hub에서 건강한 새 컨테이너를 받아 컨테이너 다시 시작

  • tcpSocket probe
    • sshd 서비스를 하는 컨테이너에 해당
    • 지정된 포트에 TCP연결을 시도
    • 연속으로 세번 연결되지 않으면 컨테이너 죽임
    • hub에서 새 컨테이너 받아 다시 시작

  • exec probe
    • 컨테이너에서 실행하고 싶은 명령어 (ex.컨테이너에 데이터가 있는지)
    • exec 명령을 전달하고 명령의 종료코드가 0이 아니면 컨테이너 다시 시작

 

Liveness Probe 매개변수

  • periodSeconds: health check 반복 실행 시간(초)
  • initialDelaySeconds: Pod 실행 후 delay할 시간(초)
    • pod 실행 후 처음 검사를 실행할때까지의 시간
  • timeoutSeconds: health check후 응답을 기다리는 시간(초)
    • 설정 초가 지나도 응답이 없으면 실패로 가정
  • successThreshold: health check의 결과를 성공으로 결정하는 기준
    • 2로 설정, 연속으로 2번 성공하면 건강한걸로 판단
  • failureThreshold: health check의 결과를 실패로 결정하는 기준
    • 3으로 설정, 연속으로 3번 오류가 나오면 실패로 판단
  • 매개변수 확인 & 수정
    • describe에서 Liveness Probe 매개변수 확인 가능
    • kubectl get pod nginx-pod-liveness -o yaml을 이용하여 매개변수 확인 & 복사하여 yaml 파일에서 매개변수 수정

 

Example

  • 문제: 아래의 liveness-exam.yaml 파일에 self-healing 기능을 추가
    • 동작되는 Pod내의 컨테이너에 /tmp/healthy 파일이 있는지 5초마다 확인
    • Pod 실행 후 10초 후부터 검사
    • 성공횟수는 1번, 실패횟수는 연속 2번으로 구성

  • 문제풀이

 

Reference

따배쿠11강

 

반응형