针对状态集的就绪探测器,而不是单个吊舱/容器

时间:2018-06-21 14:42:38

标签: kubernetes google-kubernetes-engine kubernetes-statefulset

我一直在阅读有关liveness and readiness probes in kubernetes的信息,我想用它们来检查集群是否还活着。

问题是如何为整个有状态集而不是单个吊舱/容器配置就绪探测器。

可以使用简单的HTTP检查来确定准备情况,但是我遇到的问题是,readinessCheck似乎适用于容器/吊舱,而不适用于集合本身。

对于我正在使用的软件,直到集群形成后,HTTP端点才会出现。这意味着每个单独的Pod都将无法通过readinessCheck,直到所有三个Pod都找到为止。

我现在在Kubernetes中看到的行为是创建了3个副本中的第一个副本,并且Kubernetes甚至没有尝试创建副本2和3,直到第一个副本通过了readinessCheck,这从未发生,因为这三个副本都已经要有机会通过它。

1 个答案:

答案 0 :(得分:4)

您需要将.spec.podManagementPolicy的{​​{1}}从StatefulSet更改为OrderedReady策略。

这样,K8S将并行启动所有Pod,而无需等待探测。

来自documentation

  

podManagementPolicy控制初始缩放期间如何创建Pod   上,更换节点上的吊舱或缩小时。默认值   策略为OrderedReady,其中按递增顺序创建广告连播   (pod-0,然后是pod-1,依此类推),控制器将等待直到每个pod   在继续之前已准备就绪。缩小比例后,   相反的顺序。替代策略是并行,它将   并行创建吊舱以匹配所需比例,无需等待,   并按比例缩小将立即删除所有吊舱。