我一直在阅读有关liveness and readiness probes in kubernetes的信息,我想用它们来检查集群是否还活着。
问题是如何为整个有状态集而不是单个吊舱/容器配置就绪探测器。
可以使用简单的HTTP检查来确定准备情况,但是我遇到的问题是,readinessCheck似乎适用于容器/吊舱,而不适用于集合本身。
对于我正在使用的软件,直到集群形成后,HTTP端点才会出现。这意味着每个单独的Pod都将无法通过readinessCheck,直到所有三个Pod都找到为止。
我现在在Kubernetes中看到的行为是创建了3个副本中的第一个副本,并且Kubernetes甚至没有尝试创建副本2和3,直到第一个副本通过了readinessCheck,这从未发生,因为这三个副本都已经要有机会通过它。
答案 0 :(得分:4)
您需要将.spec.podManagementPolicy
的{{1}}从StatefulSet
更改为OrderedReady
策略。
这样,K8S将并行启动所有Pod,而无需等待探测。
podManagementPolicy控制初始缩放期间如何创建Pod 上,更换节点上的吊舱或缩小时。默认值 策略为OrderedReady,其中按递增顺序创建广告连播 (pod-0,然后是pod-1,依此类推),控制器将等待直到每个pod 在继续之前已准备就绪。缩小比例后, 相反的顺序。替代策略是并行,它将 并行创建吊舱以匹配所需比例,无需等待, 并按比例缩小将立即删除所有吊舱。