본문 바로가기
카테고리 없음

4. 쿠버네티스의 셀프 힐링기능 (kubernetes - Self-healing)

by 종안이 2022. 7. 15.

1. LivenessProbe - 파드가 계속 실행될 수 있음을 보장하는 쿠버네티스의 기능이다.

 

  - httpGet Probe : 지정한 IP 주소에 GET요청을 날렸을때 정상응답(200)이 오는지 안오는지 확인하고 오류가 나온다면 컨테이너를 다시 띄운다. ( Restart ) 

 

  - tcpSocket Probe : 특정 포트로 TCP연결을 시도했을때 작동하지 않으면 컨테이너를 다시 시작한다.

 

  - exec : exec 명령을 전달하고 명령의 종료 코드가 0이 아닐 경우 컨테이너를 다시 시작한다.

 

apiVersion: v1
kind: Pod
metadata:
  name: liveness-pod
spec:
  containers:
  - image: smlinux/unhealthy
    name: unhealthy-container
    ports:
    - containerPort: 8080
      protocol: TCP
    livenessProbe:
      httpGet:
        path: /
        port: 8080

헬스체크 하는 부분 들어감

livenessProbe를 통해서 헬스체크 하는 부분이 들어갔다.

 

가동했을때 describe로 파드의 상태를 확인해보면 위와 같이 나온다.

 

- delay : 응답을 기다리는 시간이 0초이다.

- timeout =  1s 이라고 되어있는데 GET요청을 날렸는데 1초 이상 응답이 오지 않으면 헬스체크를 해준다.

- period = 10s 10초마다 검사를 하겠다는 뜻이다.

   

검사했는데 응답이 없으면 죽이고 다시 컨테이너를 재시작한다.

10초 간격으로 검사하며 , 3번 검사했는데 응답이 제대로 안오면 unhealthy와 킬링 메시지가 등장한다는 것을 

알 수 있다.

 

 

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness-exec
spec:
  containers:
  - name: liveness
    image: k8s.gcr.io/busybox
    args:
    - /bin/sh
    - -c
    - touch /tmp/healthy; sleep 30; rm -f /tmp/healthy; sleep 600
    livenessProbe:
      exec:
        command:
        - cat
        - /tmp/healthy
      initialDelaySeconds: 5
      periodSeconds: 5

https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/

 

Configure Liveness, Readiness and Startup Probes

This page shows how to configure liveness, readiness and startup probes for containers. The kubelet uses liveness probes to know when to restart a container. For example, liveness probes could catch a deadlock, where an application is running, but unable t

kubernetes.io

 

위 내용은 쿠버네티스 공식 문서에 나와있는 liveness-Probe에 관한 내용이다. 

 

파일을 하나 만들고 삭제하며 livenessProbe exec를 통해서 검사한다. (즉 응답이 1이 아닌 경우는 비정상으로 간주)

 

cat /tmp/healthy 했을때 응답이 정상적이지 않으면 실패로 간주하고 컨테이너를 다시 재시작한다.

댓글