Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

전공공부

Readiness & Liveness Probe 본문

Study/K8S

Readiness & Liveness Probe

monitor 2023. 3. 26. 19:46

POD Status - 일반 순서도

 

1. Pending : 처음 포드 생성시 노드에 배치 되지 않으므로

 

2. CotainerCreating : 컨테이너 작동전 받기

 

3. Running : 가동

 

livenessProbe : 컨테이너의 동작 여부를 판단함, 실패시 k8s이 container 재시작을 함

readinessProbe : 컨테이너가 준비 되었는지 판단함, 만약 실패시 Pod가 Service에서 삭제됨

 

POD Conditions

 

Ready 상태여도 Application Program이 Running 준비 중 일 수도 있습니다.

 

(WAS 서버가 실행되자마자 준비 되지 않는 상황을 상상해봅시다.)

 

Readiness Probe

위와 같은 상황을 준비하기 위해서 app 내부로 테스트 해서 ready 상태인지 알아보는 명령어입니다.

 

api가 준비되지 않으면 Ready 상태가 아닌 준비를 하게 됩니다.

 

1. api 요청 방법

readinessProbe:
 httpGet:
  path: /api/ready
  port: 8080
 initialDelaySeconds: 10 # 처음 10초간은 app 준비중으로 api 요청 안 함
 periodSeconds: 5 #5회 이상 실패시 실패
 failureThreadhold: 8 # 실패 이후 최고 역치 값

 

2. TCP Test 3306

readinessProbe:
 tcpSocket:
  port: 3306

 

3. Exec Command

readinessProbe:
 exec:
  command:
  - cat
  - /app/is_ready

 


 

Docker vs Kubernets
docker run nginx

위 오류에서 에러가 난다면 Docker ps로 확인 하여도 계속 컨테이너는 오류 상태이다.

docker ps -a

 

그에 반해 K8S는 재시작을 하므로 계속 컨테이너가 살아있게 된다.

 

하지만, 컨테이너는 작동하지만 Pod에 올라간 Application이 문제라면? 계속 재시작을 시도하고 제대로 정상적인 상태를 받지 못합니다.

 

Liveness Probes

위와 같은 상황을 막기 위해서 정상적인 상태인지 확인 하는 명령어입니다.

 

livenessProbe:
  httpGet:
    path: /api/ready
    port: 8080
  initialDelaySeconds: 10 # 처음 10초간은 app 준비중으로 api 요청 안 함
  periodSeconds: 5 #5회 이상 실패시 실패
  failureThreadhold: 8 # 실패 이후 최고 역치 값

 

livenessProbe:
  tcpSocket:
    port: 3306

 

livenessProbe:
  exec:
    command:
     - cat
     - /app/is_ready

 

 

 

문제 상황

1. add a check to restart the container on the same pod if the command ls /var/www/html/file_check fails. This check should start after a delay of 10 seconds and run every 60 seconds.

 

이러면 어떻게  pod 구성을 해야 할까?

 

위의 문제 상황을 해석해보면 컨테이너가 restart할때 ls /var/www/html/file_chek 명령이 실패하면 다시 재시작을 한다, 그리고, 10초의 기본 딜레이주고 그리고 매번 60초 마다 해당 명령어 런 시켜서 확인해야 함.

 

인데 이는 livenessProbe의 성질이다.

 

    livenessProbe:
      exec:
        command:
        - ls
        - /var/www/html/file_check
      initialDelaySeconds: 10
      periodSeconds: 60

 

 

'Study > K8S' 카테고리의 다른 글

Labels, Selectors  (0) 2023.03.27
Logging  (0) 2023.03.26
Multi-Container PODs  (0) 2023.03.26
Node Selectors & Node Affinity  (0) 2023.03.22
Taints And Tolerations  (0) 2023.03.19