[英]What happens when we scale the kubernetes deployment and change one of the pod or container configuration?
当我通过创建部署来扩展应用程序时。假设我在 3 个集群上运行 nginx 服务。 Nginx 在多个 pod 的容器中运行。 如果我在其中一个 pod 中更改 nginx 配置,它是否会传播到所有节点和 pod,因为它在集群中运行并进行了扩展。
它是否会传播到所有节点和 Pod,因为它在集群中运行并进行了扩展。
否。仅当您更改部署 yaml 时。 然后它使用新配置一一重新创建 Pod。
我想在已经说过的内容中添加更多内容。 首先,您甚至不应该对由Pods
、 ReplicationController
或Deployment
管理的ReplicaSet
进行任何更改。 这是提供额外抽象层的对象,它们有责任确保在您的Pods
集群中运行特定数量的 Pod。 正如提到的控制器跨越集群中的所有节点一样,您的集群由多少个节点组成并不重要。
在单个Pod
中所做的更改不仅不会传播到其他Pods
,而且如果新创建的配置更改的Pod
崩溃,则很容易丢失。
请记住, Deployment
的任务之一是确保Pods
的给定类型的 Pod(在Deployment
的Pod
template
部分中指定)始终启动并运行。 当您手动重新配置的Pod
出现故障时,您的Deployment
(实际上是由Deployment
创建的ReplicaSet
)在幕后行动并重新创建这样的Pod
。 但它是如何重现的呢? 它是否考虑到您对此类Pod
引入的更改? 当然不是,它会根据Deployment
中给出的template
重新创建它。
如果您想对Pod 进行一项一项更改,kubernetes Pods
您通过提供所谓的滚动更新机制来做到这一点。 在这里,您可以阅读有关使用ReplicationController的老式方法的信息,该方法不再使用,因为它已被Deployments
和ReplicaSets
取代,但我认为为了掌握这个概念仍然值得一读。 目前部署方式是 go。 关于更新Deployment
,您可以在此处阅读。 请注意,默认的更新策略是RollingUpdate
,它确保更改不会一次应用到所有 Pod,而是一个一个应用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.