쿠버네티스 교육/강의 내용 정리

220628_1_k8s_프로브-readinessProbe

kimhope 2022. 6. 28. 15:18
728x90

readinessProbe


readinessProbe란?

컨테이너 실행 후 실제로 서비스 요청에 응답할 수 있는지 진단

  • ready 상태 확인
  • 진단 실패 시 엔드포인트 컨트롤러는 해당 파드에 연결된 모든 서비스를 대상으로 엔드포인트 정보를 제거함

 

readinessProbe 종류

항목 설명
HTTP GET - 특정 경로에 HTTP GET 요청
- HTTP 응답 코드 2xx 또는 3xx인지 확인
TCP Socket 특정 TCP Port 연결 시도 (TCP syn, syn+ack, ack)
Exec 컨테이너 내부에 바이너리(명령)를 실행하고 종료 코드로 확인

 


 

실습

Ready 상태가 아닌 파드는 readinessProbe가 작동하여 엔드포인트에 연결되지 않음

  • 레플리카셋 생성 파일
$ cat myapp-rs-readiness.yml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: myapp-rs-readiness
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp-rs-readiness
  template:
    metadata:
      labels:
        app: myapp-rs-readiness
    spec:
      containers:
      - name: myapp
        image: ghcr.io/c1t1d0s7/go-myweb:alpine
        readinessProbe:
          exec:
            command:
              - ls
              - /var/ready
        ports:
        - containerPort: 8080

 

 

  • 서비스 생성 파일
$ cat myapp-svc-readiness.yml
apiVersion: v1
kind: Service
metadata:
  name: myapp-svc-readiness
spec:
  ports:
  - port: 80
    targetPort: 8080
  selector:
    app: myapp-rs-readiness

 

  • 레플리카셋, 서비스 생성
$ kubectl create -f myapp-rs-readiness.yml -f myapp-svc-readiness.yml
replicaset.apps/myapp-rs-readiness created
service/myapp-svc-readiness created

 

실행 결과

  • 생성된 파드, 엔드포인트, 서비스 정보 확인
  • 생성된 파드의 READY가 0/1 상태임을 확인 => 준비된 상태가 아님
  • myapp-svc-readiness 서비스의 엔드포인트가 비어있음 => 트래픽을 받지 않음
$ kubectl get po,ep,svc -o wide

728x90