kubernetes - 当我们扩展 kubernetes 部署并更改其中一个 pod 或容器配置时会发生什么?
问题描述
当我通过创建部署来扩展应用程序时。假设我在 3 个集群上运行 nginx 服务。Nginx 在多个 pod 的容器中运行。如果我在其中一个 pod 中更改 nginx 配置,它是否会传播到所有节点和 pod,因为它在集群中运行并进行了扩展。
解决方案
我想在已经说过的内容中添加更多内容。首先,您甚至不应该对由 或Pods
管理的ReplicaSet
任何更改进行管理。这是提供额外抽象层的对象,它们有责任确保在您的kubernetes 集群中运行特定数量的特定类型。正如提到的控制器跨越集群中的所有节点一样,您的集群由多少个节点组成并不重要。ReplicationController
Deployment
Pods
在单个中所做的更改Pod
不仅不会传播到其他地方Pods
,而且如果新创建Pod
的更改配置崩溃时可能很容易丢失。
请记住,其中一项任务Deployment
是确保一定数量Pods
的给定类型(在Pod
template
部分中指定Deployment
)始终启动并运行。当您手动重新配置失败Pod
时,您的Deployment
(实际上ReplicaSet
由. 但它如何重新创建它?它是否考虑到您对此类所做的更改?当然不是,它会根据.Deployment
Pod
Pod
template
Deployment
如果您想对您的Pods
一项一项进行更改, kubernetes允许您通过提供所谓的滚动更新机制来做到这一点。
在这里,您可以阅读有关使用ReplicationController的老式方法的信息,该方法不再使用,因为它已被替换Deployments
,ReplicaSets
但我认为仍然值得一读以掌握这个概念。目前部署是要走的路。关于更新Deployment
你可以在这里阅读。请注意,默认更新策略是RollingUpdate
确保更改不会一次应用于所有 Pod,而是一个接一个地应用。
推荐阅读
- python - 在 Python 中循环无限嵌套的字典
- json - Avro Schema 格式异常 - “SecurityClassification” 不是定义的名称
- python - Python烧瓶路线:什么是'?到底是什么意思?
- ios - [NSNull 长度]:无法识别的选择器发送到实例 0x10f8c6fc0' swift 4 iOS
- c++ - 如果模板没有可变参数,则 Lambda 被推导出为 std::function
- javascript - NodeJS 的 https 模块是否遵循重定向?
- excel - VBA - 汇总到主工作表
- c# - C# Selenium:等到下拉加载/显示值?
- node.js - 如何从 lib.dom.d.ts 禁用全局变量?
- c++ - 输入两个字符序列时如何读取单个字符并输出?使用 while 循环和 C++