Kubernetes零停机部署

时间:2018-10-04 14:39:55

标签: kubernetes google-cloud-platform

作为Kubernetes概念的精简者,它们的工作原理以及与之的部署。我有一些我不知道如何实现的案例。我正在寻找实现的建议或指导。

我正在使用Google Cloud Platform。当前运行流程如下所述。推送到google源存储库会触发Cloud Build,后者会创建docker映像并将该映像推送到正在运行的群集节点。

案例1:现在,当新的Pod启动并运行时,我希望这样做。然后将流量路由到新的Pod。杀死旧的Pod,但在每个Pod完成运行请求之后。我希望实现零停机时间。

情况2:如果正在运行的Pod的空间达到100,并且在Debian情况下inode计数达到满容量,将会发生什么。 kubernetes会创建新的Pod进行管理吗?

情况3:如何管理pod到数据库的连接限制?

2 个答案:

答案 0 :(得分:3)

  1. 与其他答案一样,使用Liveness and Readiness probes。基本上,新的Pod已添加到服务池,然后仅在准备就绪探针通过后才为流量提供服务。从服务池中删除了旧的pod,然后将其清空并终止。

  2. 这实际上取决于集群的容量以及根据容器中容器的限制调度容器的能力。有关设置容器限制的更多信息,请参考here。就inode限制而言,如果在节点上达到它,则kubelet将无法在该节点上运行任何其他Pod。 kubelet驱逐管理器还具有一个mechanism,其中使用最多的inode驱逐某些吊舱。您还可以在kubelet上配置eviction thresholds

  3. 结合有状态应用程序配置,这在操作系统级别将是一个更大的限制。您可以将此配置保留在ConfigMap中。例如,在MySql中,选项为max_connections

答案 1 :(得分:0)

自从我自己做完以来,我就可以回答案例1。

将部署与readinessProbeslivelinessProbes一起使用