- target: Kubernetes에서의 Container Health Check
- method:
1. Health Check
- Kubernetes에서 각 Container의 상태를 주기적으로 체크 및 문제가 있는 Container의 재시작을 하거나 서비스에서 제외하는 기능
- Health Check 종류에는 아래의 2가지를 제공
- Readiness Probe: 컨테이너의 서비스 가능 상태 여부 체크
- Liveness Probe: 컨테이너가 생존 여부 체크
※ 차이점
- Kubernetes Service에 대해서 3개의 Pod가 Load Balancing 되어있는 경우에, Readiness Probe의 경우, Pod의 Health Check 도중, 문제가 있는 Container가 발견되면 Unhealthy Pod로 지정하고 트래픽이 해당 Pod로 전달되지 않도록 조치
- 반면 Liveness Probe의 경우, Pod의 Health Check 도중, 문제가 있는 Container가 발견되면 해당 Pod를 재시작
2. Probe Type
- Health Check 종류에 따라 아래 3가지 방법을 제공
- Command Probe
- HTTP Probe
- TCP Probe
- Command Probe
# Command Probe(ex. liveness probe에서 설정)
apiVersion: v1
kind: Pod
metadata:
name: liveness-pod
spec:
containers:
- name: liveness
image: gcr.io/pu3vig-was/liveness:v1
imagePullPolicy: Always
ports:
- continaerPort: 8080
livenessProbe:
exec:
command:
- echo healthy
※ Readiness Probe 또는 Liveness Probe 부분에 exec:를 정의하고 command: 아래에 실행하고자 하는 쉘 명령어에 대한 인자 기술
※ 쉘 명령이 성공적으로 실행되고 0을 리턴하면, 정상으로 판단
- HTTP Probe
# HTTP Probe(ex. readiness probe에서 설정)
metadata:
name: readiness-rc
spec:
replicas: 2
selector:
app: readiness
template:
metadata:
name: readiness-pod
labels:
app: readiness
spec:
containers:
- name: readiness
image: gcr.io/pu3vig-web/readiness:v1
imagePullPolicy: Always
ports:
- containerPort: 80
readinessProbe:
httpGet:
path: /
port: 80
※ HTTP GET을 이용하여 컨테이너 상태 체크
※ path URL로 HTTP GET 요청을 보내서 리턴된 HTTP Status Code가 200이상 400미만인 경우 정상으로 체크
- TCP Probe
# TCP Probe(ex. liveness probe에서 설정)
apiVersion: v1
kind: Pod
metadata:
name: liveness-pod
spec:
containers:
- name: liveness
image: gcr.io/pu3vig-was/liveness:v1
imagePullPolicy: Always
ports:
- continaerPort: 8080
livenessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 5
periodSeconds: 5
※ TCP 연결을 통한 컨테이너 정상 유무 체크
※ 추가옵션(initialDelaySeconds, periodSeconds)는 다른 Probe에서도 사용 가능
※ initialDelaySeconds: 최초 컨테이너 시작 후, 설장한 시간(단위: 초) 이후부터 TCP 연결 시도
※ periodSeconds: TCP 연결 주기(단위: 초)
- source:
쿠버네티스 #9 - HealthCheck
쿠버네티스 #9 Health Check 조대협 (http://bcho.tistory.com) 쿠버네티스는 각 컨테이너의 상태를 주기적으로 체크해서, 문제가 있는 컨테이너를 자동으로 재시작하거나 또는 문제가 있는 컨테이너(Pod를)
bcho.tistory.com
'Dev > Kubernetes' 카테고리의 다른 글
[Kubernetes] 쿠버네티스 아키텍처 (0) | 2022.12.21 |
---|---|
[Kubernetes] Liveness Probe - HTTP Request를 이용한 Health Check(HTTPGetAction) (0) | 2022.07.06 |
[Accordion] Kubernetes 기반의 통합 관리 솔루션 (0) | 2022.06.21 |