繁体   English   中英

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

[英]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。

我想在已经说过的内容中添加更多内容。 首先,您甚至不应该对由PodsReplicationControllerDeployment管理的ReplicaSet进行任何更改。 这是提供额外抽象层的对象,它们有责任确保在您的Pods集群中运行特定数量的 Pod。 正如提到的控制器跨越集群中的所有节点一样,您的集群由多少个节点组成并不重要。

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

请记住, Deployment的任务之一是确保Pods的给定类型的 Pod(在DeploymentPod template部分中指定)始终启动并运行。 当您手动重新配置的Pod出现故障时,您的Deployment (实际上是由Deployment创建的ReplicaSet )在幕后行动并重新创建这样的Pod 但它是如何重现的呢? 它是否考虑到您对此类Pod引入的更改? 当然不是,它会根据Deployment中给出的template重新创建它。

如果您想对Pod 进行一项一项更改,kubernetes Pods您通过提供所谓的滚动更新机制来做到这一点。 在这里,您可以阅读有关使用ReplicationController的老式方法的信息,该方法不再使用,因为它已被DeploymentsReplicaSets取代,但我认为为了掌握这个概念仍然值得一读。 目前部署方式是 go。 关于更新Deployment ,您可以在此处阅读。 请注意,默认的更新策略是RollingUpdate ,它确保更改不会一次应用到所有 Pod,而是一个一个应用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM