본문 바로가기
INFRA/DevOps

[k8s] LivenessProbe를 이용해서 Self-healing Pod 생성

by BTC_비웃는사나이 2022. 9. 13.

Liveness Probe란?

  • pod가 계속 실행할 수 있음을 보장
  • pod의 spec에 정의
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: nginx
  name: nginx
spec:
  containers:
  - image: nginx:1.14
    name: nginx
    livenessProbe:        //추가
      httpGet:
        path: /
        port: 80
    ports:
    - containerPort: 80
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

 

LivenessProbe 매커니즘

  • httpGet probe : 지정한 IP주소, port, path에 HTTP GET 요청을 보내 해당 container가 응답하는지를 확인
    반환코드가 200이 아닌 값이 나오면 오류로 인식하고 container를 다시 시작
livenessProbe:
  httpGet:
    path: /
    port: 80
  • tcpSocket probe : 지정된 포트에 TCP 연결을 시도
    연결되지 않으면 container를 다시 시작
livenessProbe:
  tcpSocket:
    port: 22
  • exec probe : exec 명령을 전달하고 명령의 종료코드가 0이 아니면 container를 다시 시작
livenessProbe:
  exec:
    command:
    - ls
    - /data/file

 

LivenessProbe 매개 변수

  • periodSeconds : health check 반복 실행 시간(초)
  • initialDelaySeconds : pod 실행 후 delay할 시간(초)
  • timeoutSeconds : health check후 응답을 기다리는 시간(초)
  • sucessThreshold : 응답 성공 기준 연속횟수
  • failureThreshold : 응답 실패 기준 연속횟수

 

[ Hands-on ]

  • 동작되는 pod내의 container에 /tmp/healthy 파일이 있는지 5초마다 확인
  • pod 실행 후 10초 후부터 검사
  • 성공횟수는 1회, 실패횟수는 연속 2회로 구성
apiVersion: v1
kind: Pod
metadata:
  name: liveness-exam
spec:
  containers:
  - image: busybox
    name: busybox-container
    args:
    - /bin/bash
    - -c
    - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600
    livenessProbe:      
      exec:
        command:
        - ls
        - /tmp/healthy
      successThreshold: 1
      failureThreshold: 2
      initialDelaySeconds: 10
      periodSeconds: 5

 

참고 :

[따배쿠] 5-2. 쿠버네티스 Pod - livenessProbe를 이용해서 Self-healing Pod 만들기

댓글