当静态资产发生变化时,Kubernetes是否有设施支持零停机时间部署?

时间:2016-04-11 17:23:35

标签: kubernetes

我们要求在进行滚动部署时没有请求收到404。目前,我们通过在继续滚动部署之前将新资产容器部署到所有服务器来实现此目的。使用nginx的“try_files”,这可以确保在新代码推出时我们可以同时提供旧版本和新版本的资产。 Kubernetes是否有支持此类工作流程的任何功能?

2 个答案:

答案 0 :(得分:1)

您可以使用Deployment API(对于Kubernetes> = v1.2)或kubectl rolling-update(对于< v1.2)来管理Kubernetes Pod的滚动部署(每个都是一个容器和卷的共同位置)。您还需要创建Service来访问这些PodService重定向到Pod的流量。在滚动部署期间,用户将被重定向到具有旧版本或新版本资产容器的Pod

答案 1 :(得分:0)

一种可能性是使用Deployments。您可以使用多个副本运行部署。

现在,当您更新到新版本时,部署会注意删除一个旧版本并一个接一个地添加新版本,直到您的新版本完全推出。推出策略可以是

在Pod中运行nginx以提供静态文件时,我建议将以下内容添加到容器规范中:

lifecycle:
  preStop:
    exec:
      command: ["/usr/sbin/nginx", "-s", "quit"]

这会在Pod被销毁之前向您的nginx发送QUIT Signal。通过这种方式,您可以确保在服务器停机之前,nginx不会接受任何新连接。