我试图通过Kubernetes livenessProbe执行此命令,但我认为它没有按预期工作,因为我在pod事件日志中看到探测失败。这是命令:
sh -c reply=$(curl -s -o /dev/null -w %{http_code} http://127.0.0.1:8080/login); if [ "$reply" -lt 200 -o "$reply" -ge 400 ]; then exit 1; fi;
当我exec到容器中并运行此命令时,我得到以下错误:
/bin/sh: 1: [: Illegal number:
我回显$reply,在运行上述命令后,没有任何内容存储在reply变量中。当我运行不带'sh -c'部分的命令时,它工作正常,变量reply被填充。不知何故,sh命令无法读取curl命令的输出.我试图删除curl请求的-o /dev/null部分,但这没有帮助。
如何让这个命令执行?
2条答案
按热度按时间mmvthczy1#
要使用多个同步命令运行
sh -c
,需要将它们括在引号("
或'
)内,并在命令内使用的任何类似引号之前和变量的美元符号$
之前添加反斜杠rt4zxlrg2#
沿着@tax evader的回答,我通过将以下内容放入部署规范中来使探测器工作: