如何在 Kubernetes 的 startupProbe 中正确执行命令?
How to properly execute a command in a startupProbe in Kubernetes?
我正在尝试使用这个启动探测器
startupProbe:
exec:
command:
- >-
test $(java -cp /the/path/to/the/app.jar app.Controller port=4990 cmd="v" | grep -E 'r5|v5' | wc -l) -eq 2 && echo $? || echo $?
initialDelaySeconds: 5 #How many seconds to wait after the container has started
timeoutSeconds: 1 #Timeout of the probe
successThreshold: 1 #Threshold needed to mark the container healthy
periodSeconds : 10 #Wait time between probe executions
failureThreshold: 110 #Threshold needed to mark the container unhealthy.
这是一个 java 应用程序,可能需要很长时间(约 15 分钟)才能加载某些组件。这是一个遗留应用程序,我对此无能为力。
我正在对响应进行 greping,尝试得到两行结果,然后返回 0 或 1 作为退出代码供探测器决定。
虽然我明白他的错误
Startup probe errored: rpc error: code = Unknown desc = failed to exec in container: failed to start exec "8ad860ffc7a87e95fb65e37dc14945c04fa205f9a524c7f7f08f9d6ef7d75": OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "test $(java -cp /the/path/to/the/app.jar app.Controller port=4990 cmd=\"v\" | grep -E 'r5|v5' | wc -l) -eq 2 && echo $? || echo $?": stat test $(java -cp /the/path/to/the/app.jar app.Controller port=4990 cmd="v" | grep -E 'r5|v5' | wc -l) -eq 2 && echo $? || echo $?: no such file or directory: unknown
如果我不使用 && echo $? || echo $?
部分,探测器将抛出退出代码为 2
而不是 1
.
的错误
这是怎么回事??
您需要启动一个 shell 到 运行 您的脚本:
startupProbe:
exec:
command:
- sh
- -c
- >-
...
我正在尝试使用这个启动探测器
startupProbe:
exec:
command:
- >-
test $(java -cp /the/path/to/the/app.jar app.Controller port=4990 cmd="v" | grep -E 'r5|v5' | wc -l) -eq 2 && echo $? || echo $?
initialDelaySeconds: 5 #How many seconds to wait after the container has started
timeoutSeconds: 1 #Timeout of the probe
successThreshold: 1 #Threshold needed to mark the container healthy
periodSeconds : 10 #Wait time between probe executions
failureThreshold: 110 #Threshold needed to mark the container unhealthy.
这是一个 java 应用程序,可能需要很长时间(约 15 分钟)才能加载某些组件。这是一个遗留应用程序,我对此无能为力。
我正在对响应进行 greping,尝试得到两行结果,然后返回 0 或 1 作为退出代码供探测器决定。
虽然我明白他的错误
Startup probe errored: rpc error: code = Unknown desc = failed to exec in container: failed to start exec "8ad860ffc7a87e95fb65e37dc14945c04fa205f9a524c7f7f08f9d6ef7d75": OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "test $(java -cp /the/path/to/the/app.jar app.Controller port=4990 cmd=\"v\" | grep -E 'r5|v5' | wc -l) -eq 2 && echo $? || echo $?": stat test $(java -cp /the/path/to/the/app.jar app.Controller port=4990 cmd="v" | grep -E 'r5|v5' | wc -l) -eq 2 && echo $? || echo $?: no such file or directory: unknown
如果我不使用 && echo $? || echo $?
部分,探测器将抛出退出代码为 2
而不是 1
.
这是怎么回事??
您需要启动一个 shell 到 运行 您的脚本:
startupProbe:
exec:
command:
- sh
- -c
- >-
...