当我们扩展kubernetes部署并更改Pod或容器配置之一时会发生什么?

时间:2019-11-07 15:17:12

标签: kubernetes kubernetes-pod

当我通过创建部署扩展应用程序时。假设我在3个群集上运行nginx服务。 Nginx在多个容器中的容器中运行。 如果我在其中一个Pod中更改nginx配置,它会传播到所有节点和Pod,因为它正在集群中运行并按比例缩放。

2 个答案:

答案 0 :(得分:0)

  

它是否传播到所有节点和Pod,因为它在   聚集并缩放。

不。仅当您更改部署Yaml时。然后,使用新配置按1到1重新创建吊舱。

答案 1 :(得分:0)

我想在已经说过的内容中添加更多内容。首先,您甚至不应该对Pods进行任何更改,例如由ReplicaSetReplicationControllerDeployment管理。这些对象提供了附加的抽象层,并且有责任确保在您的 kubernetes集群中运行一定数量的特定类型的Pods。 如上所述,控制器由多少个节点组成的集群中的所有节点都可以。

在单个Pod中所做的更改不仅不会传播到其他Pods,而且如果新创建的Pod更改后的配置崩溃,则很容易丢失。

请记住,Deployment的任务之一是确保一定数量的给定类型的Pods(在Google的Pod template部分中指定Deployment)始终处于运行状态。当您手动重新配置的Pod掉线时,您的Deployment(实际上是由ReplicaSet创建的Deployment)在幕后行动并重新创建了Pod。但是如何重新创建它呢?是否考虑到您对此类Pod进行的更改?当然不是,它将根据template中给出的Deployment重新创建它。

如果您想在Pods中一一进行更改, kubernetes 允许您通过提供所谓的rolling update机制来进行更改。 Here,您可以了解使用 ReplicationController 的老式方法,该方法已不再使用,因为它已被DeploymentsReplicaSets取代,但我认为仍然值得阅读只是为了掌握概念。 目前,部署是解决之道。关于更新Deployment,您可以阅读here。请注意,默认更新策略为RollingUpdate,以确保更改不会一次应用到所有Pod,而是一次一个地应用。

相关问题