【问题标题】:Kubernetes kubectl patch pod vs delete/create podKubernetes kubectl 补丁 pod 与删除/创建 pod
【发布时间】:2020-10-23 05:02:44
【问题描述】:

我有一个 Pod - 我想更新到最新版本的容器映像,如果失败,然后想将其恢复到早期版本的容器映像。

以下哪种方法适合更新到最新或更早的容器映像。 1> 使用 kubectl 补丁是不错的选择? 2> 删除 pod 并重新创建 pod 是不错的选择吗?

这两种方法的优缺点是什么。

kubectl patch pod test-pod -p '{"spec":{"containers":[{"name":"test","image":"1.0"}]}}'

kubectl delete pod test-pod and kubectl apply -f testpod.yaml

【问题讨论】:

    标签: kubernetes kubectl kubernetes-pod


    【解决方案1】:

    来自文档here 部署用例之一

    如果当前状态是回滚到较早的部署版本 部署不稳定。每次回滚都会更新 部署。

    所以必要时使用部署来执行rolling updaterollback

    kubectl set image deployment.v1.apps/nginx-deployment nginx=nginx:1.161 --record=true
    

    检查推出历史记录

    kubectl rollout history deployment.v1.apps/nginx-deployment
    

    回滚到以前的版本

    kubectl rollout undo deployment.v1.apps/nginx-deployment
    

    【讨论】:

      【解决方案2】:

      根据您提出的场景,您可以选择使用滚动更新策略寻找金丝雀部署,如果新部署的容器无法服务负载,则旧的容器不会被销毁,并且会继续负载由预先存在的容器提供服务。

      另一种方法是保留部署历史记录,您可以定义要由 kubernetes 保存的清单数量,然后您可以手动回滚到您想要的版本

      如果您不知道哪个版本带有哪个图像,那么您可以使用补丁命令,正如您在问题中所描述的那样

      【讨论】:

      • 我的 kubernetes 集群不支持部署资源类型,我收到以下错误:来自服务器的错误(MethodNotAllowed):创建“deployy.yaml”时出错:“部署”类资源不支持发布。应用” 。我正在使用 podspec 进行部署。如何在不使用部署的情况下实现这一目标。无需使用部署即可支持 Pod 的推出/重启。
      猜你喜欢
      • 1970-01-01
      • 2017-08-30
      • 2017-04-02
      • 2016-09-30
      • 2019-12-27
      • 2019-03-16
      • 1970-01-01
      • 2021-09-21
      • 2016-02-04
      相关资源
      最近更新 更多