当我通过创建部署扩展应用程序时。假设我在3个群集上运行nginx服务。 Nginx在多个容器中的容器中运行。 如果我在其中一个Pod中更改nginx配置,它会传播到所有节点和Pod,因为它正在集群中运行并按比例缩放。
答案 0 :(得分:0)
它是否传播到所有节点和Pod,因为它在 聚集并缩放。
不。仅当您更改部署Yaml时。然后,使用新配置按1到1重新创建吊舱。
答案 1 :(得分:0)
我想在已经说过的内容中添加更多内容。首先,您甚至不应该对Pods
进行任何更改,例如由ReplicaSet
,ReplicationController
或Deployment
管理。这些对象提供了附加的抽象层,并且有责任确保在您的 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 的老式方法,该方法已不再使用,因为它已被Deployments
和ReplicaSets
取代,但我认为仍然值得阅读只是为了掌握概念。
目前,部署是解决之道。关于更新Deployment
,您可以阅读here。请注意,默认更新策略为RollingUpdate
,以确保更改不会一次应用到所有Pod,而是一次一个地应用。