kubernetes - 创建部署时将 pod-template-hash 添加到副本集名称的确切原因是什么?
问题描述
https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#creating-a-deployment提到 adeployment
创建 areplicaSet
但将 a 附加pod-template-hash
到 the 的名称replicaSet
并添加pod-template-hash
asreplicaSet
的标签。
我最好的猜测是deployment
创建多个replicaSets
,并且这个哈希确保副本不重叠。那是对的吗?
解决方案
正确,文档很好地说明了这一点:
pod-template-hash
标签由 Deployment 控制器添加到 Deployment 创建或采用的每个 ReplicaSet 。此标签确保 Deployment 的子 ReplicaSet 不会重叠。它是通过
PodTemplate
对 ReplicaSet 进行哈希处理并使用生成的哈希值作为添加到 ReplicaSet 选择器、Pod 模板标签以及 ReplicaSet 可能具有的任何现有 Pod 中的标签值来生成的。
由于许多不同的原因,这是必要的:
- 当您应用新版本的部署时,根据部署的配置方式和探测方式,以前的 Pod / Pod 可能会一直运行,直到新的 Pod / Pod 没有运行和准备好,然后才会优雅地终止。因此,可能会发生不同
ReplicaSet
(以前和当前)的 Pod 同时运行。 - 部署历史记录可供查阅,如果当前版本停止正常运行(例如,您更改了需要使用的图像并且它只是错误地崩溃),您可能还想回滚到较旧的版本。每个修订版都有自己的 ReplicaSet,可以根据需要进行扩展或缩减,如文档中所述
推荐阅读
- javascript - 无法安装插件添加 phonegap-plugin-push ionic 3
- artifactory - Artifactory - 我们可以在目录级别设置权限吗
- c++ - Boost Multiprecision float128:std::exp 错误:'没有匹配的调用函数'
- node.js - 发送后无法设置标题。在nodejs中
- c - 当存在连续数组时,使用 MPI 用户定义的数据类型是否无用?
- linux - 如何每天轮换日志,仅使用当天的数据?
- javascript - 循环遍历 json 数据并匹配到一个数组
- c# - 停止加载功能在 Visual Studio 中不可用
- php - 使用组合框选择值时无法识别变量
- python - 爬取 0 页(以 0 页/分钟),抓取 0 项