回答问题

当我在下面使用它时,它会在从命令行匹配模式后删除正在运行的 POD:

kubectl get pods -n bi-dev --no-headers=true | awk '/group-react/{print $1}' | xargs kubectl delete -n bi-dev pod

但是,当我在 .bash_profile 中将此命令用作别名时,它不会执行。这就是我定义它的方式:

 alias kdpgroup="kubectl get pods -n bi-dev --no-headers=true | awk '/group-react/{print $1}'|  kubectl delete -n bi-dev pod"

当按如下方式执行此操作时,我在命令行中收到以下错误:

~ $ kdpgroup
error: resource(s) were provided, but no name, label selector, or --all flag specified

当我在 .bash_profile 中定义它时,我得到了这个:

~ $ . ./.bash_profile
-bash: alias: }| xargs  kubectl delete -n bi-dev pod: not found
~ $

我是否缺少使用 Pattern Match 或 Wildcard 删除 POD 的内容?

谢谢

Answers

我是否缺少使用模式匹配或通配符删除 POD 的内容?

在使用 Kubernetes 时,更常见的是使用 labelsselectors。例如。如果您部署了一个应用程序,您通常会在 pod 上设置一个标签,例如app=my-app然后您可以使用例如kubectl get pods -l app=my-app.

使用这种方法,可以更轻松地删除您感兴趣的 pod,例如

kubectl delete pods -l app=my-app

或使用命名空间

kubectl delete pods -l app=my-app -n default

查看更多关于Kubernetes 标签和选择器

基于集合的选择器

我有一些 pod 以“superset-react”和“superset-graphql”的名义运行,我想搜索我的通配符超集并在一个命令中删除它们

我建议这些 pod 有标签app=something-reactapp=something-graphql。如果您想对这些应用程序进行分类,例如如果您的“超集”不同,您可以为所有这些类型的应用添加标签app-type=reactapp-type=graphql

然后,您可以使用以下命令删除两种应用类型的 pod:

kubectl delete pods -l 'app-type in (react, graphql)'
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐