我已经为我的Redis实例配置了一个活动探测,以确保Redis能够检索键,以便它能够被称为“活着”。
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 }}当我在命令提示符中直接执行这个命令时,我会得到预期的退出代码。
但问题是我的吊舱还能启动。
我使用的是活跃度探测命令好吗?如果是这样的话,我如何验证这一点?
发布于 2021-07-09 14:31:11
您可以尝试使用此方法来探测您的活性,它运行良好,您可以在readinessProbe中使用相同的方法:
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: {}需要在模板中编辑这些值
发布于 2021-07-09 09:35:53
我想你把livenessProbe和readinessProbe搞混了。livenessProbe告诉kubernetes,如果命令返回一个非零的退出代码,则重新启动荚,这将在initialDelaySeconds: 20中指定的时间段后执行。
而readinessProbe是决定豆荚是否处于Ready状态以接受流量的因素。
readinessProbe:
initialDelaySeconds: 20
periodSeconds: 10
exec:
command:
{{- include "liveness_probe" . | nindent 16 }}如果你需要的话,它们也可以一起使用。
请查看库伯奈特文档中的此页,其中解释了livenessProbe、readinessProbe和startupProbe
https://stackoverflow.com/questions/68304279
复制相似问题