kubernetes Kuberenetes中的多个活性探针

x0fgdtte  于 2023-03-17  发布在  Kubernetes
关注(0)|答案(3)|浏览(139)

我有一个包含多个独立组件的程序。
在所有组件中添加一个活跃度探测器是很简单的,但是拥有一个 * 单个 * 活跃度探测器来确定程序所有组件的健康状况并不容易。
如何让kubernetes查看多个活动探测器,并在其中任何一个失效时重新启动容器?
我知道这可以通过添加更多软件来实现,例如一个额外的bash脚本来执行活动性检查,但我正在寻找一种原生的方法来完成这项工作。
1我所说的独立性是指一个组件的故障不会导致其他组件的故障。

7xzttuei

7xzttuei1#

Kubernetes API允许每个应用程序(部署/ POD)有一个活动性和一个就绪性。我建议创建一个具有端点休息的验证集中服务:

livenessProbe:
  httpGet:
    path: /monitoring/alive
    port: 3401
    httpHeaders:
    - name: X-Custom-Header
      value: Awesome
  initialDelaySeconds: 15
  timeoutSeconds: 1
  periodSeconds: 15

或者尝试对同一个任务进行一次猛击,例如:

livenessProbe:
  exec:
    command:
      - bin/bash
      - -c
      - ./liveness.sh
  initialDelaySeconds: 220
  timeoutSeconds: 5

liveness.sh

#!/bin/sh
if [ $(ps -ef | grep java | wc -l) -ge 1 ]; then
  echo 0
else
  echo "Nothing happens!" 1>&2
    exit 1
fi

回顾消息处理可以在所讨论的故障事件中看到的内容:“警告不健康Pod活动探测失败:什么都没发生!”
希望这能帮上忙

tvz2xvvm

tvz2xvvm2#

它不这样做,模型很简单,每个容器一个探测器,遵循失败时重启策略。
理解传统应用的容器设计问题,但是为了兼容传统应用,确实有很多方法可以安排资源共享。如果这个系统的组件已经是不同的进程,那么应该有一种方法可以将它们划分到容器中。
如果组件是线程或其他一些应用程序内部模块化技术,那么活动性的确定就必须来自应用程序内部。

dxxyhpgq

dxxyhpgq3#

对于这种情况,创建自定义脚本,根据需求处理多个情况,并为容器给予单个输出作为就绪响应。这将被视为Kubernetes生命周期管理的最终决策

相关问题