kubernetes - 如何利用 Kubernetes readinessProbe 在不重启 Pod 的情况下自行修复 Pod?
问题描述
根据此文档,我看到 readinessProbe 可用于暂时停止对 pod 的请求,而无需重新启动它即可正常恢复。
当我看到 pod 事件时,看起来 pod 在 Readiness 探测失败时重新启动。以下是事件:
1. Readiness probe failed
2. Created container
3. Started container
4. Killing container with id {}
尝试将容器 restartPolicy 修改为 OnFailure,希望此配置在 readinessProbe 失败时决定 pod 操作,但我看到以下错误:
The Deployment {} is invalid: spec.template.spec.restartPolicy: Unsupported value: "OnFailure": supported values: "Always"
哪种方法可以停止对 pod 的请求,而无需重新启动它并让应用程序正常恢复?
解决方案
有两种类型的探头。由于活动探测失败而发生重新启动。 https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/
活体探针
kubelet 使用 liveness probes 来了解何时重启 Container。例如,活跃度探针可以捕获死锁,即应用程序正在运行,但无法取得进展。尽管存在错误,但在这种状态下重新启动 Container 有助于使应用程序更加可用。
准备探测
有时,应用程序暂时无法提供流量。例如,应用程序可能需要在启动过程中加载大数据或配置文件,或者在启动后依赖外部服务。在这种情况下,您不想杀死应用程序,但也不想向它发送请求。Kubernetes 提供就绪探针来检测和缓解这些情况。带有容器报告它们尚未准备好的 pod 不会通过 Kubernetes 服务接收流量。
今天我发现了一篇关于探针的非常好的文章https://blog.colinbreck.com/kubernetes-liveness-and-readiness-probes-how-to-avoid-shooting-yourself-in-the-foot/
推荐阅读
- android - 如何在 android 中使 EditText 在 4 或 5 行后可滚动?
- azure - 存储帐户和应用服务上的静态网站
- yaml - 如何使用 YAML 条件插入添加乘法变量
- python - 在运行时装饰类方法
- mysql - 我们如何使用查询检索用户帐户的两个电子邮件地址?
- python - 使用 Openpyx 保存文件 Excel 而不会丢失数据
- huawei-developers - HMS 地图显示为空
- javascript - 错误:/storage/emulated/0/saved_signature/signature.png(没有这样的文件或目录)在本机反应
- python - 计算熊猫组内列中元素的百分比
- java - 如何在 Spring Boot Thymeleaf 中获取当前登录的用户数据?