쿠버네티스에서 Pod의 상태를 체크하고 관리하기 위해 사용하는 메커니즘 중 하나가 Probe입니다. Probe는 컨테이너가 정상적으로 동작하고 있는지 확인하는 방법을 제공합니다. 쿠버네티스는 세 가지 종류의 Probe를 제공하는데, 그 중 두 가지인 StartupProbe와 LivenessProbe에 대해 알아보겠습니다.
myapp-pod-startup.yaml
: 이 Pod는 StartupProbe를 사용하여 애플리케이션이 시작되었는지 확인합니다. StartupProbe는 애플리케이션이 시작되기 전에는 실패해도 괜찮습니다. 애플리케이션이 시작되면 성공해야 합니다.
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod-startup
spec:
containers:
- name: myapp
image: ghcr.io/c1t1d0s7/go-myweb:alpine
ports:
- containerPort: 8080
protocol: TCP
startupProbe:
httpGet:
path: /health
port: 8080
livenessProbe:
httpGet:
path: /health
port: 8080
myapp-pod-startup-404.yaml
: 이 Pod는 StartupProbe를 사용하여 애플리케이션이 시작되었는지 확인합니다. 하지만 이 경우, Probe는 항상 실패합니다. 이는/health?code=404
경로가 존재하지 않기 때문입니다.
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod-startup-404
spec:
containers:
- name: myapp
image: ghcr.io/c1t1d0s7/go-myweb:alpine
ports:
- containerPort: 8080
protocol: TCP
startupProbe:
httpGet:
path: /health?code=404
port: 8080
livenessProbe:
httpGet:
path: /health
port: 8080
myapp-pod-liveness.yaml
: 이 Pod는 LivenessProbe를 사용하여 애플리케이션이 정상적으로 동작하고 있는지 확인합니다. LivenessProbe는 애플리케이션이 정상적으로 동작하고 있지 않으면 컨테이너를 재시작합니다.
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod-liveness
spec:
containers:
- name: myapp
image: ghcr.io/c1t1d0s7/go-myweb:alpine
ports:
- containerPort: 8080
protocol: TCP
livenessProbe:
httpGet:
path: /health
port: 8080
myapp-pod-liveness-404.yaml
: 이 Pod는 LivenessProbe를 사용하여 애플리케이션이 정상적으로 동작하고 있는지 확인합니다. 하지만 이 경우, Probe는 항상 실패합니다. 이는/health?code=404
경로가 존재하지 않기 때문입니다.
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod-liveness-404
spec:
containers:
- name: myapp
image: ghcr.io/c1t1d0s7/go-myweb:alpine
ports:
- containerPort: 8080
protocol: TCP
livenessProbe:
httpGet:
path: /health?code=404
port: 8080
Pod를 생성하려면 다음 명령어를 사용합니다:
kubectl create -f <pod-file-name>.yaml
Pod의 상태를 확인하려면 다음 명령어를 사용합니다:
kubectl get pods
Pod의 상세 정보를 확인하려면 다음 명령어를 사용합니다:
kubectl describe pod <pod-name>
마지막으로, Pod를 삭제하려면 다음 명령어를 사용합니다:
kubectl delete pod <pod-name>
이렇게 Probe를 사용하면 애플리케이션의 상태를 체크하고 관리할 수 있습니다. StartupProbe는 애플리케이션의 시작을, LivenessProbe는 애플리케이션의 동작 상태를 확인하는 데 사용됩니다.
링크참조:
- Configure Liveness, Readiness and Startup Probes - Kubernetes
- Kubernetes Readiness Probes | Practical Guide - Komodor
- Kubernetes — Probes (Liveness, Readiness, and Startup) Overview
- A Practical Guide to Kubernetes Startup Probe - airplane.dev
- A Guide to Understanding your Kubernetes Liveness Probes Best Practices
'Infra > Kubernetes' 카테고리의 다른 글
쿠버네티스 02-02 Controller_Replicaset (0) | 2023.09.06 |
---|---|
쿠버네티스 02-01 Controller_Replication (0) | 2023.09.06 |
쿠버네티스 01-04 Pod_Namespace (0) | 2023.09.06 |
쿠버네티스 01-03 Pod_annotation (0) | 2023.09.06 |
쿠버네티스 01-02 Pod_label (0) | 2023.09.06 |