首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不正确的Redis活性探测没有失败

不正确的Redis活性探测没有失败
EN

Stack Overflow用户
提问于 2021-07-08 15:12:06
回答 2查看 818关注 0票数 0

我已经为我的Redis实例配置了一个活动探测,以确保Redis能够检索键,以便它能够被称为“活着”。

代码语言:javascript
复制
  livenessProbe:
    initialDelaySeconds: 20
    periodSeconds: 10
    exec:
      command:
        {{- include "liveness_probe" . | nindent 16 }}

_liveness.tpl

代码语言:javascript
复制
{{/* 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命令。

代码语言:javascript
复制
{{/* 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 }}

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

但问题是我的吊舱还能启动。

我使用的是活跃度探测命令好吗?如果是这样的话,我如何验证这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-09 14:31:11

您可以尝试使用此方法来探测您的活性,它运行良好,您可以在readinessProbe中使用相同的方法:

代码语言:javascript
复制
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: {}

需要在模板中编辑这些值

票数 2
EN

Stack Overflow用户

发布于 2021-07-09 09:35:53

我想你把livenessProbereadinessProbe搞混了。livenessProbe告诉kubernetes,如果命令返回一个非零的退出代码,则重新启动荚,这将在initialDelaySeconds: 20中指定的时间段后执行。

readinessProbe是决定豆荚是否处于Ready状态以接受流量的因素。

代码语言:javascript
复制
  readinessProbe:
    initialDelaySeconds: 20
    periodSeconds: 10
    exec:
      command:
        {{- include "liveness_probe" . | nindent 16 }}

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

请查看库伯奈特文档中的此页,其中解释了livenessProbereadinessProbestartupProbe

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68304279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档