【问题标题】:kubectl delete pod with deployment namekubectl 删除具有部署名称的 pod
【发布时间】:2021-03-21 10:48:50
【问题描述】:

有时我经常使用kubectl delete pod 来调试我的 pod,因此它会更新容器映像。但每次我都要查找 pod 的完整名称:

kubectl delete pod deployment_name-56fccbbfb8g4rj6

如何在不知道哈希的情况下删除 pod?

【问题讨论】:

  • 你应该不需要手动删除任何东西来更新图像;只需更改包含部署规范中的 image: 标签,它就会自动将 Pod 替换为新的。

标签: kubernetes containers kubectl kubernetes-pod


【解决方案1】:

您可以根据标签删除 pod。例如,如果你的 pod 有标签 app=alpine,你可以这样删除它:

kubectl delete pod -l app=alpine

【讨论】:

  • -nxxx 是做什么的?
  • --namespace your_namespace 的缩写。
【解决方案2】:

根据您的 shell,您可以使用 auto completion 让系统建议您的 pod 名称。

  • Bash-完成由许多包管理器提供(请参阅here)。你 可以用apt-get install bash-completionyum install bash-completion等安装。

  • 对于Zsh,可以使用命令kubectl completion zsh 生成。在您的 shell 中获取完成脚本可以启用 kubectl 自动补全。

    要在所有 shell 会话中这样做,请将以下内容添加到您的 ~/.zshrc 文件中:

    source <(kubectl completion zsh)
    
    

另一件事是您无需销毁 pod 即可更新映像。您可以简单地使用kubectl patch kubectl set image

如需更多阅读内容,请查看 Kubernetes 文档关于修补 API objects with kubectl

【讨论】:

    【解决方案3】:
    • 删除 pod/命名空间

    kubectl 获取 pod --all-namespaces | grep -viE "compl|running" | awk 'NR>1{print $2 " -n " $1}' |while read line;do kubectl delete pod $line;done

    【讨论】:

      【解决方案4】:

      这是不可能的,但您可以在此处使用 kubectl 一次性删除所有这些:

      kubectl delete --all pods --namespace=foo
      

      如果您想删除单个 pod,您必须手动执行。否则试试这个解决方案。

      【讨论】:

        猜你喜欢
        • 2020-12-27
        • 2019-01-26
        • 2017-07-05
        • 2017-08-30
        • 1970-01-01
        • 2022-01-13
        • 2020-10-23
        • 2018-05-03
        • 1970-01-01
        相关资源
        最近更新 更多