Kubernetes liveness探测器是否与应用程序并行运行?
我有一个运行在Kubernetes上的吊舱,我正在为它设计一个活度探测器。我的应用程序从队列中读取(通过一个循环不断搜索新消息并执行其他函数(如果找到了)并且没有通过HTTP公开,因此我需要一个命令活性探测。我正在考虑一个简单的实现是否有效:Kubernetes liveness探测器是否与应用程序并行运行?,kubernetes,health-monitoring,livenessprobe,Kubernetes,Health Monitoring,Livenessprobe,我有一个运行在Kubernetes上的吊舱,我正在为它设计一个活度探测器。我的应用程序从队列中读取(通过一个循环不断搜索新消息并执行其他函数(如果找到了)并且没有通过HTTP公开,因此我需要一个命令活性探测。我正在考虑一个简单的实现是否有效: livenessProbe: exec: command: - cat - /tmp/healthy 但是,即使应用程序在循环中的某个点被“卡住”,我也不确定cat是否会成功-文件仍然会在那里。
livenessProbe:
exec:
command:
- cat
- /tmp/healthy
但是,即使应用程序在循环中的某个点被“卡住”,我也不确定cat是否会成功-文件仍然会在那里。
这可以归结为我对liveness Probe缺乏基本的了解,我在文档中找不到这一点——可能它们与您的应用程序以某种方式串联运行,因此如果您的应用程序未运行,该命令将无法执行?但在这一点上我没有信心
如果该命令可以并行执行,那么我相信我将需要某种时间戳检查,在这种情况下,我在每个循环上更新一个文件,并且活动性探测器检查其时间戳。如果第一种方法有效,它会更简单,但有人能证实是否是这样吗?谢谢
编辑:我的应用程序代码。我在sleep(60)中添加了liveness probe,试图测试如果文件在一分钟内没有更新,liveness probe是否会失败,但它们不会成为普通应用程序代码的一部分
INITIALISATION CODE
with open('loaded.txt','w') as f: # readiness probe = check this file exists
f.write('loaded')
current_backoff = 0
max_backoff = 10
while True:
if current_backoff < max_backoff:
current_backoff +=1
with open('loaded.txt','w') as f:
f.write('loaded')
sleep(60)
messages = input_queue_client.receive_messages(visibility_timeout=100)
for message in messages:
with open('loaded.txt','w') as f:
f.write('loaded')
sleep(60)
current_backoff = 0
CODE TO PROCESS MESSAGES
sleep(current_backoff)
在您的情况下,每次在循环中开始新的迭代时,都可以触摸
/tmp/health
文件。并在运行状况检查中使用类似于find/tmp/health-mmin+0.5
的命令。如果文件超过半分钟,则此命令不返回任何内容。如果运行状况检查命令未返回任何内容,则假定检查已通过。感谢您的解释,这很有帮助。我已尝试使用您建议的解决方案,但我认为无论文件是否在过去0.5分钟内被修改,运行状况检查都会通过。如果命令未返回任何内容,则假定运行状况检查正在通过。如果该命令返回一个文件,它似乎也假定该文件正在传递。如果文件太旧,如何让它返回错误状态代码?我使用了:`livenessProbe:exec:command:$find-/myfile.txt--mmin-'-0.5'`还尝试了+0.5@Lucy这很奇怪,如果命令返回某些内容,健康检查不应该通过。您是否只创建了一次文件,之后就不碰它了?@Lucy您是否可以展示一些应用程序的最小示例,以便我可以尝试在本地重现您的问题?谢谢,我今天早上通过使用指定的条件退出代码构建一个单独的bash脚本解决了这个问题,然后将其作为liveness probe命令运行。谢谢你的帮助!
livenessProbe:
exec:
command:
- find
- /var/app/loaded.txt
- -mmin
- '+0.1'
initialDelaySeconds: 10
periodSeconds: 10
livenessProbe:
exec:
command:
- find
- /var/app/loaded.txt
- -mmin
- '+0.1'
- -exec
- cat
- '/var/app/loaded.txt{}'
- ;
initialDelaySeconds: 10
periodSeconds: 10
livenessProbe:
exec:
command:
- find
- /var/app/loaded.txt
- -mmin
- '+0.1'
- -exec
- if[[{}]]
- ;
initialDelaySeconds: 10
periodSeconds: 10