Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker kubernetes中的探测器能告诉基础设施服务肯定失败了吗?_Docker_Kubernetes - Fatal编程技术网

Docker kubernetes中的探测器能告诉基础设施服务肯定失败了吗?

Docker kubernetes中的探测器能告诉基础设施服务肯定失败了吗?,docker,kubernetes,Docker,Kubernetes,如果我在启动过程中知道我的服务无法正常工作。。有什么我可以从其中一个探测器返回的信息会告诉Kubernetes,如果pod不再可用,需要重新启动的话,我可以这样做吗 目前据我所知,唯一的答案是200-399,这将被视为“成功”,其他任何被视为失败。还有其他选择吗 否,除了您链接的文档中描述的3种方法外,没有其他方法可以检测: 检测响应代码的HTTP检查 TCP探测检查端口是否打开 在容器中运行脚本并检查其退出代码的Exec 在您的情况下,可能可以使用execcheck和类似于标志文件的东西 例如

如果我在启动过程中知道我的服务无法正常工作。。有什么我可以从其中一个探测器返回的信息会告诉Kubernetes,如果pod不再可用,需要重新启动的话,我可以这样做吗

目前据我所知,唯一的答案是200-399,这将被视为“成功”,其他任何被视为失败。还有其他选择吗


否,除了您链接的文档中描述的3种方法外,没有其他方法可以检测:

  • 检测响应代码的HTTP检查
  • TCP探测检查端口是否打开
  • 在容器中运行脚本并检查其退出代码的Exec
  • 在您的情况下,可能可以使用
    exec
    check和类似于标志文件的东西

    例如,您的应用程序可以创建一个文件“/tmp/iamdead”,您可以创建一个活度探测器,如:

    livenessProbe:
      exec:
        command:
        - sh
        - -c
        - "cat /tmp/iamdead; if [ $? -eq 0 ]; then exit 1; fi"
    

    否,除了您链接的文档中描述的3之外,没有其他方法可以检测:

  • 检测响应代码的HTTP检查
  • TCP探测检查端口是否打开
  • 在容器中运行脚本并检查其退出代码的Exec
  • 在您的情况下,可能可以使用
    exec
    check和类似于标志文件的东西

    例如,您的应用程序可以创建一个文件“/tmp/iamdead”,您可以创建一个活度探测器,如:

    livenessProbe:
      exec:
        command:
        - sh
        - -c
        - "cat /tmp/iamdead; if [ $? -eq 0 ]; then exit 1; fi"
    

    您应该在部署中使用
    readinessProbe
    ,检查您的pod是否准备好为请求提供服务。 ReadinessProbe有三种类型(HTTP、TCP、Exec),基础结构需要的类型应该是
    Exec
    ,因为您可以在shell中运行命令来测试它。请遵循以下步骤,例如:-

    readinessProbe:
      exec:
        command:
        - cat
        - /tmp/healthy
      initialDelaySeconds: 5
      periodSeconds: 5
    
    同样,您也应该配置
    exec
    livensesprobe

    livenessProbe:
      exec:
        command:
        - cat
        - /tmp/healthy
      initialDelaySeconds: 5
      periodSeconds: 5
    
    参考:-


    您应该在部署中使用
    readinessProbe
    ,检查您的pod是否准备好为请求提供服务。 ReadinessProbe有三种类型(HTTP、TCP、Exec),基础结构需要的类型应该是
    Exec
    ,因为您可以在shell中运行命令来测试它。请遵循以下步骤,例如:-

    readinessProbe:
      exec:
        command:
        - cat
        - /tmp/healthy
      initialDelaySeconds: 5
      periodSeconds: 5
    
    同样,您也应该配置
    exec
    livensesprobe

    livenessProbe:
      exec:
        command:
        - cat
        - /tmp/healthy
      initialDelaySeconds: 5
      periodSeconds: 5
    
    参考:-


    如果您的流程可以确定它处于无法解决的状态,则无需等待探测发生;它可以自行退出,Kubernetes将重新启动它。具体如何实现这一点取决于您的语言,但通常有一个名为
    exit()
    的函数,或者如果您的语言有异常,抛出异常而不捕获它通常会终止程序


    从Kubernetes的观点来看,这看起来非常类似于活性探测失败。容器将终止并重新启动;如果这样做的次数超过两次,集群将开始延迟重启,状态为
    CrashLoopBackOff
    。在退出之前,通过编写诊断消息给自己留下提示是很有帮助的,这样
    kubectl日志将解释进程一直退出的原因。

    如果您的进程可以确定它处于无法退出的状态,则无需等待探测发生;它可以自行退出,Kubernetes将重新启动它。具体如何实现这一点取决于您的语言,但通常有一个名为
    exit()
    的函数,或者如果您的语言有异常,抛出异常而不捕获它通常会终止程序


    从Kubernetes的观点来看,这看起来非常类似于活性探测失败。容器将终止并重新启动;如果这样做的次数超过两次,集群将开始延迟重启,状态为
    CrashLoopBackOff
    。在退出之前,通过编写诊断消息给自己留下提示是很有帮助的,这样
    kubectl日志将解释为什么进程一直在退出。

    如果活动探测失败,kubelet将重新启动pod。你想让其他东西做同样的事情吗?如果你的进程是肯定的,它处于不可挽救的状态,它可以通过某种方便的方式退出自己(抛出异常,调用某种本机的
    exit
    函数,使用Go的
    panic
    )。这将导致它重新启动,而不必涉及探测路径。谢谢@DavidMaze。这更有道理。@DavidMaze,请将其作为答案发布。如果活性探测失败,库贝莱特将重新启动pod。你想让其他东西做同样的事情吗?如果你的进程是肯定的,它处于不可挽救的状态,它可以通过某种方便的方式退出自己(抛出异常,调用某种本机的
    exit
    函数,使用Go的
    panic
    )。这将导致它重新启动,而不必涉及探测路径。谢谢@DavidMaze。这更有道理。@DavidMaze,请将其作为答案发布。谢谢。他没有要求其他方法。我只是问,在HTTP探测的情况下,是否有一个可以返回的错误将被回收。谢谢谢谢他没有要求其他方法。我只是问,在HTTP探测的情况下,是否有一个可以返回的错误将被回收。谢谢