san*_*ndy 6 kubernetes kubernetes-health-check readinessprobe livenessprobe
我想知道是否有可能对 Pod 中的多个容器或仅对 Pod 中的一个容器应用活性和就绪性探测检查。我确实尝试检查多个容器,但容器 A 的探测检查失败,而容器 B 中的探测检查通过。
欢迎来到社区。
\n回答
\n绝对可以对 Pod 内的容器应用多个探测器。接下来会发生什么取决于探测器。
\n容器探针中列出了三个可以使用的探针:liveness
、readiness
和startup
。我将详细描述liveness
和readiness
:
活力
\n\n\n\n
livenessProbe
:表示容器是否正在运行。如果探测liveness
失败,kubelet 将终止容器,并且容器将遵循其重新启动策略。如果容器不提供\n探测liveness
,则默认状态为成功
\n\nkubelet 使用活性探针来了解何时重新启动容器。\n例如,活性探针可能会捕获死锁,\n应用程序正在运行,但无法取得进展。在这种状态下重新启动\n容器有助于提高应用程序\n的可用性,尽管存在错误。
\n
如果livenessProbe
失败,kubelet
将重新启动 POD 中的容器,POD 将保持不变(其年龄也是如此)。
也可以签入container events
,此报价来自Kubernetes in Action - Marko Luk\xc5\xa1a
\n\n我\xe2\x80\x99在很多情况下都看到过这种情况,用户很困惑为什么他们的容器被重新启动。但是,如果他们\xe2\x80\x99d 使用了
\nkubectl describe
,\n他们\xe2\x80\x99d 已经看到容器以退出代码 137 或\n143 终止,告诉他们 pod 已从外部终止
准备状态
\n\n\n\n
readinessProbe
:指示容器是否已准备好响应请求。如果readiness
探测失败,端点控制器将从与 Pod 匹配的所有服务的端点中删除 Pod 的 IP 地址。readiness
初始延迟之前的默认状态是失败。如果容器不提供readiness
探测,\n默认状态为成功
\n\nkubelet 使用就绪探针来了解容器何时准备好\n开始接受流量。当 Pod 的所有容器都准备就绪时,\n该 Pod 就被视为准备就绪。此信号的一种用途是控制将哪些 Pod 用作服务的后端。当 Pod 未就绪时,\n它会从服务负载均衡器中删除。
\n
这里发生的情况是 kubernetes 检查容器中的 Web 服务器是否正在处理请求,如果没有,readinessProbe
则会失败,并且 POD 的 IP(一般来说整个 POD)将从端点中删除,并且不会将任何流量定向到 POD。
有用的链接
\ntypes
小智 0
根据 K8S 规范,可以对每个容器执行活动性和就绪性检查,并携带自己的模板,该模板嵌套在特定容器中。例如,请参阅:https://raw.githubusercontent.com/kubernetes/website/main/content/en/examples/pods/probe/exec-liveness.yaml。
所以我认为这实际上取决于您在探针中检查的内容以及容器A如何以与容器B不同的方式进行回答。
如果您需要模板,您应该考虑kustomize
归档时间: |
|
查看次数: |
7436 次 |
最近记录: |