쿠버네티스 liveness

greenTea·2023년 8월 17일
0

쿠버네티스 liveness

🥳쿠버네티스의 핵심 기능중 하나는 자가복구입니다.

컨테이너가 문제가 생긴 경우 쿠버네티스가 이를 파악하고 컨테이너를 다시 새로 시작하는데 이를 설정하는 방법을 알아보겠습니다.

1. LivenessProbe란?

livenessProbe는 컨테이너가 제대로 동작하고 있는지 확인하는 메커니즘입니다. 만약 컨테이너가 살아있지 않은 것으로 판단되면, 쿠버네티스는 해당 컨테이너를 자동으로 재시작합니다.

2. 왜 LivenessProbe가 필요한가?

🤔애플리케이션에는 다양한 이유로 응답하지 않게 되는 경우가 있습니다. 예를 들면, 데드락, 리소스 부족, 내부 버그 등 다양한 상황이 발생할 수 있습니다. 이러한 상황에서 livenessProbe를 통해 문제가 발생한 컨테이너를 자동으로 재시작하여 서비스의 중단 시간을 최소화할 수 있습니다.

3. LivenessProbe 설정 방법

😁livenessProbe는 주로 세 가지 방식으로 설정됩니다

기본 yaml 작성

apiVersion: v1
kind: Pod
metadata:
  name: test-liveness
spec:
  containers:
  - name: test
    image: nginx
    livenessProbe: <-liveness
     httpGet:
       path: /
       port: 80
     initialDelaySeconds: 3
     periodSeconds: 3

HTTP GET Probe

  httpGet:
    path: /
    port: 80

http 요청을 path,port로 보낸 후 응답값이 200이 아니라면 실패로 간주합니다.

TCP Socket Probe

tcpSocket:
    port: 22

ssh연결을 위 포트로 시도하고 실패시 liveness가 작동합니다.

Exec Probe

exec:
  command:
    - ls
    - /hello

명령어를 직접 입력해서 동작하게 할 수 있습니다.
종료코드가 0이 아니라면 실패로 간주합니다.

추가 설정

livenessProbe:
	initialDelaySeconds: 10
    failureThreshold: 3
    periodSeconds: 5
    successThreshold: 1
  • initialDelaySeconds: 10:
    컨테이너가 시작된 후 처음으로 livenessProbe 검사를 시작하기까지의 시간을 나타냅니다.
    이 예에서는 컨테이너 시작 후 10초가 지나면 liveness 검사를 시작합니다.
  • failureThreshold: 3:
    livenessProbe가 연속적으로 실패해야하는 횟수를 나타냅니다. 이 횟수를 넘어서면, 컨테이너는 재시작됩니다.
    이 설정에서는 liveness 검사가 연속적으로 3번 실패하면 컨테이너가 재시작됩니다.
  • periodSeconds: 5:
    livenessProbe 검사의 주기를 나타냅니다.
    여기에서는 5초마다 한 번씩 liveness 검사를 실행합니다.
  • successThreshold: 1:
    livenessProbe가 성공해야하는 최소 연속 횟수를 나타냅니다. 이 횟수를 넘기면, 이전에 실패했던 Probe가 성공한 것으로 간주됩니다.
    livenessProbe에서는 이 값이 기본적으로 1이어야 합니다. 즉, 한 번의 성공적인 검사만으로 컨테이너가 살아있는 것으로 판단됩니다.

추가

🤗위 liveness는 컨테이너를 재시작하는 것이지 pod를 재시작하지 않습니다. pod를 재시작하지 않기에 ip가 그대로 고정되어 있는 것을 확인 할 수 있습니다.

profile
greenTea입니다.

0개의 댓글