【发布时间】:2018-07-23 11:54:09
【问题描述】:
(在开始之前,我在 Windows 10 上使用 minikube v27。)
我使用 nginx 'hello world' 容器创建了一个部署,期望计数为 2:
我实际上进入了 '2 小时' 旧 pod 并将欢迎消息中的 index.html 文件编辑为“损坏” - 我想使用 k8s 看看如果一个 pod 出现“故障”会是什么样子.
如果我将此部署扩展到更多实例,然后再次缩减,我几乎预计 k8s 会删除最旧的 pod,但它始终会删除最新的:
如何让它首先删除最旧的 pod?
(理想情况下,如果可能的话,我只想说“将所有内容重新部署为滚动部署中完全相同的版本/映像/所需数量”)
【问题讨论】:
-
我在这个问题上看到的大多数大问题的答案都涉及在 pod 规范中添加一些会改变的东西——使用带有版本标签的图像,而不是“最新的”,Helm 生成的哈希值ConfigMap 内容作为注释。这仍然是一个好问题。
-
@DavidMaze 即使我可以“欺骗”它认为 pod 已更改,如果没有简单的方法可以做到这一点,我会感到惊讶。保持最古老的豆荚的规模化活动感觉就像餐厅用新鲜的米饭填满他们的米饭锅,但把旧的留在底部。当然,旋转有意义吗?特别是如果豆荚是相同的...
-
吊舱是相同的。你为什么在乎?从纯粹的性能角度来看,较新的 Pod 可能不太热身(缓存中的数据较少等),因此首先删除它们是有意义的。如果您的 pod 随着时间的推移而退化,那么缩小规模并不能解决该问题。
-
@NeilTrodden 它如何“有意义”?如果 Pod 正在运行 Redis 或 Memcached 等内存缓存,并且在运行过去几个小时后,该缓存已完全填充了值,如果您向上和向下扩展部署,您真的希望 k8s 完全删除您的 -填充缓存并将其替换为仅使用了几分钟的缓存?您永远不应该通过 SSH 连接到您的 pod 并直接编辑其中的任何数据,如果您需要在 pod 重新启动或更改之间保留数据,请使用已安装的卷。
-
@NeilTrodden 如果您希望 k8s 自动清除以某种方式损坏的 pod,然后实施应用程序级别的健康检查,更多信息在这里:kubernetes.io/docs/tutorials/k8s201/…
标签: kubernetes