# 라이브니스, 레디네스, 스타트업 프로브 구성
Liveness, Readiness and Startup Probes
# Liveness Probe
컨테이너 살았는지 판단하고 다시 시작하는 기능
컨테이너의 상태를 스스로 판단하여 교착 상태에 빠진 컨테이너를 재시작
버그가 생겨도 높은 가용성을 보임
# Readiness Probe
포드가 준비된 상태에 있는지 확인하고 정상 서비스를 시작하는 기능
포드가 적절하게 준비되지 않은 경우 로드밸런싱을 하지 않음
# Startup Probe
애플리케이션의 시작 시기 확인하여 가용성을 높이는 기능
Liveness와 Readiness의 기능을 비활성화
# 쿠버네티스 - pod - 라이브니스, 레디니스 프로브 구성
- 라이브니스 프로브 : 컨터이너 상태를 파악하고 문제가 있으면 다시 시작하는 기능
- 레디니스 프로브 : 포드가 준비된 상태인지 확인, 정상 서비스를 시작하는 기능, 포드가 정상적으로 준비되어 있지 않으면 로드 밸런싱을 하지 않음
- 스타트업 프로브 : 컨테이너가 시작될때 정상적으로 실행되는지 체크 후 라이브니스와 레드니스의 서비스가 진행된다.
- 쿠버네티스 문서 사이트에서 https://kubernetes.io/docs/ > liveness probe 검색
Configure Liveness, Readiness and Startup Probes | Kubernetes
- 위의 검색항목으로 들어감
- 화면의 중간에 있는 pods/probe/exec-liveness.yaml 파일을 기반으로 작성함
- 위의 exec-liveness.yaml 파일의 내용을 복사
# 복사한 내용을 yaml 파일로 생성하기
gedit 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
- 위의 내용 저장후 나가기
# 라이브네스 실행하기
kubectl create -f exec-liveness.yaml
kubectl get pod
# 라이브네스 이벤트 확인하기
kubectl describe pod liveness-exec
- describe와 get pod를 사용하여 pod을 보면 죽었다가 다시 살아나는 과정들을 볼 수 있다.
# 2번째 테스트 : Define a liveness HTTP request
- 위의 쿠버네티스 문서 사이트에서 조금더 아래로 내려가보면 내용을 찾을 수 있다.
gedit 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
kubectl create -f http-liveness.yaml
kubectl get pod
kubectl get pod -w
# describe로 서비스 정보 확인하기
kubectl describe pod liveness-http
# Define a TCP liveness probe
gedit 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
kubectl apply -f https://k8s.io/examples/pods/probe/tcp-liveness-readiness.yaml
kubectl get pod
kubectl describe pod goproxy
- 스케줄링 내용을 확인 할 수있다.
'⭐ Kubernetes & EKS > Kubernetes (쿠버네티스)' 카테고리의 다른 글
hostpath 컨테이너와 노드간 데이터 공유 (0) | 2021.09.11 |
---|---|
레플리케이션 컨트롤러 (0) | 2021.09.08 |
jenkins를 yaml파일로 작성하여 실행하기 (0) | 2021.09.06 |
pod의 기본설명과 디스크럽터 작성 (0) | 2021.09.06 |
큐브시스템 컴포넌트와 etcd 데이터베이스 살펴보기 (0) | 2021.09.06 |