kubernetes Probe self-healing
쿠버네티스 Probe self-healing 이란 kubelet에 의해 컨테이너를 주기적으로 체크해서
컨테이너를 재시작하거나 문제가있는 파드(컨테이너)를 중지 시키는 진단기능 이다
쿠버네티스는 총3가지의 probe를 제공한다.
●livenessprobe 매커니즘
쿠버네티스에서 제공하는 self-healing 기능 중 하나
컨테이너 마다 지정할수있음.
컨테이너가 동작할수있는지 확인하고 동작하지 않거나 문제가 발생할경우 정책에따라 재시작한다
livenessprobe를 컨테이너에 지정하지않으면 기본값은 success 즉 진단에성공했다고 판단함.
컨테이너(APP)의 용도,목적에 따라 livenessprobe 3가지의 매커니즘으로 관리할수있다.
● httpGet probe
-> httpGet Action은 지정된 컨테이너의 IP,PORT,PATH로 HTTP GET 요청을 보내서
해당컨테이너가 응답상태코드가 200~400값이 반환되면 성공(success) , 그외에는 실패(failure)로 판단하여 파드가아닌 컨테이너를 재시작한다
->TCPSocket Action은 지정된 컨테이너의 IP와 PORT로 TCP연결을 시도하여 성공(success) 여부를 진단
실패(failure)하면 파드가아닌 컨테이너를 재시작한다
● exec probe
->exec Action은 지정된 컨테이너 안에서 명령을 실행하고 종료코드가 0이면 성공(success) 0이아니면 실패(failure)로
파드가아닌 컨테이너를 재시작한다.
※진단결과값은 3가지가 있다
success:컨테이너 진단성공
failure:컨테이너 진단실패
unknown:컨테이너 실패,상태를 알수없음
●livenessprobe 매개변수
livenessprobe를 보다 정확하게 설정하고 제어하는데 필요한 옵션값.
● initialDelaySeconds
-> 컨테이너가 시작후 몇 초안에 livenessprobe self-healing으로 health check 할껀지에 대한 시간(초)
기본값은 0초
● periodSeconds
->health check를 몇 시간(초)마다 반복실행
기본값은 1초
● timeoutSeconds
-> health check 후 결과를 기다리는 시간(초)
기본값은 1초
● successThreshold
-> 몇번의 health check 후 성공결과를 수신해야 성공으로 인정 하는지에 대한 값
기본값은 1
● failureThreshold
-> 몇번의 health check 후 실패결과를 수신해야 실패로 인정 하는지에 대한 값
기본값은 3
kubectl describe pod [파드명] 명령어로 확인가능
describe내용 중 일부
Liveness: http-get http://:8080/ delay=0s timeout=1s period=10s #success=1 #failure=3
●readinessProbe 매커니즘
쿠버네티스에서 제공하는 self-healing 기능 중 하나로 readinessProbe의 매커니즘은
위와 같다 (httpget,tcpsocket,exec)
컨테이너가 실행된후 실제로 서비스요청 즉 APP이 시작할 준비가 되었는지 체크하기 위한 기능
진단에 이상이 있을경우 트래픽을 보내지 않도록 하고 Service에서 해당POD를 제외시킨다.
●readinessProbe 매개변수
readinessProbe의 매개변수는 위와 같다 ( initialDelaySeconds,periodSeconds 등등)
●startupProbe 매커니즘
쿠버네티스에서 제공하는 self-healing 기능 중 하나로 startupProbe의 매커니즘은
위와 같다 (httpget,tcpsocket,exec)
컨테이너내의 APP가 시작되었는지를 나타낸다 startupProbe가 적용된경우 성공할때까지 다른probe는 동작되지않음
계속 실패할경우 kubelet이 컨테이너를 죽이고 재시작정책에 따라 처리됨.
●startupProbe 매개변수
startupProbe의 매개변수는 위와 같다 ( initialDelaySeconds,periodSeconds 등등)
'IT Study > Kubernetes' 카테고리의 다른 글
kubernetes infra container pause (0) | 2023.01.12 |
---|---|
kubernetes init container (0) | 2023.01.11 |
kubernetes pod (0) | 2023.01.07 |
kubernetes yaml (0) | 2023.01.06 |
kubernetes namespace (0) | 2023.01.05 |