[쿠버네티스] - 컨테이너 상태 모니터링

chancehee·2023년 9월 13일
0

쿠버네티스

목록 보기
5/17
post-thumbnail

[ 개요 ]

컨테이너 생성과 실제 서비스 준비는 약간의 차이 존재 -> 컨테이너가 생성되어도 빌드중이면 사용 못할테니
ex) Spring Boot APP을 빌드하는 동안 서비스 접속 불가능 -> 컨테이너는 생성되었지만, 서비스 준비는 안됨

도커에서 컨테이너끼리 health check를 할 수 있는 것 처럼
쿠버네티스도 컨테이너가 생성되고 서비스가 준비되었다는 것을 체크하는 옵션 제공

[ livenessProbe ]

컨테이너가 정상적으로 동작하는지 체크하고 정상적으로 동작하기 않는다면 컨테이너를 재시작

정상 상태체크하는 방식은 httpGet, tcpSocket, exec 존재

apiVersion: v1
kind: Pod
metadata:
  name: echo-lp
  labels:
    app: echo
spec:
  containers:
    - name: app
      image: [이미지 이름]
      livenessProbe:
        httpGet:
          path: /not/exist
          port: 8080
        initialDelaySeconds: 5
        timeoutSeconds: 2 # Default 1
        periodSeconds: 5 # Defaults 10
        failureThreshold: 1 # Defaults 3

[ readinessProbe ]

컨테이너가 준비되었는지 체크하고 정상적으로 준비되지 않았다면 Pod으로 들어오는 요청 제외

apiVersion: v1
kind: Pod
metadata:
  name: echo-rp
  labels:
    app: echo
spec:
  containers:
    - name: app
      image: [이미지 이름]
      readinessProbe:
        httpGet:
          path: /not/exist
          port: 8080
        initialDelaySeconds: 5
        timeoutSeconds: 2 # Default 1
        periodSeconds: 5 # Defaults 10
        failureThreshold: 1 # Defaults 3

[ livenessProbe + readinessProbe ]

두가지 모두 사용하는 것이 일반적이다.

apiVersion: v1
kind: Pod
metadata:
  name: echo-health
  labels:
    app: echo
spec:
  containers:
    - name: app
      image: [이미지 이름]
      livenessProbe:
        httpGet:
          path: /
          port: 3000
      readinessProbe:
        httpGet:
          path: /
          port: 3000

출처
https://subicura.com/k8s/guide/pod.html#%E1%84%8F%E1%85%A5%E1%86%AB%E1%84%90%E1%85%A6%E1%84%8B%E1%85%B5%E1%84%82%E1%85%A5-%E1%84%89%E1%85%A1%E1%86%BC%E1%84%90%E1%85%A2-%E1%84%86%E1%85%A9%E1%84%82%E1%85%B5%E1%84%90%E1%85%A5%E1%84%85%E1%85%B5%E1%86%BC

0개의 댓글