kubernetes - 准备就绪探针失败,但仍在运行,并且EndPoint不会删除 pods ID

标签 kubernetes

我描述了 pod 。我发现了错误信息。似乎Pod Readiness探针失败。但是我检查了端点,端点没有删除pod IP。 Pod接收流量,即使 Activity 探测失败。

  Warning  Unhealthy  92s (x84 over 3d1h)  kubelet, aks-agentpool-xxxxx Readiness probe failed: Get https://10.244.14.21:5001/api/alive: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
$ kubectl describe ep myapp
Name:         myapp
Namespace:    default
Labels:       <none>
Annotations:  <none>
Subsets:
  Addresses:          10.244.14.21,10.244.24.34
  NotReadyAddresses:  <none>
  Ports:
    Name    Port  Protocol
    ----    ----  --------
    legacy  5001  TCP
    https   5001  TCP

Events:  <none>


我想知道如果准备失败了怎么办?

最佳答案

实践

It seems the pod Readiness probe is failed. But I check the endpoint, the endpoint doesn't remove the pod IP.



当您检查Pod时,该Pod处于健康状态,并且您看到的Warning只是说在某些情况下Readiness探测失败。

请注意,如果就绪探测器失败,则端点 Controller 将从与Pod匹配的所有服务的端点中删除Pod的IP地址(在就绪探测器成功后会重新添加)。

你可以用$ kubectl describe svc/YOUR_SERVICE

在您执行命令时,它将输出为该服务的流量服务的端点(EP)列表。

如果EP就绪探针失败,则EP不会在该命令的输出中列出。

从您提供的输出中:
$ kubectl describe ep myapp
...
Subsets:
  Addresses:          10.244.14.21,10.244.24.34
  NotReadyAddresses:  <none>

我们可以说目前所有EP都已准备就绪。

理论

I want to know what if readiness failed?



简而言之:流量将被重定向到其他EP,直到该EP重新准备就绪。

关于Readiness probe的官方文档说:

Probe是由Container上的kubelet定期执行进行的诊断。为了执行诊断,kubelet调用由Container实现的Handler

kubelet可以选择对正在运行的Container进行三种探测并对其使用react:
-livenessProbe
-准备就绪探针
-startupProbe
readinessProbe:指示容器是否准备好服务请求。 如果准备就绪探针失败,则端点 Controller 从与Pod匹配的所有服务的端点中删除Pod的IP地址。初始延迟之前的默认就绪状态为Failure。如果容器未提供就绪探测器,则默认状态为Success

希望这正是您一直在寻找的信息。

关于kubernetes - 准备就绪探针失败,但仍在运行,并且EndPoint不会删除 pods ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59419074/

相关文章:

kubernetes - Terraform Kubernetes 供应商 "local-exec"kubectl apply -f -<<EOF 在 Windows 上不起作用

linux - 在 elasticsearch_exporter 容器上安装 python3 python3-pip 和 awscli

mongodb - 使用 mongodb+srv 连接到部署为有状态集的 mongodb

kubernetes - 如何创建具有特定节点池的命名空间

kubernetes - 通过荚内的 “x509: certificate signed by unknown authority”来获取错误信息

docker - Kubernetes Pods `ErrImagePull` 是什么意思?

go - kubernetes 服务对象的命中数

amazon-web-services - 在 route53 中没有这样的主机

kubernetes - 如何显示 helm 修订版的完整描述?

kubernetes - Swagger-ui在GKE 1.9上