1

我已经在我的 pod 上配置了一个带有二进制执行检查的 readinessProbe,它连接到我正在运行的服务器(在同一个容器中)并检索一些健康信息(比如准备好流量)。

配置为 readinessProbe,二进制文件无法联系我的服务器并获取所需的信息。它连接在 TCP 套接字上。但是当我将它配置为 livenessProbe 时它可以正常工作。

配置。为了使它工作,我只将类型从 readinessProbe 更改为 livenessProbe。

"readinessProbe": {
              "exec": {
                "command": [
                  "/opt/bin/ready_probe",
                  "--check_ready_traffic",
                  "--service=myServer-service"
                ]
              },
              "initialDelaySeconds": 60,
              "timeoutSeconds": 5
            },

该服务用于服务器,注册它的主机和端口。还行吧。

使用的版本:kubernetes v1.1.0-origin-1107-g4c8e6f4

谢谢你。

4

1 回答 1

1

根据提供的信息,我无法最终确定在您的案例中调查是通过还是失败。如果您不知道要监控什么,Kubernetes 可能有点不透明,因此很容易想象有人误解了您的实验结果。

这两种探测的执行没有区别——只是结果不同:

根据您的容器,活性故障可能相对无害——您甚至可能没有注意到它。

但是,当您使用就绪探测时,与容器的通信将被禁用,直到探测通过。这意味着启用就绪问题的简单行为initialDelaySeconds: 60将阻止服务在第一分钟与您的 pod 连接——无论关联容器的状态如何。如果未配置依赖的 pod/服务来处理它,这种延迟可能会产生级联后果。

对于活性探测,配置“非常重要”initialDelaySeconds(正如问题中所做的那样)。对于准备情况探测,这可能不是那么重要——您可能更希望它为零(默认值),以便有可能更快地启动。


这是代码:https ://github.com/kubernetes/kubernetes/tree/master/pkg/kubelet/prober

于 2019-02-01T15:08:40.970 回答