基于 Kubernetes 命令的活性探测
Kubernetes Command Based Liveness Probes
我在 /tmp/healthy
中有一个文件,如官方文档中所述,YAML 可用
livenessProbe:
exec:
command:
- cat
- /tmp/healthy
但在我的案例中,文件总是在这里,它会包含诸如成功或失败之类的消息
livenessProbe:command
可以处理这些消息吗?
是的,您可以使用grep
命令搜索Success
字符串,如果找到它会return 0
(通过探测),但是如果 grep
未找到 Success
字符串,它将 return non-zero
rc(探测失败)
livenessProbe:
exec:
command:
- grep
- Success
- /tmp/healthy
根据文档
If the command succeeds, it returns 0, and the kubelet considers the
container to be alive and healthy. If the command returns a non-zero
value, the kubelet kills the container and restarts it.
这意味着,exec
类型取决于命令的return代码。只要 grep
return 成功,探测就会通过。在 shell return 中,任何命令的代码都可以通过 $?
变量手动检查。例如::
grep Success /tmp/healthy; echo $?
liveness probe 的目的通常只是检查 pod 是否已启动且可访问。 cat
是用于活动探测的不错的命令,因为只要文件存在,它总是 returns 成功。它只是检查 Kubelet 是否可以到达 pod。
不过,如果我理解您的意思,则可以使活性探测的结果取决于文件的内容。您可以执行任何 bash 并以 1 或 0(失败或成功)退出以控制您想要的结果。
例如,如果您希望在您的文件包含任何失败消息时活性探测失败:
livenessProbe:
exec:
command:
- /bin/bash
- '-c'
- grep -zqv "Failure" file.txt
我在 /tmp/healthy
中有一个文件,如官方文档中所述,YAML 可用
livenessProbe:
exec:
command:
- cat
- /tmp/healthy
但在我的案例中,文件总是在这里,它会包含诸如成功或失败之类的消息
livenessProbe:command
可以处理这些消息吗?
是的,您可以使用grep
命令搜索Success
字符串,如果找到它会return 0
(通过探测),但是如果 grep
未找到 Success
字符串,它将 return non-zero
rc(探测失败)
livenessProbe:
exec:
command:
- grep
- Success
- /tmp/healthy
根据文档
If the command succeeds, it returns 0, and the kubelet considers the container to be alive and healthy. If the command returns a non-zero value, the kubelet kills the container and restarts it.
这意味着,exec
类型取决于命令的return代码。只要 grep
return 成功,探测就会通过。在 shell return 中,任何命令的代码都可以通过 $?
变量手动检查。例如::
grep Success /tmp/healthy; echo $?
liveness probe 的目的通常只是检查 pod 是否已启动且可访问。 cat
是用于活动探测的不错的命令,因为只要文件存在,它总是 returns 成功。它只是检查 Kubelet 是否可以到达 pod。
不过,如果我理解您的意思,则可以使活性探测的结果取决于文件的内容。您可以执行任何 bash 并以 1 或 0(失败或成功)退出以控制您想要的结果。
例如,如果您希望在您的文件包含任何失败消息时活性探测失败:
livenessProbe:
exec:
command:
- /bin/bash
- '-c'
- grep -zqv "Failure" file.txt