Google Kubernetes Pod关闭并启动

时间:2020-01-30 18:39:13

标签: kubernetes google-kubernetes-engine circleci

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

我们面临的问题是,某些服务会通过加载数据库架构和其他前置数据来花一些时间来启动,但是google kubernetes会在新Pod完全启动之前关闭旧Pod。

我们能否以某种方式告诉kubernetes直到新的Pod满载,还是至少等待10秒才关闭旧的pod。

1 个答案:

答案 0 :(得分:2)

是的,这是可能的。根据描述,听起来您正在使用一个已更新的部署。在准备好新的Pod之前,将创建新的Pod,并删除旧的Pod。

要解决此问题,您需要在Pod上使用适当的readinessProbe configuredreadinessGates,以使Pod状态只有在实际就绪后才准备就绪。如果您不确定要添加什么作为探针,则还可以通过猜测您认为Pod需要启动多少时间来定义initialDelaySeconds

您还应该研究将部署规范字段用于minReadySeconds并定义适当的deployment strategy。您可以确保滚动更新创建新的Pod(通过定义maxSurge字段),并确保直到新的Pod就绪并接收流量(使用maxUnavailable字段= 0)之后,才删除旧的Pod。

一个例子是:

spec:
  replicas: 3
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0

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