是否有一种方法可以在kubernetes集群上创建相互依赖的Pod。就像运行某种微服务的Pod A发生故障一样,Pod B也因此而下降。实际上,我有一个应用程序,其中有某些依赖于Rabbitmq的微服务(我作为Pod运行,并作为其他Pod(微服务)使用的服务公开)我正在寻找一种解决方案,如果我的Rabbitmq吊舱掉落,所有其他吊舱也应因此而停止。
最简单的方法是在服务无法达到RabbitMQ或其他依赖关系的情况下使服务崩溃。
Kubernetes将立即重新启动它,如果失败的原因是网络故障,一切都会恢复正常。但是,如果RabbitMQ实际上处于关闭状态,则容器将再次崩溃,并且在重试几次之后,容器将处于CrashLoopBackOff状态; Kubernetes将在尝试重新启动之前暂停。
此时,您的RabbitMQ将不存在,并且您的各个Pod将显示CrashLoopBackOff。如果您查看kubectl get pods
之类的内容,您会说“等一下,真的很不对劲”,并且单个Pod上的kubectl logs
可能会有一个非常清晰的回溯字样:“无法连接到RabbitMQ”。
一旦RabbitMQ恢复,(最终)将发生自动重启,并且整个系统将自行恢复。