单个副本Gitlab服务的部署或状态集?

时间:2018-05-29 16:09:10

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

我对Kubernetes的看法似乎说Statefulsets是“有状态”应用程序的最佳答案。 (在我的案例中是一个Gitlab实例。)创建容器的单个副本很好,但是当我推送更新时会发生什么?

如果我的应用程序声明了一个持久卷,那么推送更新是否会连接回同一个磁盘? Google Kubernetes Engine文档声明每个pod都将收到自己的卷,并且“滚动”更新是默认值。如果在滚动更新期间创建的新容器需要第一个副本仍在使用的卷中的数据,那么它如何工作?

我可能会遗漏一些让我围绕着答案跑来跑去的东西。

1 个答案:

答案 0 :(得分:1)

是的,statefulset controller用于运行有状态应用程序。

升级节点池版本不会删除永久卷,更新后它将把新的Pod连接回到相同的永久卷。

根据the GCP documentation,,更新后,只会删除主机hostPathemptyDir中存储的数据。永久卷中的数据将不会被删除。

将发生的事情是,Kubernetes停止调度,清空并删除所有群集的节点和Pod。逐一。永久卷将从Pod上卸载,然后在更新完成后安装到新Pod。永久卷中的数据将被保留。更新后,将使用相同的永久磁盘装入新的更新容器。

由于它是单个副本,因此在一段时间内容器将脱机,在此期间,容器将不可用,并且永久卷将被卸载。