Dev/Kubernetes

[Kubernetes] Container Health Check

pu3vig 2022. 7. 6. 13:46
728x90
  • target:  Kubernetes에서의 Container Health Check

 


  • method: 

1. Health Check

- Kubernetes에서 각 Container의 상태를 주기적으로 체크 및 문제가 있는 Container의 재시작을 하거나 서비스에서 제외하는 기능

- Health Check 종류에는 아래의 2가지를 제공

  • Readiness Probe: 컨테이너의 서비스 가능 상태 여부 체크
  • Liveness Probe: 컨테이너가 생존 여부 체크
더보기

※ 차이점

- Kubernetes Service에 대해서 3개의 Pod가 Load Balancing 되어있는 경우에, Readiness Probe의 경우, Pod의 Health Check 도중, 문제가 있는 Container가 발견되면 Unhealthy Pod로 지정하고 트래픽이 해당 Pod로 전달되지 않도록 조치

 

- 반면 Liveness Probe의 경우, Pod의 Health Check 도중, 문제가 있는 Container가 발견되면 해당 Pod를 재시작

 


2. Probe Type

- Health Check 종류에 따라 아래 3가지 방법을 제공

  • Command Probe
  • HTTP Probe
  • TCP Probe

 


  • Command Probe
# Command Probe(ex. liveness probe에서 설정)

apiVersion: v1
kind: Pod
metadata:
  name: liveness-pod
spec:
  containers:
  - name: liveness
    image: gcr.io/pu3vig-was/liveness:v1
    imagePullPolicy: Always
    ports:
    - continaerPort: 8080
    livenessProbe:
      exec:
        command:
        - echo healthy

※ Readiness Probe 또는 Liveness Probe 부분에 exec:를 정의하고 command: 아래에 실행하고자 하는 쉘 명령어에 대한 인자 기술

※ 쉘 명령이 성공적으로 실행되고 0을 리턴하면, 정상으로 판단

 

 


  • HTTP Probe
# HTTP Probe(ex. readiness probe에서 설정)

metadata:
  name: readiness-rc
spec:
  replicas: 2
  selector:
    app: readiness
  template:
    metadata:
      name: readiness-pod
      labels:
        app: readiness
    spec:
      containers:
      - name: readiness
        image: gcr.io/pu3vig-web/readiness:v1
        imagePullPolicy: Always
        ports:
        - containerPort: 80
        readinessProbe:
          httpGet:
            path: /
            port: 80

※ HTTP GET을 이용하여 컨테이너 상태 체크

※ path URL로 HTTP GET 요청을 보내서 리턴된 HTTP Status Code가 200이상 400미만인 경우 정상으로 체크

 


  • TCP Probe
# TCP Probe(ex. liveness probe에서 설정)

apiVersion: v1
kind: Pod
metadata:
  name: liveness-pod
spec:
  containers:
  - name: liveness
    image: gcr.io/pu3vig-was/liveness:v1
    imagePullPolicy: Always
    ports:
    - continaerPort: 8080
    livenessProbe:
      tcpSocket:
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 5

※ TCP 연결을 통한 컨테이너 정상 유무 체크

※ 추가옵션(initialDelaySeconds, periodSeconds)는 다른 Probe에서도 사용 가능

※ initialDelaySeconds: 최초 컨테이너 시작 후, 설장한 시간(단위: 초) 이후부터 TCP 연결 시도

※ periodSeconds: TCP 연결 주기(단위: 초)

 


  • source:

https://bcho.tistory.com/1264

 

쿠버네티스 #9 - HealthCheck

쿠버네티스 #9 Health Check 조대협 (http://bcho.tistory.com) 쿠버네티스는 각 컨테이너의 상태를 주기적으로 체크해서, 문제가 있는 컨테이너를 자동으로 재시작하거나 또는 문제가 있는 컨테이너(Pod를)

bcho.tistory.com

 

728x90