Kubernetes准备探针执行KO,活力探针同样执行OK

时间:2016-02-29 08:40:17

标签: kubernetes probe

我已经在我的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

谢谢。

1 个答案:

答案 0 :(得分:1)

根据所提供的信息,我无法最终确定探针是否通过您的情况。如果您不知道要监视什么,Kubernetes可能是不透明的,因此很容易想象有人会误解您的实验结果。

两种探测的执行方式没有区别-只有结果不同:

  • 活动失败:重新启动容器eventually
  • 准备失败:禁用通信

根据您的容器,活动失败可能相对无害-您甚至可能没有注意到它。

但是,当您使用就绪探针时,与容器的通信将被禁用,直到探针通过之后。这意味着通过简单的操作即可使initialDelaySeconds: 60处于就绪状态的问题将阻止服务在第一分钟与您的Pod进行连接-无论关联容器的状态如何。如果未配置从属的pod /服务来处理此延迟,则可能会导致级联后果。

对于活动度调查,"very important"配置initialDelaySeconds(如问题中所述)。对于准备情况调查,这可能并不那么重要-为了使启动更快的可能性,您可能希望将其设置为零(the default)。


代码如下:https://github.com/kubernetes/kubernetes/tree/master/pkg/kubelet/prober