ABOUT ME

Today
Yesterday
Total
  • probe
    kubernetes 2023. 10. 27. 12:20

    https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/ (참고 사이트)

     

    Configure Liveness, Readiness and Startup Probes

    This page shows how to configure liveness, readiness and startup probes for containers. The kubelet uses liveness probes to know when to restart a container. For example, liveness probes could catch a deadlock, where an application is running, but unable t

    kubernetes.io

     



     kubectl describe pod liveness-exec

    출력 하단에는 활성 프로브가 실패했으며 실패한 컨테이너가 종료되고 다시 생성되었음을 나타내는 메시지가 있습니다.


    출력에는 RESTARTS증가된 것으로 표시됩니다. RESTARTS실패한 컨테이너가 다시 실행 상태로 돌아가자마자 카운터가 증가합니다 .
    구성 파일에서 Pod에 단일 Container.  periodSeconds필드는 kubelet이 5초마다 활성 프로브를 수행해야 함을 지정합니다.  initialDelaySeconds필드는 첫 번째 프로브를 수행하기 전에 5초를 기다려야 한다고 kubelet에 알려줍니다. 프로브를 수행하기 위해 kubelet은 cat /tmp/healthy대상 컨테이너에서 명령을 실행합니다. 명령이 성공하면 0을 반환하고 kubelet은 컨테이너가 살아 있고 건강한 것으로 간주합니다. 명령이 0이 아닌 값을 반환하면 kubelet은 컨테이너를 종료하고 다시 시작합니다.


     kubectl describe pod liveness-http



    kubectl get pod -o wide
    구성 파일에서 Pod에 단일 컨테이너가 있음을 확인할 수 있습니다.  periodSeconds필드는 kubelet이 3초마다 활성 프로브를 수행해야 함을 지정합니다.  initialDelaySeconds필드는 첫 번째 프로브를 수행하기 전에 3초를 기다려야 한다고 kubelet에 알려줍니다. 프로브를 수행하기 위해 kubelet은 컨테이너에서 실행 중이고 포트 8080에서 수신 대기 중인 서버에 HTTP GET 요청을 보냅니다. 서버 경로에 대한 핸들러가 /healthz성공 코드를 반환하면 kubelet은 컨테이너가 살아 있고 건강한 것으로 간주합니다. 핸들러가 실패 코드를 반환하면 kubelet은 컨테이너를 종료하고 다시 시작합니다.
    kubectl apply -f https://k8s.io/examples/pods/probe/tcp-liveness-readiness.yaml

     kubectl get pod -o wide
    apiVersion: v1
    kind: Pod
    metadata:
      name: goproxy
      labels:
        app: goproxy
    spec:
      containers:
      - name: goproxy
        image: registry.k8s.io/goproxy:0.1
        ports:
        - containerPort: 8080
        readinessProbe:
          tcpSocket:
            port: 8080
          initialDelaySeconds: 15
          periodSeconds: 10
        livenessProbe:
          tcpSocket:
            port: 8080
          initialDelaySeconds: 15
          periodSeconds: 10
    보시다시피 TCP 확인 구성은 HTTP 확인과 매우 유사합니다. 이 예에서는 준비 상태 및 활성 상태 프로브를 모두 사용합니다. kubelet은 컨테이너가 시작된 지 15초 후에 첫 번째 준비 프로브를 보냅니다. 그러면 포트 8080에서 컨테이너에 연결이 시도됩니다 goproxy. 프로브가 성공하면 포드가 준비된 것으로 표시됩니다. kubelet은 10초마다 이 확인을 계속 실행합니다.
    이 구성에는 준비 프로브 외에도 활성 프로브가 포함됩니다. kubelet은 컨테이너가 시작된 후 15초 후에 첫 번째 활성 프로브를 실행합니다. 준비 프로브와 유사하게 이는 포트 8080에서 컨테이너에 연결을 시도합니다 goproxy. 활성 프로브가 실패하면 컨테이너가 다시 시작됩니다.

     

     

    'kubernetes' 카테고리의 다른 글

    라벨 실습  (0) 2023.10.27
    라벨  (0) 2023.10.27
    hostpath  (0) 2023.10.27
    empty  (0) 2023.10.27
    클러스터 배포명세서  (0) 2023.10.27
Designed by Tistory.