pau*_*ldx 17 kubernetes kubectl kubernetes-pod
当我在下面使用时,它会在匹配命令行模式后删除正在运行的 POD:
kubectl get pods -n bi-dev --no-headers=true | awk '/group-react/{print $1}' | xargs kubectl delete -n bi-dev pod
Run Code Online (Sandbox Code Playgroud)
但是,当我将此命令用作 .bash_profile 中的别名时,它不会执行。这就是我定义它的方式:
alias kdpgroup="kubectl get pods -n bi-dev --no-headers=true | awk '/group-react/{print $1}'| kubectl delete -n bi-dev pod"
Run Code Online (Sandbox Code Playgroud)
当按如下方式执行此操作时,我在命令行中出现以下错误:
~ $ kdpgroup
error: resource(s) were provided, but no name, label selector, or --all flag specified
Run Code Online (Sandbox Code Playgroud)
当我在 .bash_profile 中定义它时,我得到了这个:
~ $ . ./.bash_profile
-bash: alias: }| xargs kubectl delete -n bi-dev pod: not found
~ $
Run Code Online (Sandbox Code Playgroud)
我是否缺少使用 Pattern Match 或 Wilcard 删除 POD 的内容?
谢谢
Jon*_*nas 22
我是否缺少使用模式匹配或通配符删除 POD 的内容?
使用 Kubernetes 时,更常见的是使用标签和选择器。例如,如果您部署了一个应用程序,您通常会在 pod 上设置标签 eg app=my-app,然后您可以使用 eg 获取 pod kubectl get pods -l app=my-app。
使用这种方法,可以更轻松地删除您感兴趣的 pod,例如
kubectl delete pods -l app=my-app
Run Code Online (Sandbox Code Playgroud)
或使用命名空间
kubectl delete pods -l app=my-app -n default
Run Code Online (Sandbox Code Playgroud)
基于集合的选择器
我有一些 pod 以“superset-react”和“superset-graphql”的名义运行,我想搜索我的通配符超集并在一个命令中删除它们
我建议这些豆荚有标签app=something-react和app=something-graphql. 如果您想将这些应用程序进行分类,例如,如果你的“超”各不相同,你可以添加标签app-type=react和app-type=graphql所有这些类型的应用程序。
然后,您可以使用以下命令删除两种应用类型的 pod:
kubectl delete pods -l 'app-type in (react, graphql)'
Run Code Online (Sandbox Code Playgroud)
正如问题所问,这是关于使用通配符。让我举例说明使用通配符删除 pod。
删除包含“应用程序”一词的 Pod
替换<namespace>为您要从中删除 pod 的命名空间。
kubectl get pods -n <namespace> --no-headers=true | awk '/application/{print $1}'| xargs kubectl delete -n <namespace> pod
Run Code Online (Sandbox Code Playgroud)
这将给出如下响应。它将打印出已删除的 pod。
pod "sre-application-7fb4f5bff9-8crgx" deleted
pod "sre-application-7fb4f5bff9-ftzfd" deleted
pod "sre-application-7fb4f5bff9-rrkt2" deleted
Run Code Online (Sandbox Code Playgroud)
删除包含“应用程序”或“服务”的 Pod
替换<namespace>为您要从中删除 pod 的命名空间。
kubectl get pods -n <namespace> --no-headers=true | awk '/application|service/{print $1}'| xargs kubectl delete -n <namespace> pod
Run Code Online (Sandbox Code Playgroud)
这将给出如下响应。它将打印出已删除的 pod。
pod "sre-application-7fb4f5bff9-8crgx" deleted
pod "sre-application-7fb4f5bff9-ftzfd" deleted
pod "sre-service-7fb4f5bff9-rrkt2" deleted
Run Code Online (Sandbox Code Playgroud)
您只需要在 awk 命令中转义 '$1' 变量:
alias kdpgroup="kubectl get pods -n bi-dev --no-headers=true | awk '/group-react/{print \$1}'| xargs kubectl delete -n bi-dev pod"
Run Code Online (Sandbox Code Playgroud)
我知道转义很无聊,如果你想避免它,你可以在 .bash_profile 中将其用作函数:
kdpgroup() {
kubectl get pods -n default --no-headers=true | awk '{print $1}' | xargs kubectl delete pod -n default
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16819 次 |
| 最近记录: |