【发布时间】:2021-10-11 22:17:42
【问题描述】:
我想部署一个包含三个副本的服务,每个副本都有一个就绪探测。只有当其他两个 pod 也启动时,一个 pod 才会开始工作(在测试就绪的端口发送数据)。这三个 pod 都需要启动,在内部服务中注册它们的 IP,然后它们才能被发现。
在我看来,就绪探测器是按顺序工作的,因此只会启动一个 pod。这会造成死锁情况,即启动的 pod 等待其他两个 pod 开始运行,即使它们没有启动应用程序,并且 K8s 不会启动其他两个 pod,直到第一个 pod 的就绪状态得到满足。
我的就绪配置是:
readinessProbe=ExecProbe(
execute=ExecAction(command=["curl", "localhost:2004"]),
initialDelaySeconds=120,
timeoutSeconds=10,
periodSeconds=10,
successThreshold=1,
failureThreshold=10
)
我希望我的 pod 能够启动,即使当前的 pod 正在运行但它们的准备工作不成功。或者也许我应该使用准备之外的其他东西?
【问题讨论】:
-
你使用的是 Deployment 还是 StatefulSet?
-
如何确认?每个 pod 都有自己的 PVC,所以
StatefulSet?