728x90
readinessProbe
readinessProbe란?
컨테이너 실행 후 실제로 서비스 요청에 응답할 수 있는지 진단
- ready 상태 확인
- 진단 실패 시 엔드포인트 컨트롤러는 해당 파드에 연결된 모든 서비스를 대상으로 엔드포인트 정보를 제거함
readinessProbe 종류
항목 | 설명 |
HTTP GET | - 특정 경로에 HTTP GET 요청 - HTTP 응답 코드 2xx 또는 3xx인지 확인 |
TCP Socket | 특정 TCP Port 연결 시도 (TCP syn, syn+ack, ack) |
Exec | 컨테이너 내부에 바이너리(명령)를 실행하고 종료 코드로 확인 |
실습
Ready 상태가 아닌 파드는 readinessProbe가 작동하여 엔드포인트에 연결되지 않음
- 레플리카셋 생성 파일
$ cat myapp-rs-readiness.yml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: myapp-rs-readiness
spec:
replicas: 3
selector:
matchLabels:
app: myapp-rs-readiness
template:
metadata:
labels:
app: myapp-rs-readiness
spec:
containers:
- name: myapp
image: ghcr.io/c1t1d0s7/go-myweb:alpine
readinessProbe:
exec:
command:
- ls
- /var/ready
ports:
- containerPort: 8080
- 서비스 생성 파일
$ cat myapp-svc-readiness.yml
apiVersion: v1
kind: Service
metadata:
name: myapp-svc-readiness
spec:
ports:
- port: 80
targetPort: 8080
selector:
app: myapp-rs-readiness
- 레플리카셋, 서비스 생성
$ kubectl create -f myapp-rs-readiness.yml -f myapp-svc-readiness.yml
replicaset.apps/myapp-rs-readiness created
service/myapp-svc-readiness created
실행 결과
- 생성된 파드, 엔드포인트, 서비스 정보 확인
- 생성된 파드의 READY가 0/1 상태임을 확인 => 준비된 상태가 아님
- myapp-svc-readiness 서비스의 엔드포인트가 비어있음 => 트래픽을 받지 않음
$ kubectl get po,ep,svc -o wide
728x90
'쿠버네티스 교육 > 강의 내용 정리' 카테고리의 다른 글
220628_3_k8s_볼륨_emptyDir (0) | 2022.06.28 |
---|---|
220628_2_k8s_headless 서비스 (0) | 2022.06.28 |
220627_3_k8s_연결 서비스_MetalLB (0) | 2022.06.27 |
220624_2_k8s_연결 서비스_NodePort (0) | 2022.06.25 |
220624_1_k8s_클러스터 내부 서비스-Cluster IP (0) | 2022.06.24 |