쿠버네티스 - self-healing pod 만들기
조금 늦게 올리는 쿠버네티스 ㅠ7ㅠ
livenessprobe를 이용해 self-healing pod 만들기!
- pod 가 계속 시행할 수 있음을 보장
- pod의 spec에 정의
→ web 서비스에 80 port로 / 에 주기적으로 접속 → 응답이 잘 나오면, 잘 실행되고 있음을 확인(running 확인)
[liveness probe의 매커니즘 ] - 3가지 방법
1. httpGet probe : 지정한 ip주소, port, HTTP에 GET 요청을 보내, 해당 컨테이너가 응답하는 지를 확인한다. 변환 코드가 200이 아닌 값이 나오면 오류, 컨테이너를 다시 시작함
livenessProbe:
- httpGet:
- path: /
- port: 80
→ nginx 서버에서 http—:80 로 접속하여 주기적으로 / (root)에 접속해서 http 프로토콜이 200 이면 ok, 500 이나 다른 error 발생하면 건강하지 못함을 알 수 있음
→ 즉, 웹 서비스가 데이터를 잘 response 하면서 running 중인지
→ 만약 500 error = container가 잘못됨 → container kill (스스로) → 그 후, docker hub에서 다운로드 받아서 restart
2. tcpSocket probe : 지정된 포트에 TCP 연결을 시도, 연결되지 않으면 컨테이너를 다시 시작함
livenessprobe:
- tcpSocket:
- port :22
→ sshd 을 사용할 때, (22/tcp 포트로 클라이언트 커넥션을 받는 서비스 ) → 22번으로 접속 성공 하면 건강,
3번 실패 하면 → 건강하지 않음으로 판단 → 해당 파드 삭제 후 → 새로운 파드를 생성 및 배치 restart
- 항상 건강한 container service 하려 함
3. exec probe : exec 명령을 전달하고, 명령의 종료 코드가 0이 아니면 컨테이너를 다시 시작함
이 컨테이너 속에서 실행할 커맨드(건강 검진 할 수 있는) 를 나열하여 실행 → 건강하면 실행 → 건강하지 않으면 실행 x
→ 컨테이너를 restart를 함! , ip는 pod에 적용되기 때문에 변경되지 않음
Liveness Probe(3)
liveness probe 매개 변수
- periodSeconds: health check 반복 실행 시간(초)
- initialDelaySeconds : pod 실행 후 delay 할 시간(초)
- timeoutSeconds : health check 후 응답을 기다리는 시간 (초)
→ 파란색 글씨 : livenessprobe 의 연장선 이며, 보통은 default 값이 적용되어 있음
→ 어떻게 바꿀 수 있을지? 가 관건
다음 포스팅은 self healing pod를 직접 만들어보는 실습편을 올리도록 하겠다!