【问题标题】:Kubernetes Command Based Liveness Probes基于 Kubernetes 命令的活性探针
【发布时间】:2021-09-27 07:39:50
【问题描述】:

如官方文档中所述,我在/tmp/healthy 中有一个文件,并且 YAML 可用

livenessProbe:
  exec:
    command:
    - cat
    - /tmp/healthy

但在我的情况下,文件总是在这里,它将包含成功或失败之类的消息

livenessProbe:command 可以处理这些消息吗?

【问题讨论】:

    标签: kubernetes livenessprobe


    【解决方案1】:

    活性探测的目的通常只是检查 pod 是否已启动且可访问。 cat 是用于活性探测的不错的命令,因为只要文件存在,它总是返回成功。它只是检查 Kubelet 是否可以到达 pod。

    如果我理解您的意思,那么活性探测的结果可能取决于文件的内容。您可以执行任何 bash 并以 1 或 0(失败或成功)退出来控制您想要的结果。

    例如,如果您希望在您的文件包含任何失败消息时使活性探测失败:

        livenessProbe:
          exec:
            command:
            - /bin/bash
            - '-c'
            - grep -zqv "Failure" file.txt 
    

    【讨论】:

    • 这对我有用命令:-/bin/grep--zqv-“失败”-/opt/microservices/health
    【解决方案2】:

    是的,您可以使用grep 命令搜索Success 字符串,如果找到它会返回0(通过探测),但是如果Success 字符串未被grep 找到它将返回non-zero rc(探测失败)

    livenessProbe:
      exec:
        command:
        - grep
        - Success 
        - /tmp/healthy
    

    根据文档

    如果命令成功,则返回 0,kubelet 认为 容器是活的和健康的。如果命令返回非零 值,kubelet 会杀死容器并重新启动它。

    这意味着,exec 类型取决于命令的返回码。只要grep 返回成功,探测就会通过。在 shell 中,任何命令的返回码都可以通过 $? 变量手动检查。例如::

    grep Success /tmp/healthy; echo $?
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-20
      • 2019-06-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-22
      • 1970-01-01
      • 2020-09-12
      相关资源
      最近更新 更多