首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过Google-kubernetes-engine部署:内部服务器Error[500] (谷歌云平台)

通过Google-kubernetes-engine部署:内部服务器Error[500] (谷歌云平台)
EN

Stack Overflow用户
提问于 2020-03-26 14:36:59
回答 1查看 162关注 0票数 2

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

目前我正在运行10个pods。当我使用rolling-update进行部署时,我预计会出现一个新的pod,旧pod的流量会被阻止,然后它会被优雅地关闭。对于下一个pod,依此类推。

但在我的例子中,当创建一个新的pod时,旧的pod会立即关闭,并且我开始为该pod所满足的请求获取Internal Server Error [500]

我怎样才能避免这种情况?

代码语言:javascript
复制
      livenessProbe:
        httpGet:
          path: /health
          port: 4000
        initialDelaySeconds: 1
        periodSeconds: 10
      readinessProbe:
        httpGet:
          path: /health
          port: 4000
        initialDelaySeconds: 1
        periodSeconds: 10
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-27 00:18:46

听起来你需要调整你的滚动更新策略。您可以在herehere中找到类似的讨论,讨论如何执行滚动更新而不会出错。

升级策略对于定义在更新过程中可以拥有多少不可用pods非常重要。对于现在的停机时间,您可能需要将其设置为0并配置一个合理的maxSurge值。

下一步是确保配置了适当的readinessProbes。一旦新pod标记为就绪,控制器将尝试删除一个(或多个)旧pod。您的pod将收到一个SIGTERM,并继续处理它,无论它是如何配置的。这意味着:

A)确保readinessProbe仅在其完全能够接受流量时才将pod标记为就绪(即使应用程序未启动,/health也可能处于启动状态,请确保情况并非如此)。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60862072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档