4.5. 시작 프로브
시작 프로브는 서비스가 성공적으로 시작되었는지 여부를 확인하여 시작 프로세스가 느려지는 컨테이너의 콜드 시작 시간을 줄일 수 있습니다. 시작 프로브는 컨테이너의 초기화 단계에서만 실행되며 주기적으로 실행되지 않습니다. 시작 프로브가 실패하면 컨테이너가 정의된 restartPolicy
를 따릅니다.
4.5.1. 진행 기한
기본적으로 서비스에는 초기 시작을 완료하는 서비스의 시간 제한을 정의하는 진행 기한이 있습니다. 시작 프로브를 사용하는 경우 진행 기한이 시작 프로브에 필요한 최대 시간을 초과하도록 설정되어 있는지 확인합니다. 진행 기한이 너무 낮으면 시작 프로브가 데드라인에 도달하기 전에 완료되지 않아 서비스가 시작되지 않을 수 있습니다.
배포에 다음 조건이 발생하면 진행 기한을 늘리는 것이 좋습니다.
- 서비스 이미지는 크기 때문에 가져오는 데 시간이 오래 걸립니다.
-
초기 캐시 priming으로 인해 서비스가
준비
되기까지 시간이 오래 걸립니다. - 클러스터는 자동 스케일링을 사용하여 새 Pod에 리소스를 할당합니다.
4.5.2. 시작 검사 구성
OpenShift Serverless Serving의 경우 시작 프로브가 기본적으로 정의되지 않습니다. 배포 구성에서 컨테이너에 대한 시작 프로브를 정의할 수 있습니다.
프로세스
배포 구성을 수정하여 서비스에 대한 시작 프로브를 정의합니다. 다음 예제에서는 두 개의 컨테이너가 있는 구성을 보여줍니다.
정의된 별 프로브의 예
apiVersion: serving.knative.dev/v1 kind: Service # ... spec: template: spec: containers: - name: first-container image: <image> ports: - containerPort: 8080 # ... startupProbe: 1 httpGet: port: 8080 path: "/" - name: second-container image: <image> # ... startupProbe: 2 httpGet: port: 8081 path: "/"
4.5.3. 진행률 데드 구성
진행 상황 기한 설정을 구성하여 시스템에서 Knative 버전에 대한 실패를 보고하기 전에 배포에 허용되는 최대 시간을 지정할 수 있습니다. 이 시간 제한은 초 또는 분 단위로 지정할 수 있습니다.
진행 기한을 효과적으로 구성하려면 다음 매개변수를 고려하십시오.
-
initialDelaySeconds
-
failureThreshold
-
periodSeconds
-
timeoutSeconds
지정된 시간 제한 내에서 초기 스케일링을 달성하지 못하면 Knative Autoscaler 구성 요소가 버전을 0
으로 스케일링하고 Knative 서비스는 터미널 실패
상태가 됩니다.
기본적으로 진행 기한은 600초로 설정됩니다. 이 값은 Golang time.Duration
문자열로 지정되며 가장 가까운 초로 반올림해야 합니다.
프로세스
진행률 데드라인 설정을 구성하려면 배포 구성에서 주석을 사용합니다.
60초로 설정된 진행 상황 기한 예
apiVersion: serving.knative.dev/v1 kind: Service ... spec: template: metadata: annotations: serving.knative.dev/progress-deadline: "60s" spec: containers: - image: ghcr.io/knative/helloworld-go:latest