【发布时间】:2023-03-29 08:25:02
【问题描述】:
我有一个后端服务,我将使用 Kubernetes(使用 Helm 图表)来控制它。这个后端服务连接到一个数据库(MonogoDB,它就是这样)。在数据库准备好接收连接之前启动后端服务是没有意义的(后端将通过重试来处理丢失的数据库,但它会浪费资源并用分散注意力的方式填充日志文件错误消息)。
为此,我相信我可以将add an init container 发送到我的后端,并让该初始化容器等待(或轮询)直到数据库准备好。看来这是init containers的预期用途之一
由于 init 容器在任何应用容器启动之前运行完成,因此 init 容器提供了一种机制来阻止或延迟应用容器启动,直到满足一组先决条件。
也就是说,让my 服务的init 容器与数据库的readiness probe 进行相同 操作。这反过来意味着将代码从数据库的配置(Helm 图表)复制并粘贴到我的后端的配置(或 Helm 图表)。不理想。有没有更简单的方法?有没有一种方法可以向 Kubernetes 声明,在知道数据库准备好之前我的服务不应该启动?
【问题讨论】:
-
就绪探针的实现是容器实现的一部分,因此没有简单的方法将其复制到另一个容器。如何从 Helm 图表中复制就绪探测的实现?
-
@weibeld 文本编辑器中的复制粘贴。我不是指一些巧妙的模板操作。
-
我的意思是在 Helm 图表中如何实现就绪探测?您想复制粘贴
readinessProbe.httpGet字段吗? -
@Raedwald 您尝试过这个解决方案还是其他解决方案?
标签: kubernetes dependencies initialization kubernetes-helm readinessprobe