首页 > 解决方案 > Kubernetes 活跃度探测

问题描述

如何为我的 Spring Boot 应用程序编写 kubernetes 就绪探针,启动大约需要 20 秒?我尝试按照Configure Liveness、Readiness 和 Startup Probes中的示例进行操作,但我不确定 Kubernetes 如何将状态码 200 确定为成功

apiVersion: v1
kind: Pod
metadata:
  labels:
    app: backend
    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

标签: kubernetesgoogle-kubernetes-engine

解决方案


Kubernetes kubelet 将/healthz在您的应用程序的路径上发出一个 http 请求,并期望从该端点返回的 http 状态代码 200 以使探测成功。因此,您需要在休息控制器中有一个休息端点,它将从/healthz. 实现它的一种简单方法是包含 spring boot 执行器依赖项并将 liveness probe path 更改为/actuator/health/liveness. 默认情况下,Spring Boot 执行器带有一个休息控制器端点,该端点从/actuator/health/liveness.

https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-features.html#production-ready-kubernetes-probes


推荐阅读