🥳쿠버네티스의 핵심 기능중 하나는 자가복구입니다.
컨테이너가 문제가 생긴 경우 쿠버네티스가 이를 파악하고 컨테이너를 다시 새로 시작하는데 이를 설정하는 방법을 알아보겠습니다.
livenessProbe
는 컨테이너가 제대로 동작하고 있는지 확인하는 메커니즘입니다. 만약 컨테이너가 살아있지 않은 것으로 판단되면, 쿠버네티스는 해당 컨테이너를 자동으로 재시작합니다.
🤔애플리케이션에는 다양한 이유로 응답하지 않게 되는 경우가 있습니다. 예를 들면, 데드락, 리소스 부족, 내부 버그 등 다양한 상황이 발생할 수 있습니다. 이러한 상황에서
livenessProbe
를 통해 문제가 발생한 컨테이너를 자동으로 재시작하여 서비스의 중단 시간을 최소화할 수 있습니다.
😁livenessProbe는 주로 세 가지 방식으로 설정됩니다
apiVersion: v1
kind: Pod
metadata:
name: test-liveness
spec:
containers:
- name: test
image: nginx
livenessProbe: <-liveness
httpGet:
path: /
port: 80
initialDelaySeconds: 3
periodSeconds: 3
httpGet:
path: /
port: 80
http 요청을 path,port로 보낸 후 응답값이 200이 아니라면 실패로 간주합니다.
tcpSocket:
port: 22
ssh연결을 위 포트로 시도하고 실패시
liveness
가 작동합니다.
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가 그대로 고정되어 있는 것을 확인 할 수 있습니다.