본문 바로가기

⭐ Kubernetes & EKS/Kubernetes (쿠버네티스)

쿠버네티스 - pod - 라이브니스 프로브, 레디니스 프로브 구성

728x90
반응형

# 라이브니스, 레디네스, 스타트업 프로브 구성
Liveness, Readiness and Startup Probes

# Liveness Probe
컨테이너 살았는지 판단하고 다시 시작하는 기능
컨테이너의 상태를 스스로 판단하여 교착 상태에 빠진 컨테이너를 재시작
버그가 생겨도 높은 가용성을 보임

# Readiness Probe
포드가 준비된 상태에 있는지 확인하고 정상 서비스를 시작하는 기능
포드가 적절하게 준비되지 않은 경우 로드밸런싱을 하지 않음

# Startup Probe
애플리케이션의 시작 시기 확인하여 가용성을 높이는 기능
Liveness와 Readiness의 기능을 비활성화

# 쿠버네티스 - pod - 라이브니스, 레디니스 프로브 구성

- 라이브니스 프로브 : 컨터이너 상태를 파악하고 문제가 있으면 다시 시작하는 기능

- 레디니스 프로브 : 포드가 준비된 상태인지 확인, 정상 서비스를 시작하는 기능, 포드가 정상적으로 준비되어 있지 않으면 로드 밸런싱을 하지 않음

- 스타트업 프로브 : 컨테이너가 시작될때 정상적으로 실행되는지 체크 후 라이브니스와 레드니스의 서비스가 진행된다.

- 쿠버네티스 문서 사이트에서 https://kubernetes.io/docs/ > liveness probe 검색

Configure Liveness, Readiness and Startup Probes | Kubernetes

- 위의 검색항목으로 들어감

- 화면의 중간에 있는 pods/probe/exec-liveness.yaml 파일을 기반으로 작성함

- 위의 exec-liveness.yaml 파일의 내용을 복사

# 복사한 내용을 yaml 파일로 생성하기

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

- 위의 내용 저장후 나가기

# 라이브네스 실행하기

kubectl create -f exec-liveness.yaml

kubectl get pod

# 라이브네스 이벤트 확인하기

kubectl describe pod liveness-exec

- describe와 get pod를 사용하여 pod을 보면 죽었다가 다시 살아나는 과정들을 볼 수 있다.

# 2번째 테스트 : Define a liveness HTTP request

- 위의 쿠버네티스 문서 사이트에서 조금더 아래로 내려가보면 내용을 찾을 수 있다.

gedit http-liveness.yaml
apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness-http
spec:
  containers:
  - name: liveness
    image: k8s.gcr.io/liveness
    args:
    - /server
    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
        httpHeaders:
        - name: Custom-Header
          value: Awesome
      initialDelaySeconds: 3
      periodSeconds: 3
kubectl create -f http-liveness.yaml

kubectl get pod

kubectl get pod -w

# describe로 서비스 정보 확인하기

kubectl describe pod liveness-http

# Define a TCP liveness probe

gedit tcp-liveness-readiness.yaml
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
kubectl apply -f https://k8s.io/examples/pods/probe/tcp-liveness-readiness.yaml

kubectl get pod

kubectl describe pod  goproxy

- 스케줄링 내용을 확인 할 수있다.

728x90
반응형