Redis的不正确的活跃度探测没有失败



我为Redis实例配置了一个liveness探测器,确保Redis能够检索密钥,以便能够被称为"alive"。

livenessProbe:
initialDelaySeconds: 20
periodSeconds: 10
exec:
command:
{{- include "liveness_probe" . | nindent 16 }}

_liveness.tpl

{{/* Liveness probe script. */}}
{{- define "liveness_probe" -}}
- "redis-cli"
- "set"
- "liveness_test_key"
- ""SUCCESS""
- "&&"
- "redis-cli"
- "get"
- "liveness_test_key"
- "|"
- "awk"
- "'$1 != "SUCCESS" {exit 1}'"
{{- end }}

吊舱可以在完成更改后启动。然而,我想确保调查按预期进行。为此,我只是在get命令之前添加了一个delete命令。

{{/* Liveness probe script. */}}
{{- define "liveness_probe" -}}
- "redis-cli"
- "set"
- "liveness_test_key"
- ""SUCCESS""
- "&&"
- "redis-cli"
- "del"
- "liveness_test_key"
- "&&"
- "redis-cli"
- "get"
- "liveness_test_key"
- "|"
- "awk"
- "'$1 != "SUCCESS" {exit 1}'"
{{- end }}

当我在命令提示符下直接执行此命令时,我会得到预期的退出代码。

但问题是,我的吊舱仍然能够启动。

我使用的活体探测命令可以吗?如果是,我该如何验证?

尝试一下你的活体探针,它工作正常,你可以在readinesProbe:中尝试

apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: redis
name: redis
spec:
replicas: 1
selector:
matchLabels:
app: redis
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: redis
spec:
containers:
- image: redis
name: redis
livenessProbe:
exec:
command:
- sh
- -c
- |            
#!/usr/bin/env bash -e
#export REDISCLI_AUTH="$REDIS_PASSWORD"
set_response=$(
redis-cli set liveness_test_key "SUCCESS"
)
del_response=$(
redis-cli del liveness_test_key
)
response=$(
redis-cli get liveness_test_key
)
if [ "$response" != "SUCCESS" ] ; then
echo "Unable to get keys, something is wrong"
exit 1
fi               
initialDelaySeconds: 5
periodSeconds: 5

status: {}

您需要在模板中编辑这些值

我认为您混淆了livenessProbereadinessProbe。如果命令返回非零退出代码,则livenessProbe告诉kubernetes重新启动您的pod,这将在initialDelaySeconds: 20中指定的时间段之后执行

readinessProbe决定pod是否处于Ready状态以接受业务。

readinessProbe:
initialDelaySeconds: 20
periodSeconds: 10
exec:
command:
{{- include "liveness_probe" . | nindent 16 }}

如果你需要的话,它们也可以一起使用。

请查看kubernetes文档中的此页,其中解释了livenessProbereadinessProbestartupProbe

最新更新