backend/kubernetes in action

[kubernetes in action] 5.5. Signaling when a pod is ready to accept connections

seul chan 2020. 6. 9. 22:28

5.5. Signaling when a pod is ready to accept connections

Introducing readiness probes

container의 readiness probe가 성공하면 해당 컨테이너는 request를 받을 준비가 된 것

liveness probe와는 다르게 readiness가 실패해도 pod가 제거되거나 다시 시작되지는 않는다.

Adding a readiness probe to a pod

$ kubectl edit rc kubia

Add spec.template.spec.containers. in kubia-rc-readnessprobe.yaml

apiVersion: v1
kind: ReplicationController
metadata:
  name: kubia
spec:
  replicas: 3
  selector:
    app: kubia
  template:
    metadata:
      labels:
        app: kubia
    spec:
      containers:
      - name: kubia
        image: luksa/kubia
        ports:
        - name: http
          containerPort: 8080
        readinessProbe:
          exec:
            command:
            - ls
            - /var/ready
$ kubectl get po
NAME                                               READY   STATUS              RESTARTS   AGE
kubia-b2dgr                                        0/1     Running            0          32s
kubia-m7cff                                        0/1     Running            0          32s
kubia-nj6vj                                        0/1     Running            0          32s

준비될 때까지 READY가 활성화 되지 않는 것을 볼 수 있음

이제 kubia-b2dgr에만 /var/ready 파일을 만들어보자.

$ kubectl exec kubia-b2dgr -- touch /var/ready

$ kubectl get po
NAME                                               READY   STATUS              RESTARTS   AGE
kubia-b2dgr                                        1/1     Running            0          82s
kubia-m7cff                                        0/1     Running            0          82s
kubia-nj6vj                                        0/1     Running            0          82s

Understanding what real-world readiness probes should do

아주 간단한 (HTTP request를 받는 서버) 앱이라도 readniess probe를 두어야 한다.