【问题标题】:equivalent to `kubectl delete pods --all -n namespace` in helm相当于 helm 中的 `kubectl delete pods --all -n namespace`
【发布时间】:2019-09-13 17:23:00
【问题描述】:

我需要在生产集群上简单地重新创建某些版本的所有 pod,比如 10 个。 是否有一个helm 命令来循环遍历版本名称,每个版本下的 pod 应该被删除然后重新创建。有什么提示吗?

我很熟悉

for nmspc in $namespace_list; do kubectl delete pods -n $nmspc; done

但是,我正在尝试查看是否有等效的 helm 命令来执行相同的操作,这样一旦在版本下删除了 pod,它们就会再次启动。

for rlsz in $release_list; do helm delete pods -n $rlsz; done

这样的东西存在吗?

【问题讨论】:

    标签: kubernetes kubernetes-helm kubectl


    【解决方案1】:

    @Alex Pakka 建议您使用 helm upgrade --recreate-pods <release_name> path/to/chart 进行正确处理,但有时这取决于图表。

    例如,我从stable/nginx-ingress 取了nginx-ingress-1.15.0.tgz

    helm fetch stable/nginx-ingress
    

    并以标准方式安装

    helm install --name nginx-ingress --namespace kube-system nginx-ingress-1.15.0.tgz
    

    部署后,我能够使用以下命令成功重新创建 pod:

    helm upgrade --recreate-pods nginx-ingress nginx-ingress-1.15.0.tgz --username "xxxxx" --password "xxxxx"

    ---
    nginx-ingress-controller-cd996946d-95ndx                       1/1     Running   0          47s
    nginx-ingress-default-backend-77c7c664bb-2nsdp                 1/1     Running   0          46s
    ---
    nginx-ingress-controller-cd996946d-95ndx                       1/1     Terminating         0          93s
    nginx-ingress-controller-cd996946d-dd6dc                       0/1     ContainerCreating   0          0s
    nginx-ingress-default-backend-77c7c664bb-2nsdp                 1/1     Terminating         0          92s
    nginx-ingress-default-backend-77c7c664bb-mnrvj                 0/1     ContainerCreating   0          0s
    ---
    nginx-ingress-controller-cd996946d-dd6dc                       1/1     Running   0          21s
    nginx-ingress-default-backend-77c7c664bb-mnrvj                 1/1     Running   0          21s
    

    【讨论】:

      【解决方案2】:

      你可以试试

      helm upgrade --recreate-pods <release_name> path/to/chart
      

      如果你的图表是按目录列表组织的,并且目录名称对应于发布名称(推荐的方法),你可以使用

      for d in */ ; do
          helm upgrade --recreate-pods "${d%?} "${d}"
      done
      

      ${d%?} 从目录名称中删除尾部斜杠。

      注意,根据定义,recreate-pods 会导致停机。

      如果你只是想重启 Pod,并且它们都是通过 Helm 部署的,你可以简单地这样做

      kubectl delete pods -n my-namespace --all
      

      Tiller 会重新创建它们,就像它们崩溃了一样。

      【讨论】:

      • helm upgrade 需要 2 个参数:发布名称和图表路径。并非来自图表的所有信息都存储在 Kubernetes 中,并且对 Tiller 不可用。但是,我用另一种可能更适合您的方法更新了我的答案。
      • 谢谢:我对 kubectl delete 很熟悉,但只是想将 helm delete 用作标准程序,因为发布是通过 helm 部署的,所以我们也想通过同样的方式进行任何相关操作。因此打电话。
      • 得到 400 错误.. helm upgrade --recreate-pods namespace-manager aws-sw-file.tgz --username "xxxxx" --password "xxxxx" --dry-run --debug
      • @AhmFM 很难说是什么导致了 400 Bad Request - 可能是 ssl/证书问题,可能是版本不兼容,可能是 tgz 文件的内容不是以具有 @987654327 的 Chart.yaml 开头@...
      猜你喜欢
      • 1970-01-01
      • 2023-02-20
      • 1970-01-01
      • 2022-01-27
      • 2022-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-12
      相关资源
      最近更新 更多