【问题标题】:Deploying application which is not a web app? Kubernetes部署不是 Web 应用程序的应用程序? Kubernetes
【发布时间】:2021-02-04 17:12:41
【问题描述】:

我正在尝试将 pod 部署到集群。我正在部署的应用程序不是 Web 服务器。我在设置 liveness 和 readiness 探针时遇到了问题。通常,我会为此使用 /isActive 和 /buildInfo 端点之类的东西。

我读过这个https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-a-liveness-command

想知道我是否需要编写一种机制来创建一个文件,然后以某种方式从 deployment.yaml 文件中探测它?

编辑:这是我用来保持容器运行的方法,不确定这是否是最好的方法?

- touch /tmp/healthy; while true; do sleep 30; done;

【问题讨论】:

  • 您的应用程序是做什么的?它是否使用其他协议响应请求?或者它在做什么?

标签: kotlin kubernetes deployment


【解决方案1】:

在您的应用程序中创建文件只是为了进行活性探测是没有意义的。在 K8s 文档中,这只是向您展示 exec 命令探测如何工作的示例。

活性探测背后的想法是双向的:

  1. 在您的 Pod 完全启动之前避免它们上的流量。
  2. 检测由于缺乏资源或应用程序主进程仍在运行的死锁而无响应的应用程序。

鉴于您的部署似乎不需要外部流量,因此您不需要针对第一种情况进行活跃度探测。关于第二种情况,问题是您的应用程序如何锁定以及您将如何注意到外部,例如通过监控日志文件或类似文件。

请记住,K8s 仍会监控您的应用程序主进程是否正在运行。因此,如果您的应用程序在没有活性探测的情况下停止运行,仍然会在应用程序故障时重新启动。因此,如果您可以相当确定您的应用程序在运行时不会出现无响应的情况,那么您也可以不使用 liveness probe。

【讨论】:

  • LivenessProbe 主要用于解决锁定的情况或部分崩溃的情况。
  • 公平点 - 由于其他原因而锁定或无响应也是一个问题。已相应地修改了我的答案。
猜你喜欢
  • 2020-02-06
  • 2018-08-17
  • 2019-10-20
  • 1970-01-01
  • 2016-02-12
  • 2019-01-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多