【问题标题】:if we want to make modification to running pods configuration, which is advisable whether to deployment or to pods?如果我们想对正在运行的 Pod 配置进行修改,建议是部署还是 Pod?
【发布时间】:2021-09-12 16:23:03
【问题描述】:
如果我们需要修改正在运行的 pod 的属性,推荐的方式是什么,原因是什么。
我猜一旦将 pod 作为部署的一部分部署,我们可以通过 kubectl edit pod 或 kubectl edit deploy 修改 pod 属性。
想了解这两个操作之间是否有任何区别。 ?
【问题讨论】:
标签:
kubernetes
kubernetes-helm
kubernetes-ingress
azure-aks
kubernetes-pod
【解决方案1】:
修改 Deployment 而不是 Pod。
为什么?
部署描述了您的 pod 所需的状态。 Deployment 控制器在控制循环中持续监视 Deployment 对象。它从 Deployment 规范中读取所需的 pod 状态,并尝试确保集群中的状态。因此,如果您编辑 pod 并更改某些内容,Deployment 控制器将在下一次重新同步时覆盖更改,因为您的修改不存在于 Deployment 规范中。
【解决方案2】:
在大多数情况下,您无法编辑 pod。在API definition of a PodSpec 中,containers 和initContainers 字段都被描述为“无法更新”。 Pod 规范中几乎所有有趣的东西都在 Container 子对象中。
由此得出的结论是,您不能“修改正在运行的 pod 的属性”。您只能删除它们并将其替换为具有所需属性的新 pod。如果您在部署规范中编辑 pod 模板,Kubernetes 就会这样做。