본문 바로가기
K8s/Core Concept

[K8s] Liveness Probes 란?

by okms1017 2024. 11. 24.
728x90

✍ Posted by Immersive Builder  Seong

 

Liveness Probes

쿠블릿(kubelet)은 컨테이너를 언제 재시작할지 알기 위해 Liveness Probes를 사용합니다. Liveness Probes는 쿠버네티스에서 컨테이너가 정상적으로 실행 중인지를 확인하는 메커니즘입니다.

 

예를 들어 컨테이너는 살아 있지만 어플리케이션이 정상 동작하지 않는 상황을 가정해봅시다. 코드의 버그로 인해 어플리케이션이 무한루프에 빠진 상황이라면 어떨까요? 기본적으로 쿠버네티스는 컨테이너가 실행 중이면 어플리케이션이 실행 중인 것으로 간주합니다. 따라서 우리는 사용자가 서비스를 제공받을 수 있도록 새로운 컨테이너를 재시작할 필요가 있습니다. 이 때, 컨테이너를 재시작하기 위해 정의한 내용이 바로 Liveness Probes 입니다.

 

Liveness Probes는 컨테이너 내부의 어플리케이션이 실제로 동작 중인지 여부를 주기적으로 체크합니다. 만약 헬스체크가 실패한다면 기존 컨테이너를 삭제하고 새로운 컨테이너를 생성하게 됩니다.  

 

아래는 Liveness Probes를 적용한 예시입니다. 

 


        apiVersion: v1
        kind: Pod
        metadata:
          labels:
            test: liveness
          name: liveness-exec
        spec:
          containers:
          - name: liveness
            image: registry.k8s.io/busybox
            args:
            - /bin/sh
            - -c
            - touch /tmp/healthy; sleep 30; rm -f /tmp/healthy; sleep 600
            livenessProbe:
              exec:
                command:
                - cat
                - /tmp/healthy
              initialDelaySeconds: 5
              periodSeconds: 5
              failureThreshold: 3
 

 

추가 옵션에 대한 설명은 아래와 같습니다. 

 

옵션 설명
initialDelaySeconds 어플리케이션 초기 설정으로 인한 지연 시간 (단위: 초)
periodSeconds Probe를 실행하는 주기 (단위: 초)
failure Threshold Readiness Probes가 실패할 경우 재시도 횟수 (디폴트: 3)

 

또한, LivenessProbes 옵션으로 사용 가능한 형식은 httpGet, tcpSocket, gRPC, exec command 등이 있습니다. 

 

  • httpGet

            livenessProbe:
              httpGet:
                path: /healthz
                port: 8080
                httpHeaders:
                - name: Custom-Header
                  value: Awesome
 

 

  • tcpSocket

            livenessProbe:
              tcpSocket:
                port: 8080
 

 

  • gRPC

            livenessProbe:
              grpc:
                port: 2379
 

 

  • exec command

            livenessProbe:
              exec:
                command:
                - cat
                - /tmp/healthy
 

 

 


[출처]

1) https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/ 

 

Configure Liveness, Readiness and Startup Probes

This page shows how to configure liveness, readiness and startup probes for containers. For more information about probes, see Liveness, Readiness and Startup Probes The kubelet uses liveness probes to know when to restart a container. For example, livenes

kubernetes.io

728x90

'K8s > Core Concept' 카테고리의 다른 글

[K8s] Jobs & CronJobs  (0) 2024.11.26
[K8s] Readiness Probes 란?  (0) 2024.11.23
[K8s] 소프트웨어 배포 전략(Software Deployment Strategies)  (0) 2024.11.19
[K8s] CoreDNS 란?  (0) 2024.11.16
[K8s] Helm 이란?  (1) 2024.11.14