티스토리 뷰

클라우드/쿠버네티스

Probe 설정

ybchoi 2022. 5. 10. 11:03

Kubernetes에서 Pod내 서비스나 상태를 직접 모니터링 하여 알맞은 조치를 취하게 함

 

총 3가지 Probe가 있음 여러개의 프로브를 여러가지 체크 메커니즘을 이용하여 복합적으로 사용할수도 있음

 

일반적으로 Readiness와 Liveness를 모두 설정하는것이 좋다

 

쿠버네티스 구조상 프로브 없이는 파드내 pid1번만 감시하므로 실제 서비스 장애나 로직 문제에 대응할수 없음 운영 앱에 대한 프로브 설정은 필수 사항

liveness프로브를 설정하지 않을경우 실제 앱이 구동되기전에 트래픽이 가기 시작하므로 짧은시간이지만 장애가 발생할수 있음

가장 좋은 방법은 probe로 실제 앱의 로직을 테스트 하는것

 

 

Readiness Probe

준비성 프로브의 경우 파드의 준비 상태를 체크 한다

기본적으로 설정되어있지 않다면 True상태이며 pod가 running됨과 동시에 Ready는 True가 되어 트래픽이 전달되기 시작함

구동이 오래걸리는 앱이나 실제 서비스를 체크하여 준비되기(앱이 가동되어 트래픽을 받은준비)전 Pod에 트래픽을 보내지 않을때 사용한다(Endpoint)

준비성 프로브의 경우 컨테이너를 재시작하거나 하진 못하고 엔드포인트만 관여 한다

 

Liveness Probe

활성 프로브의 경우 실제 서비스가 살아있는지 체크하는 용도로 사용하며 활성프로브가 일정횟수 이상 실패시 컨테이너를 재시작 할 수 있다

 

Startup Probe

위 2가지 프로브를 지연 시켜주는 프로브

스타트업 프로브가 성공해야만 나머지 프로브가 작동 되기 시작한다 스타트업 프로브가 실패할 경우 컨테이너를 재시작 할 수 있다

 

 

체크 메커니즘

 

3가지 프로브 모두 상태를 체크하는 방법은 동일하며 아래의 3가지 중 적당한것을 골라 선택하여 사용한다

 

exec

컨테이너 내에서 지정된 명령어를 실행한다, 명령어 상태코드가 0이면 성공한것으로 판단하고 이외에는 실패로 간주 한다

 

httpGet

지정한 포트 및 경로에서 http GET요청을 수행한다 상태코드가 200~400미만이면 성공으로 간주 한다

 

tcpSocket

지정한 포트에서 TCP검사를 수행한다 포트가 오픈되어있으면 성공으로 간주한다

 

 

 

  • 사용예제
     
apiVersion: v1
kind: Pod
metadata:
  name: goproxy
  labels:
    app: goproxy
spec:
  containers:
  - name: goproxy
    image: k8s.gcr.io/goproxy:0.1
    ports:
    - containerPort: 8080
    readinessProbe:
      tcpSocket:
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 10
    livenessProbe:
      tcpSocket:
        port: 8080
      initialDelaySeconds: 15
      periodSeconds: 20
    startupProbe:
      httpGet:
        path: /healthz
        port: liveness-port
 

 

위와같이 설정시 최초 컨테이너 구동이후 localhost/healthz 로 http GET을 하다가 성공하면 준비성 프로브가 작동되기 시작한다 이후 8080포트에 TCP검사가 성공하면 컨테이너의 상태를 Ready로 바꾸고 EP에 해당 파드가 추가되어 트래픽이 가기 시작한다

이와동시에 활성프로브는 동일하게 8080포트로 TCP검사를 수행하다가 포트 연결 실패시 컨테이너를 재시작하여 정상화를 시도하게 된다

initialDelaySeconds 값은 초기 지연시간을 나타내는 값이며 periodSeconds 는 몇초마다 수행 할것인지에 대한 값이다

최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
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 31
글 보관함