我试图在K8s下运行的pod上实现livenessProbes。 只有非常简单的探针正在工作,参见示例:
livenessProbe:
exec:
command:
- cat
- /etc/services
initialDelaySeconds: 45
timeoutSeconds: 5
我需要实施的探测是每50秒杀死一次。
livenessProbe:
exec:
command:
mongo --port 27018 --eval "rs.status()" | grep "REMOVED" ; test $? -eq 1
initialDelaySeconds: 45
timeoutSeconds: 5
当没有实现探测并且命令在pod内运行时,如果找到REMOVED字符串则返回1,如果找不到则返回0。
[root @ eas-mongo-rs-3-ui81p /] #mongo --port 27018 --eval" rs.status()" | grep" REMOVED" ;测试$? -eq 1
问题是,如何实现Container Exec Check等命令。
此致
答案 0 :(得分:1)
您的命令将被引用而不是按您的意思运行,如果您想使用管道和其他更高级的shell功能,您可以使用/bin/sh
,这也是您可以在官方文档中看到的解决方法。
所以你的探针看起来像这样:
livenessProbe:
exec:
command:
- /bin/sh
- -c
- mongo --port 27018 --eval "rs.status()" | grep -vq "REMOVED"
initialDelaySeconds: 45
timeoutSeconds: 5
您还可以使用-v
开关来grep,以避免使用额外的test
命令反转状态。