从命名空间名称中具有正则表达式模式匹配的节点获取 k8s pod

Ahm*_*mFM 4 regex bash awk sed kubectl

团队,

我能够获取节点上运行的所有 Pod 及其命名空间,但我的命名空间是动态生成的,并且它们最终会随着字符的变化而变化。有没有一种方法可以包含一个正则表达式/模式,我可以在 kubectl 命令中使用它来从所有匹配的命名空间中提取所有 pod?

kubectl get pods -n team-1-user1 --field-selector=spec.nodeName=node1,status.phase=Running
Run Code Online (Sandbox Code Playgroud)

实际输出1:有效

NAMESPACE                                     NAME                                                                   READY   STATUS    RESTARTS   AGE
team-1-user1                                   calico-node-9j5k2                                                      1/1     Running   2          104d
team-1-user1                                   kube-proxy-ht7ch                                                       1/1     Running   2          130d

Run Code Online (Sandbox Code Playgroud)

我想要在下面为所有以“team-”开头的命名空间拉取 Pod。

kubectl get pods -n team-* --field-selector=spec.nodeName=node1,status.phase=Running
Run Code Online (Sandbox Code Playgroud)

实际输出2:失败

No resources found in team-workflow-2134-asf-324-d.yaml namespace.
Run Code Online (Sandbox Code Playgroud)

预期结果:想要这个..

NAMESPACE                                     NAME                                                                   READY   STATUS    RESTARTS   AGE
team-1-user1                                   calico-node-9j5k2                                                      1/1     Running   2          104d
team-1-user1                                   kube-proxy-ht7ch                                                       1/1     Running   2          130d

team-2-user1                                   calico-node-9j5k2                                                      1/1     Running   2          1d
team-2-user1                                   kube-proxy-ht7ch                                                       1/1     Running   2          10d

Run Code Online (Sandbox Code Playgroud)

Abh*_*ngh 9

您可以将 的输出通过管道传输kubectl get podsawk并匹配正则表达式:

\n\n
kubectl get pods --all-namespaces --no-headers |  awk \'{if ($1 ~ "team-") print $0}\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

下面是相同的示例输出,在kube-命名空间中搜索 pod:

\n\n
\xe2\x9d\xaf\xe2\x9d\xaf\xe2\x9d\xaf kubectl get pods --all-namespaces --no-headers |  awk \'{if ($1 ~ "kube-") print $0}\'\nkube-system            coredns-6955765f44-27wxs                     1/1   Running             0     107s\nkube-system            coredns-6955765f44-ztgq8                     1/1   Running             0     106s\nkube-system            etcd-minikube                                1/1   Running             0     109s\nkube-system            kube-addon-manager-minikube                  1/1   Running             0     108s\n
Run Code Online (Sandbox Code Playgroud)\n

  • 您可以为每个 pod 分配标签,然后使用它们来选择具有特定标签的 pod,您可以通过 kubectl get pods --show-labels 来查看 pod 上的当前标签 (2认同)