【问题标题】:Google kubernetes pods shutdown and startGoogle kubernetes pod 关闭并启动
【发布时间】:2020-01-30 18:39:13
【问题描述】:

我们使用 Google kubernetes 部署我们的微服务,circlci 用于部署集成,我们在 githup 存储库中定义我们的 k8s 文件。

我们面临的问题是,一些服务通过加载数据库模式和其他预数据在启动时需要时间,但是 google kubernetes 在新 pod 完全启动之前关闭了旧 pod。

我们能否告诉 kubernetes 以某种方式等待新的 pod 完全加载,或者至少等待 10 秒后再关闭旧的 pod。

【问题讨论】:

  • 您是否配置了container probes 可以告诉部署控制器何时新的 pod 准备就绪?

标签: kubernetes google-kubernetes-engine circleci


【解决方案1】:

是的,这是可能的。根据描述,听起来您正在使用更新的单个部署。在新的 Pod 准备就绪之前,会创建新的 Pod 并移除旧的 Pod。

要解决这个问题,您需要在 pod 上设置正确的 readinessProbe configuredreadinessGates,以便 pod 状态只有在实际准备好后才会变为准备就绪。如果您不确定要放置什么作为探针,您还可以定义 initialDelaySeconds 并猜测您认为 pod 需要启动多少时间。

您还应该考虑使用 minReadySeconds 的部署规范字段以及定义正确的 deployment strategy。您可以确保滚动更新创建新 pod(通过定义 maxSurge 字段)并确保在新 pod 准备好并接收流量之前不会删除旧 pod(使用 maxUnavailable 字段 = 0)。

一个例子是:

规格: 复制品:3 战略: 滚动更新: 最大浪涌:1 最大不可用:0

这将在任何给定时间维护 3 个工作副本。推送新版本时,将使用新镜像创建 1 个新 pod。在新的 Pod 处于就绪状态之前,不会使任何 Pod 脱机。一旦完成,其中一个旧 pod 将被终止,然后循环再次进行。如果您希望一次性完成部署,请随意将 maxSurge 值更改为更高的数字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-19
    • 2022-07-11
    • 1970-01-01
    • 2016-08-22
    • 2019-06-17
    • 2021-07-23
    • 2019-10-24
    相关资源
    最近更新 更多