728x90
라이브니스, 레디네스, 스타트업 프로브 구성
Liveness, Readiness and Startup Probes
Liveness Probe
- 컨테이너 살았는지 판단하고 다시 시작하는 기능
- 컨테이너의 상태를 스스로 판단하여 교착 상태에 빠진 컨테이너를 재시작
- 버그가 생겨도 높은 가용성을 보임
Readiness Probe
- 포드가 준비된 상태에 있는지 확인하고 정상 서비스를 시작하는 기능
- 포드가 적절하게 준비되지 않은 경우 로드밸런싱을 하지 않음
Startup Probe
- 애플리케이션의 시작 시기 확인하여 가용성을 높이는 기능
- Liveness와 Readiness의 기능을 비활성화
Liveness 커맨드 설정 - 파일 존재 여부 확인
리눅스 환경 에서커맨드 실행 성공 시 0 (컨테이너 유지)
실패하면 그 외 값 출력 (컨테이너 재시작)
pods/probe/exec-liveness.yaml
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 -rf /tmp/healthy; sleep 600
livenessProbe:
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 5
periodSeconds: 5
Liveness 웹 설정 - http 요청 확인
서버 응답 코드가 200이상 400미만 (컨테이너 유지)
서버 응답 코드가 그 외 (컨테이너 재시작)
pods/probe/http-liveness.yaml
apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness
name: liveness-http
spec:
containers:
- name: liveness
image: k8s.gcr.io/liveness
args:
- /server
livenessProbe:
httpGet:
path: /healthz
port: 8080
httpHeaders:
- name: Custom-Header
value: Awesome
initialDelaySeconds: 3
periodSeconds: 3
Readiness TCP 설정
- 준비 프로브는 8080포트를 검사
- 5초 후부터 검사 시작
- 검사 주기는 10초
- → 서비스를 시작해도 된다!
Liveness TCP 설정
활성화 프로브는 8080포트를 검사
15초 후부터 검사 시작
검사 주기는 20초
→ 컨테이너를 재시작하지 않아도 된다!
pods/probe/tcp-liveness-readiness.yaml
apiVersion: v1
kind: Pod
metadata:
name: goproxy
labels:
app: goproxy
spec:
containers:
- name: goproxy
image: k8s.gcr.io/goproxy:0.1
ports:
- containerPort: 8080
readinessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 15
periodSeconds: 20
Statup Probe
- 시작할 때까지 검사를 수행
- http 요청을 통해 검사
- 30번을 검사하며 10초 간격으로 수행
- 300(30*10)초 후에도 포드가 정상 동작하지 않는 경우 종료
- → 300초 동안 포드가 정상 실행되는 시간을 벌어줌
ports:
- name: liveness-port
containerPort: 8080
hostPort: 8080
livenessProbe:
httpGet:
path: /healthz
port: liveness-port
failureThreshold: 1
periodSeconds: 10
startupProbe:
httpGet:
path: /healthz
port: liveness-port
failureThreshold: 30
periodSeconds: 10
728x90
'개발강의정리 > DevOps' 카테고리의 다른 글
[데브옵스를 위한 쿠버네티스 마스터] 쿠버네티스 핵심 개념-레플리케이션 컨트롤러와 레플리카셋 (0) | 2020.12.01 |
---|---|
[데브옵스를 위한 쿠버네티스 마스터] 쿠버네티스 핵심 개념-레이블을 이용한 포드 구성 (0) | 2020.11.27 |
[데브옵스를 위한 쿠버네티스 마스터] 쿠버네티스 핵심 개념-pod (0) | 2020.11.27 |
[데브옵스를 위한 쿠버네티스 마스터] 쿠버네티스 핵심 개념-etcd 데이터베이스 살펴보기 (0) | 2020.09.20 |
[데브옵스를 위한 쿠버네티스 마스터] 쿠버네티스 핵심 개념-Kube 시스템 컴포넌트 (0) | 2020.09.20 |
댓글