statefulset 的就绪探针,而不是单个 pod/容器

Fro*_*its 2 kubernetes google-kubernetes-engine kubernetes-statefulset

我一直在阅读kubernetes 中的活性和就绪探针,我想用它们来检查集群是否已经启动。

问题是如何为整个 statefulset 配置就绪探针,而不是单个 pod/容器。

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

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

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

lex*_*sys 5

您需要更改.spec.podManagementPolicyStatefulSetfrom OrderedReadytoParallel策略。

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

文档

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