如何在 kubernetes 中使用 yaml 文件删除和重新创建 pod

Posted

技术标签:

【中文标题】如何在 kubernetes 中使用 yaml 文件删除和重新创建 pod【英文标题】:How to delete and recreate pods using yaml file in kubernetes 【发布时间】:2018-08-17 23:34:36 【问题描述】:

我有一个 yaml 文件,可用于创建 pod。我正在使用仪表板,所以我可以简单地选择 yaml 文件,它会创建 pod。 Pod 将启动容器,容器将运行 docker 映像。所以现在假设我对 docker 映像做了一些更改,并想再次部署它。为此,我将删除已经运行的 pod 并上传 yaml 文件。

除了删除和再次上传 yaml 文件之外,是否有任何可用的关键字可以删除已经运行的 pod/deployment 并重新创建它。

谢谢

【问题讨论】:

你可以试试这里的建议:***.com/questions/45848606/… 【参考方案1】:

如果您将其用于开发,您可能会逃脱

containers:
- image: my/app:dev
  imagePullPolicy: Always

有了这个,每当你的 pod 被重新创建时,你都会得到新的图像版本。

也就是说,您需要使用 Deployment 之类的工具来自动重新启动 pod,然后您只需 kubectl delete my-pod-xxxxx-yyy 擦除旧的,并在几秒钟内获得新的、当前的。

对于产品,请不要这样做。只需使用标记图像并将更改的图像应用到您的部署中,使用 kubectl apply -f my.yaml 或最好使用类似 Helm 的东西(但对于初学者来说这是更复杂的主题)

【讨论】:

【参考方案2】:

我不记得我第一次看到这个方法的 *** 问题,但这里又是:

kubectl --namespace thenamespace get pod thepod -o yaml | kubectl replace --save-config -f -

您可以使用所有 k8s 资源来做到这一点。

【讨论】:

关于使用它的一个注意事项是,如果您遵循声明式部署方法(即使用kubectl apply),则使用replace 将不会写入last-applied-configuration 注释,除非您添加--save-config 选项。命令式和声明式方法的比较可在 kubernetes.io/docs/concepts/overview/object-management-kubectl/… 获得 非常有趣!谢谢你。

以上是关于如何在 kubernetes 中使用 yaml 文件删除和重新创建 pod的主要内容,如果未能解决你的问题,请参考以下文章

Kubernetes:通过轻量化工具 kubespy 实时观察YAML资源变更

如何在 kubernetes 中使用 yaml 文件删除和重新创建 pod

如何通过yaml将秘密文件设置为kubernetes秘密?

关于 Kubernetes 中通过 Kustomize 定制 Yaml资源文件的一些笔记

关于 Kubernetes 中通过 Kustomize 定制 Yaml资源文件的一些笔记

Kubernetes:通过轻量化工具 kubespy 实时观察YAML资源变更