首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubenetes与模式匹配或通配符

Kubenetes与模式匹配或通配符
EN

Stack Overflow用户
提问于 2019-12-25 06:01:41
回答 3查看 22.3K关注 0票数 25

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

代码语言:javascript
复制
kubectl get pods -n bi-dev --no-headers=true | awk '/group-react/{print $1}' | xargs kubectl delete -n bi-dev pod

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

代码语言:javascript
复制
 alias kdpgroup="kubectl get pods -n bi-dev --no-headers=true | awk '/group-react/{print $1}'|  kubectl delete -n bi-dev pod"

如下所示执行此命令时,我在命令行中得到以下错误:

代码语言:javascript
复制
~ $ kdpgroup
error: resource(s) were provided, but no name, label selector, or --all flag specified

当我在.bash_profile中定义它时,我得到这样的结果:

代码语言:javascript
复制
~ $ . ./.bash_profile
-bash: alias: }| xargs  kubectl delete -n bi-dev pod: not found
~ $

我是不是遗漏了用Pattern Match或Wilcard删除POD的东西?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-12-27 19:07:36

使用模式匹配或使用通配符删除POD时,我是否遗漏了什么?

在使用Kubernetes时,更常见的是使用标签和选择器。例如,如果你部署了一个应用程序,你通常会在pods上设置一个标签,比如app=my-app,然后你就可以用kubectl get pods -l app=my-app来获取pods。

使用此方法可以更容易地删除您感兴趣的pod,例如

代码语言:javascript
复制
kubectl delete pods -l app=my-app

或者使用命名空间

代码语言:javascript
复制
kubectl delete pods -l app=my-app -n default

Kubernetes Labels and Selectors上查看更多信息

基于集合的选择器

我有一些pod正在运行,名为" superset -react“和"superset-graphql”,我想搜索我的通配符超集并在一个命令中删除这两个超集

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

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

代码语言:javascript
复制
kubectl delete pods -l 'app-type in (react, graphql)'
票数 28
EN

Stack Overflow用户

发布于 2021-05-14 23:04:48

正如问题所问,这是关于使用通配符的。让我给出使用通配符删除pod的示例。

应用程序删除包含单词“的Pod

<namespace>替换为要从中删除pods的名称空间。

代码语言:javascript
复制
kubectl get pods -n <namespace> --no-headers=true | awk '/application/{print $1}'| xargs  kubectl delete -n <namespace> pod

这将给出如下的响应。它将打印出已删除的pod。

代码语言:javascript
复制
pod "sre-application-7fb4f5bff9-8crgx" deleted
pod "sre-application-7fb4f5bff9-ftzfd" deleted
pod "sre-application-7fb4f5bff9-rrkt2" deleted

删除包含“应用”或“服务”的Pod

<namespace>替换为要从中删除pods的名称空间。

代码语言:javascript
复制
kubectl get pods -n <namespace> --no-headers=true | awk '/application|service/{print $1}'| xargs  kubectl delete -n <namespace> pod

这将给出如下的响应。它将打印出已删除的pod。

代码语言:javascript
复制
pod "sre-application-7fb4f5bff9-8crgx" deleted
pod "sre-application-7fb4f5bff9-ftzfd" deleted
pod "sre-service-7fb4f5bff9-rrkt2" deleted
票数 13
EN

Stack Overflow用户

发布于 2019-12-27 18:54:57

您只需转义awk命令中的'$1‘变量:

代码语言:javascript
复制
alias kdpgroup="kubectl get pods -n bi-dev --no-headers=true | awk '/group-react/{print \$1}'| xargs kubectl delete -n bi-dev pod"

我知道escape很无聊,如果你想避免它,你可以在你的.bash_profile中作为一个函数使用:

代码语言:javascript
复制
kdpgroup() {
    kubectl get pods -n default --no-headers=true | awk '{print $1}' | xargs kubectl delete pod -n default
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59473707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档