이세개발
article thumbnail

쿠버네티스에서 Pod의 상태를 체크하고 관리하기 위해 사용하는 메커니즘 중 하나가 Probe입니다. Probe는 컨테이너가 정상적으로 동작하고 있는지 확인하는 방법을 제공합니다. 쿠버네티스는 세 가지 종류의 Probe를 제공하는데, 그 중 두 가지인 StartupProbe와 LivenessProbe에 대해 알아보겠습니다.

  1. 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
  1. 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
  1. 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
  1. 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는 애플리케이션의 동작 상태를 확인하는 데 사용됩니다.


링크참조:

profile

이세개발

@print(name)

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!