我已经在我的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
谢谢。
答案 0 :(得分:1)
根据所提供的信息,我无法最终确定探针是否通过您的情况。如果您不知道要监视什么,Kubernetes可能是不透明的,因此很容易想象有人会误解您的实验结果。
两种探测的执行方式没有区别-只有结果不同:
根据您的容器,活动失败可能相对无害-您甚至可能没有注意到它。
但是,当您使用就绪探针时,与容器的通信将被禁用,直到探针通过之后。这意味着通过简单的操作即可使initialDelaySeconds: 60
处于就绪状态的问题将阻止服务在第一分钟与您的Pod进行连接-无论关联容器的状态如何。如果未配置从属的pod /服务来处理此延迟,则可能会导致级联后果。
对于活动度调查,"very important"配置initialDelaySeconds
(如问题中所述)。对于准备情况调查,这可能并不那么重要-为了使启动更快的可能性,您可能希望将其设置为零(the default)。
代码如下:https://github.com/kubernetes/kubernetes/tree/master/pkg/kubelet/prober