我想部署一个具有三个副本的服务,每个副本都有一个就绪探针。只有当其他两个 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 正在运行但它们的准备工作并不成功。或者也许我应该使用准备以外的东西?