디지안의 개발일지
[실습] Pod 생성시 Probe 설정하기 본문
Probe의 종류
쿠버네티스에서는 애플리케이션의 안정성을 보장하기 위한 장치 중에 하나로 Probe 기능을 제공한다.
- Liveness Probe : 컨테이너가 살아있는지 확인하고 문제가 생겼을 때 복구(다시 시작) 하는 역할을 한다.
- Readiness Probe : Pod가 정상적으로 뜨면 서비스를 기능을 활성화한다. 서비스 기능이 활성화되면 외부 클라이언트가 해당 Pod로 요청을 보낼 수 있다.
- Startup Probe : 애플리케이션의 활성화 상태를 확인하여 Liveness, Readiness 기능을 활성화 / 비활성화 할지 결정한다.
Liveness 예제
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: # pod가 살아있는지 점검해준다. exec: command: # cat /tmp/healthy 명령어가 수행되면 0 아니면 다른 값을 반환한다. - cat - /tmp/healthy initialDelaySeconds: 5 # Pod 실행되고나서 5초 뒤부터 liveness를 확인한다. periodSeconds: 5 # 5초 마다 점검하겠다
liveness Probe는 pod가 애플리케이션이 정상적으로 실행됬는지 확인하는 역할을 한다. 위에서는 command
cat /tmp/healthy를 통해서 애플리케이션이 잘 실행되는지 확인한다. 이 때 Pod가 실행되고 나서 initialDelaySecods 후에 확인을 하고 만약 애플리케이션이 실행이 안됬다면 Pod를 삭제하고 다시 시작한다. 그리고 실행이 되면 5초 마다 실행해서 점검을 한다.
apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness
name: liveness-http
spec:
containers:
- name: liveness
image: k8s.gcr.io/liveness
args:
- /server
livenessProbe:
httpGet: # http의 GET 요청으로 사용
path: /healthz # GET으로 사용할 path
port: 8080 # Port 정보
httpHeaders:
- name: Custom-Header
value: Awesome
initialDelaySeconds: 3
periodSeconds: 3
위는 command를 http로 요청하는 경우다. http의 경우 HTTP 코드가 200 ~ 400 상태 코드 사이의 값을 반환하면 정상으로 보고 HTTP 상태코드가 400 ~ 500인 경우 오류로 보고 Pod를 삭제한다.
Readiness Probe 예제
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
tcpSocket이 열려있는지 확인하고 서비스 기능을 활성화한다.
Startup Probe 예제
livenessProbe:
httpGet:
path: /healthz
port: liveness-port
failureThreshold: 1
periodSeconds: 10
startupProbe:
httpGet:
path: /healthz
port: liveness-port
failureThreshold: 30
periodSeconds: 10
Readiness와 Liveness를 체크하기 전에 애플리케이션이 정상적으로 동작하는지 확인한다.
참고 자료
'Kubernates' 카테고리의 다른 글
k8s에 JMeter 배포하기 (0) | 2022.03.07 |
---|