就绪探测失败后是否重试探测 Pod

Is probing of a Pod retried after a readiness probe fails

readinessProbe: Indicates whether the container is ready to respond to requests. If the readiness probe fails, the endpoints controller removes the Pod's IP address from the endpoints of all Services that match the Pod. The default state of readiness before the initial delay is Failure. If a Container does not provide a readiness probe, the default state is Success

如果就绪探测失败(并且 Pod 的 IP 地址从端点移除),接下来会发生什么? 是否会再次检查 Pod 的就绪探测条件?它会在初始延迟后再次检查吗? Pod 的 IP 地址是否有可能再次添加到端点(如果 Pod 在就绪探测失败后自我修复)?如果 Pod 恢复正常,它会再次接收流量吗?

在与往常相同的 periodSeconds 延迟后再次检查它,然后当它连续通过 successThreshold 次时,它将再次被视为准备就绪,所有正常行为都需要。

will the pod's readiness prob conditions checked again?

是的,将根据您设置的阈值再次检查条件。

每次 periodSeconds 都会检查 POD 的配置准备情况。

will it check again after the initial delay?

它只会在初始延迟后检查。当 POD 正在初始化或启动时,初始延迟会出现。就绪检查将等待配置的时间,然后在每个时间间隔开始检查 POD 的就绪情况,假设每 5 秒或 10 秒取决于 periodSeconds 的配置。

are there any chance pod's ip address added to the end point again(if pod self healed after readiness probe fails)?

Yes if get auto healed mean, successThreshold set to 1 time if POD give 200 one it will marked as heal and 运行 pod 在这种情况下 POD 会得到又堵车了。

will the pod ever receive traffic again incase if it's healed?

例如:

readinessProbe:
            httpGet:
              path: /k8/readiness
              port: 9595
            initialDelaySeconds: 25
            periodSeconds: 8
            timeoutSeconds: 10
            successThreshold: 1
            failureThreshold: 30
        livenessProbe:
            httpGet:
              path: /k8/liveness
              port: 9595
            initialDelaySeconds: 30
            periodSeconds: 8
            timeoutSeconds: 10
            successThreshold: 1
            failureThreshold: 30

准备和活动探测将检查配置中提到的 HTTP 端点的状态。

initialDelaySeconds :它只会在您的 POD 初始化或由于重启或其他原因再次启动时出现。因此,当 POD 开始就绪时,直到 30 秒才会检查服务状态。

30 seconds 之后,它将尝试检查端点上的状态。如果成功,POD 将处于 就绪 状态以处理流量,否则它将尝试另一次 periodSeconds 所以在 8 秒后如果我们 200 response POD 将 Ready,它将重试,否则将在 8 秒后尝试。

timeoutSeconds:单跳或请求将等待从服务获得响应的时间,否则标记为检查失败。

failureThreshold :此 POD 将根据配置活跃度或准备情况启动或更改为“未就绪”状态后失败检查的最大次数。

successThreshold :成功阈值表示如果单个请求从服务 POD 状态获得成功响应,则更改为 Ready.

如果连续发生 30 failureThreshold 则只有 POD 会被标记为 未准备好 如果介于 single successThreshold 发生的 POD 将被标记为 Ready 与 liveness 相同。

注意:以上示例仅供参考,不能用于实际生产场景。

阅读更多信息:https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/