在kuberenetes中的多个活体探针

时间:2018-03-08 12:05:49

标签: kubernetes kubernetes-health-check

我有一个程序,它有多个独立的 1 组件。

在所有组件中添加活跃度探测是微不足道的,但是单个活动探测并不容易确定所有程序的健康状况&#39 ; s组件。

如何让kubernetes查看多个活动探测并在其中任何一个发生故障时重新启动容器?

我知道可以通过添加更多软件来实现,例如执行活动检查的额外bash脚本,但我正在寻找一种本地方式来执行此操作。

1 独立意味着一个组件的故障不会使其他组件失效。

2 个答案:

答案 0 :(得分:1)

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

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

或尝试执行一项bash来完成相同任务,例如:

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 Liveness探针失败:没有任何反应!”

希望这会有所帮助

答案 1 :(得分:0)

它没有那样做。该模型非常简单,每个容器一个探针,在失败时遵循重启策略。

了解遗留应用程序的容器设计问题,但确实有很多方法可以安排资源共享以保持旧版兼容性。如果这个系统的组件已经是不同的进程,那么应该有一种方法将它们分成容器。

如果组件是线程或其他一些应用程序内模块化技术,那么活跃度确定必须来自应用程序内部。