3

我一直在阅读有关kubernetes 中的 liveness 和 readiness 探针的信息,我想用它们来检查集群是否已经活跃起来。

问题是如何为整个 statefulset 而不是单个 pod/container 配置就绪探测。

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

对于我正在使用的软件,HTTP 端点在集群形成之前不会出现;这意味着每个单独的 pod 都将无法通过 readinessCheck,直到所有三个都启动并找到另一个。

我现在在 Kubernetes 中看到的行为是创建了 3 个副本中的第一个,并且 Kubernetes 甚至不会尝试创建副本 2 和 3,直到第一个通过 readinessCheck,这永远不会发生,因为所有三个都必须启动让它有机会通过它。

4

1 回答 1

6

您需要更改从.spec.podManagementPolicyStatefulSet策略。OrderedReadyParallel

这样,K8S 将并行启动所有 pod,而不会等待探测。

文档

podManagementPolicy 控制在初始扩展期间、替换节点上的 pod 或缩减时如何创建 pod。默认策略是 OrderedReady,其中 pod 是按递增顺序创建的(pod-0,然后是 pod-1 等),控制器将等到每个 pod 准备就绪后再继续。缩小时,pod 会以相反的顺序移除。替代策略是 Parallel,它将并行创建 Pod 以匹配所需的规模而无需等待,并且在缩减规模时将立即删除所有 Pod。

于 2018-06-21T15:01:41.310 回答