cho2cee
TIL
cho2cee
전체 방문자
오늘
어제
  • 전체 게시글 (78)
    • Cloud (31)
      • AWS (12)
      • Kubernetes (16)
      • IaC (3)
    • Security (15)
      • ELK (5)
      • Reversing (10)
    • Network (8)
    • Linux (4)
    • Etc. (20)
      • 기타 (4)
      • 업무 (16)

태그

  • VPC
  • 합격후기
  • SAA
  • CLOUD
  • AWS

최근 댓글

블로그 메뉴

  • 홈
  • 태그
  • 방명록
hELLO
cho2cee

TIL

[Kubernetes] Kubernetes Pod | livenessProbe
Cloud/Kubernetes

[Kubernetes] Kubernetes Pod | livenessProbe

2021. 12. 9. 21:33

kubernetes.io 에서 확인할 수 있는 쿠버네티스 특징 중 하나인 self healing 기능에 대해 살펴본다.

 

1. Liveness Probe

  • Pod가 계속 실행할 수 있음을 보장 
  • Pod의 spec에 정의 
  • 건강한 컨테이너로 서비스하는 것을 목적으로 하고 있다. 

 

2. Liveness Probe 매커니즘

  • httpGet probe : 지정한 IP주소, 포트, path에 HTTP GET 요청을 보내, 해당 컨테이너가 응답하는지를 확인한다. 반환코드가 200이 아닌 값이 나오면 오류로 판단하고 컨테이너를 다시 시작한다.
livenessProbe:
  httpGet
    path:
    port: 80
  • tcpSocket probe : 지정된 포트에 TCP 연결을 시도, 연결되지 않으면 컨테이너를 다시 시작한다.
livenessProbe:
  tcpSocket:
    port: 22
  • exec probe : exec 명령을 전달하고 명령의 종료코드가 0이 아니면 컨테이너를 다시 시작한다.
livenessProbe:
  exec
    command:
    - ls
    - /data/file

➜ 파드가 아닌 컨테이너를 재시작하기 때문에 아이피는 변경되지 않음

 

3. Liveness Probe 매개 변수

  • periodSeconds : health chek 반복 실행 시간(초) 
  • initialDelaySeconds : Pod 실행 후 delay할 시간(초) 
  • timeoutSeconds : health check 후 응답을 기다리는 시간(초)
  • livenessProbe definition 
apiVersion v1
kind: Pod 
metadata:
  name: nginx-pod 
spec:
  containers:
  - name: nginx-container
    image: nginx:1.14
    livenessProbe:
      httpGet:
        path: /
        port: 80
      
      initialDelaySeconds: 15  //pod가 running 되고 15초 이후 check
      periodSeconds: 20
      timeoutSeconds: 1
      successThreshold: 1
      failureThresold: 3

 

4. Liveness Probe example 

liveness Probe는 Pod의 spec에 정의한다.

아래 example에서 사용한 smlinux/unhealthy 컨테이너는 HTTP connection이 있을 때마다 내부 서버 오류로 HTP 500 ERROR를 발생한다. 

$ cat pod-liveness.yam
apiVersion: v1
kind: Pod
metadata:
  name: liveness-pod
spec:
  containers: 
  - image: smlinux/unhealthy
    name: unhealthy-container
    ports:
    - containerPort: 8080
      protocols: TCP
    livenessProbe:
      httpGet:
        path: /
        port: 8080

위 코드를 이용해 liveness-pod 를 생성하고, 50x3초 가 지난 이후에 컨테이너가 kill되어 다시 restart 되는 것을 확인할 수 있다. 

controlplane $ kubectl describe pod liveness-pod // describe 옵션을 이용한 상태 및 이벤트 확인
.
.
.
Liveness:       http-get http://:8080/ delay=0s timeout=1s period=10s #success=1 #failure=3
.
.
.
Events:
  Type     Reason     Age                  From               Message
  ----     ------     ----                 ----               -------
  Normal   Scheduled  2m23s                default-scheduler  Successfully assigned default/liveness-pod to node01
  Warning  Unhealthy  64s (x3 over 84s)    kubelet, node01    Liveness probe failed: HTTP probe failed with statuscode: 500
  Normal   Killing    64s                  kubelet, node01    Container unhealthy-container failed liveness probe, will be restarted
  Normal   Pulling    34s (x2 over 2m22s)  kubelet, node01    Pulling image "smlinux/unhealthy"
  Normal   Pulled     34s (x2 over 2m21s)  kubelet, node01    Successfully pulled image "smlinux/unhealthy"
  Normal   Created    34s (x2 over 2m21s)  kubelet, node01    Created container unhealthy-container
  Normal   Started    33s (x2 over 2m21s)  kubelet, node01    Started container unhealthy-container
  
  // 상태코드 500을 반환하여 Unhealthy 하다고 판단되면 컨테이너를 kill, 다시 이미지를 pull로 가져와서 새 컨테이너를 start한다.

 

 

 


Reference

🔗따라하면서 배우는 쿠버네티스
🔗kubernetes pod | kubernetes.io

저작자표시 (새창열림)

'Cloud > Kubernetes' 카테고리의 다른 글

[Kubernetes] Kubernetes Pod | static Pod  (0) 2021.12.10
[Kubernetes] Kubernetes Pod | init container  (0) 2021.12.09
[Kubernetes] Kubernetes pod | pod 생성, 관리  (0) 2021.12.08
[Kubernetes] 쿠버네티스 아키텍쳐 | yaml, API  (0) 2021.12.07
[Kubernetes] 쿠버네티스 아키텍쳐 | namespace  (0) 2021.12.07
    'Cloud/Kubernetes' 카테고리의 다른 글
    • [Kubernetes] Kubernetes Pod | static Pod
    • [Kubernetes] Kubernetes Pod | init container
    • [Kubernetes] Kubernetes pod | pod 생성, 관리
    • [Kubernetes] 쿠버네티스 아키텍쳐 | yaml, API
    cho2cee
    cho2cee
    Today I Learned

    티스토리툴바