Docker kubernetes中的探测器能告诉基础设施服务肯定失败了吗?
如果我在启动过程中知道我的服务无法正常工作。。有什么我可以从其中一个探测器返回的信息会告诉Kubernetes,如果pod不再可用,需要重新启动的话,我可以这样做吗 目前据我所知,唯一的答案是200-399,这将被视为“成功”,其他任何被视为失败。还有其他选择吗Docker kubernetes中的探测器能告诉基础设施服务肯定失败了吗?,docker,kubernetes,Docker,Kubernetes,如果我在启动过程中知道我的服务无法正常工作。。有什么我可以从其中一个探测器返回的信息会告诉Kubernetes,如果pod不再可用,需要重新启动的话,我可以这样做吗 目前据我所知,唯一的答案是200-399,这将被视为“成功”,其他任何被视为失败。还有其他选择吗 否,除了您链接的文档中描述的3种方法外,没有其他方法可以检测: 检测响应代码的HTTP检查 TCP探测检查端口是否打开 在容器中运行脚本并检查其退出代码的Exec 在您的情况下,可能可以使用execcheck和类似于标志文件的东西 例如
否,除了您链接的文档中描述的3种方法外,没有其他方法可以检测:
exec
check和类似于标志文件的东西
例如,您的应用程序可以创建一个文件“/tmp/iamdead”,您可以创建一个活度探测器,如:
livenessProbe:
exec:
command:
- sh
- -c
- "cat /tmp/iamdead; if [ $? -eq 0 ]; then exit 1; fi"
否,除了您链接的文档中描述的3之外,没有其他方法可以检测:
exec
check和类似于标志文件的东西
例如,您的应用程序可以创建一个文件“/tmp/iamdead”,您可以创建一个活度探测器,如:
livenessProbe:
exec:
command:
- sh
- -c
- "cat /tmp/iamdead; if [ $? -eq 0 ]; then exit 1; fi"
您应该在部署中使用
readinessProbe
,检查您的pod是否准备好为请求提供服务。
ReadinessProbe有三种类型(HTTP、TCP、Exec),基础结构需要的类型应该是Exec
,因为您可以在shell中运行命令来测试它。请遵循以下步骤,例如:-
readinessProbe:
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 5
periodSeconds: 5
同样,您也应该配置exec
livensesprobe
livenessProbe:
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 5
periodSeconds: 5
参考:-
您应该在部署中使用
readinessProbe
,检查您的pod是否准备好为请求提供服务。
ReadinessProbe有三种类型(HTTP、TCP、Exec),基础结构需要的类型应该是Exec
,因为您可以在shell中运行命令来测试它。请遵循以下步骤,例如:-
readinessProbe:
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 5
periodSeconds: 5
同样,您也应该配置exec
livensesprobe
livenessProbe:
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 5
periodSeconds: 5
参考:-
如果您的流程可以确定它处于无法解决的状态,则无需等待探测发生;它可以自行退出,Kubernetes将重新启动它。具体如何实现这一点取决于您的语言,但通常有一个名为
exit()
的函数,或者如果您的语言有异常,抛出异常而不捕获它通常会终止程序
从Kubernetes的观点来看,这看起来非常类似于活性探测失败。容器将终止并重新启动;如果这样做的次数超过两次,集群将开始延迟重启,状态为
CrashLoopBackOff
。在退出之前,通过编写诊断消息给自己留下提示是很有帮助的,这样kubectl日志将解释进程一直退出的原因。如果您的进程可以确定它处于无法退出的状态,则无需等待探测发生;它可以自行退出,Kubernetes将重新启动它。具体如何实现这一点取决于您的语言,但通常有一个名为exit()
的函数,或者如果您的语言有异常,抛出异常而不捕获它通常会终止程序
从Kubernetes的观点来看,这看起来非常类似于活性探测失败。容器将终止并重新启动;如果这样做的次数超过两次,集群将开始延迟重启,状态为CrashLoopBackOff
。在退出之前,通过编写诊断消息给自己留下提示是很有帮助的,这样kubectl日志将解释为什么进程一直在退出。如果活动探测失败,kubelet将重新启动pod。你想让其他东西做同样的事情吗?如果你的进程是肯定的,它处于不可挽救的状态,它可以通过某种方便的方式退出自己(抛出异常,调用某种本机的exit
函数,使用Go的panic
)。这将导致它重新启动,而不必涉及探测路径。谢谢@DavidMaze。这更有道理。@DavidMaze,请将其作为答案发布。如果活性探测失败,库贝莱特将重新启动pod。你想让其他东西做同样的事情吗?如果你的进程是肯定的,它处于不可挽救的状态,它可以通过某种方便的方式退出自己(抛出异常,调用某种本机的exit
函数,使用Go的panic
)。这将导致它重新启动,而不必涉及探测路径。谢谢@DavidMaze。这更有道理。@DavidMaze,请将其作为答案发布。谢谢。他没有要求其他方法。我只是问,在HTTP探测的情况下,是否有一个可以返回的错误将被回收。谢谢谢谢他没有要求其他方法。我只是问,在HTTP探测的情况下,是否有一个可以返回的错误将被回收。谢谢