我有一个程序,它有多个独立的1组件。
在所有组件中添加一个 liveness probe 是微不足道的,但是拥有一个 liveness probe 来确定所有程序组件的健康状况并不容易。
如何让 kubernetes 查看多个活性探针并在其中任何一个失效时重新启动容器?
我知道这可以通过添加更多软件来实现,例如一个额外的 bash 脚本来进行活性检查,但我正在寻找一种本地方式来做到这一点。
1独立是指一个组件的故障不会使其他组件发生故障。
我有一个程序,它有多个独立的1组件。
在所有组件中添加一个 liveness probe 是微不足道的,但是拥有一个 liveness probe 来确定所有程序组件的健康状况并不容易。
如何让 kubernetes 查看多个活性探针并在其中任何一个失效时重新启动容器?
我知道这可以通过添加更多软件来实现,例如一个额外的 bash 脚本来进行活性检查,但我正在寻找一种本地方式来做到这一点。
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
活性.sh
#!/bin/sh
if [ $(ps -ef | grep java | wc -l) -ge 1 ]; then
echo 0
else
echo "Nothing happens!" 1>&2
exit 1
fi
回顾消息处理可以在有问题的失败事件中看到的内容:“Warning Unhealthy Pod Liveness probe failed:没有任何反应!”
希望这可以帮助
它不这样做。该模型非常简单,每个容器一个探针,失败时遵循重启策略。
了解旧版应用程序的容器设计问题,但确实有很多方法可以安排资源共享以实现旧版兼容性。如果这个系统的组件已经是不同的进程,那么应该有一种方法将它们划分到容器中。
如果组件是线程或其他应用程序内模块化技术,那么活跃度确定确实必须来自应用程序内部。