kuberenetes 中的多个活性探针

sty*_*fly 6 kubernetes kubernetes-health-check

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

在所有组件中添加活性探测器很简单,但是拥有一个可以确定程序所有组件的运行状况的活性探测器并不容易。

如何让 kubernetes 查看多个活性探测器并在其中任何一个探测器失效时重新启动容器?

我知道这可以通过添加更多软件来实现,例如一个额外的 bash 脚本来进行活性检查,但我正在寻找一种本地方法来做到这一点。


1独立是指一个组件的故障不会导致其他组件发生故障。

pau*_*ell 6

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

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

Run Code Online (Sandbox Code Playgroud)

或者尝试对同一任务执行一次 bash,例如:

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

Run Code Online (Sandbox Code Playgroud)

活力.sh

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

回顾一下消息处理在相关失败事件中可以看到的内容:“警告不健康 Pod 活性探测失败:没有任何反应!”

希望这可以帮助


Jon*_*ton 0

它不会那样做。该模型非常简单,每个容器一个探针,遵循失败时的重新启动策略。

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

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