通过google-kubernetes-engine部署:内部服务器错误[500](Google云平台)

时间:2020-03-26 06:36:58

标签: kubernetes google-cloud-platform deployment google-kubernetes-engine kubernetes-helm

我正在使用Helm图表在google-kubernetes-engine上进行部署,并在其中使用了滚动更新。

目前,我正在运行10个吊舱。当我使用rolling-update进行部署时,我希望出现一个新的Pod,并且停止从旧Pod断开的流量,然后正常断开它。等等,接下来的豆荚。

但是在我的情况下,当创建新的Pod时,旧Pod立即关闭,对于该Pod满足的请求,我开始得到Internal Server Error [500]

如何避免这种情况?

      livenessProbe:
        httpGet:
          path: /health
          port: 4000
        initialDelaySeconds: 1
        periodSeconds: 10
      readinessProbe:
        httpGet:
          path: /health
          port: 4000
        initialDelaySeconds: 1
        periodSeconds: 10

1 个答案:

答案 0 :(得分:1)

听起来您需要调整滚动更新策略。您可以找到类似的讨论herehere,这些讨论涉及执行滚动更新而不会出错。

升级策略对于定义更新期间可以拥有多少个不可用的Pod至关重要。对于现在的停机时间,您可能需要将此设置为0并配置一个合理的maxSurge值。

下一步是确保已配置适当的readinessProbes。一旦新的Pod标记为就绪,控制器将尝试删除一个(或多个)旧Pod。您的广告连播会收到一个SIGTERM,然后继续处理它,但已配置为这样做。这意味着:

A)确保仅在Pod完全能够接受流量后将Pod标记为就绪(即使应用程序没有运行,它也可能处于运行状态,请确保情况并非如此)。

B)您的旧Pod需要正确且优雅地处理SIGTERM,这是在应用程序层完成的。请记住,默认情况下,一旦发送SIGTERM,控制器将允许Pod正常关闭。