我尝试通过 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;
当我执行到容器中并运行此命令时,出现此错误:
/bin/sh: 1: [: Illegal number:
我 echo $reply ,运行上述命令后,reply 变量中没有存储任何内容。 当我运行不带“sh -c”部分的命令时,它可以工作并且变量回复将被填充。不知何故,sh 命令无法读取curl 命令的输出...我尝试删除curl 请求的-o /dev/null 部分,但这没有帮助。
我怎样才能执行这个命令?
要使用多个同步命令运行
sh -c
,您需要将它们括在引号内,并在命令内使用的任何引号中添加反斜杠
sh -c "export reply=$(echo 200); if [ \"\$reply\" -lt 200 -o \"\$reply\" -ge 400 ]; then exit 1; fi;"