Fro*_*its 2 kubernetes google-kubernetes-engine kubernetes-statefulset
我一直在阅读kubernetes 中的活性和就绪探针,我想用它们来检查集群是否已经启动。
问题是如何为整个 statefulset 配置就绪探针,而不是单个 pod/容器。
可以使用简单的 HTTP 检查来确定准备情况,但我遇到的问题是 readinessCheck 似乎适用于容器/pod 而不是集合本身。
对于我使用的软件,在集群形成之前,HTTP 端点不会出现;这意味着每个单独的 pod 都不会通过 readinessCheck,直到所有三个都启动并找到另一个。
我现在在 Kubernetes 中看到的行为是创建了 3 个副本中的第一个,并且在第一个通过 readinessCheck 之前,Kubernetes 甚至不会尝试创建副本 2 和 3,这从未发生过,因为所有三个都必须启动让它有机会通过它。
您需要更改.spec.podManagementPolicy
为StatefulSet
from OrderedReady
toParallel
策略。
这样 K8S 将并行启动您的所有 pod,而不会等待探针。
从文档
podManagementPolicy 控制在初始扩展、替换节点上的 Pod 或缩减时如何创建 Pod。默认策略是 OrderedReady,其中 pod 以递增的顺序创建(pod-0,然后是 pod-1 等),并且控制器将等到每个 pod 准备就绪后再继续。缩小时,pod 会以相反的顺序移除。替代策略是 Parallel,它将并行创建 Pod 以匹配所需的规模,而无需等待,并且在缩减时将立即删除所有 Pod。
归档时间: |
|
查看次数: |
1579 次 |
最近记录: |