【问题标题】:get k8s pods from a node with regex pattern match in namespace name从名称空间名称中具有正则表达式模式匹配的节点获取 k8s pod
【发布时间】:2020-04-02 04:09:54
【问题描述】:

团队,

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

kubectl get pods -n team-1-user1 --field-selector=spec.nodeName=node1,status.phase=Running

实际输出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

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

kubectl get pods -n team-* --field-selector=spec.nodeName=node1,status.phase=Running

实际输出2:失败

No resources found in team-workflow-2134-asf-324-d.yaml namespace.

预期结果:想要这个..

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

【问题讨论】:

  • 不,您不能使用 glob 或正则表达式。您可以做的是使用标签进行查询。类似kubectl get pods -l mylabel=myvalue --all-namespaces
  • 但是我的命名空间没有在标签下列出或者我不理解这个建议。

标签: regex bash awk sed kubectl


【解决方案1】:

您可以将kubectl get pods 的输出通过管道传输到awk 并匹配一个正则表达式:

kubectl get pods --all-namespaces --no-headers |  awk '{if ($1 ~ "team-") print $0}'

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

❯❯❯ kubectl get pods --all-namespaces --no-headers |  awk '{if ($1 ~ "kube-") print $0}'
kube-system            coredns-6955765f44-27wxs                     1/1   Running             0     107s
kube-system            coredns-6955765f44-ztgq8                     1/1   Running             0     106s
kube-system            etcd-minikube                                1/1   Running             0     109s
kube-system            kube-addon-manager-minikube                  1/1   Running             0     108s

【讨论】:

  • 那么没有办法在kubectl中进行扩展吗?
  • @AhmFM 不,我建议您提前计划好标签。
  • 标签是首选方法,但如果您没有提前计划使用标签,这将暂时有效
  • 但是我的命名空间没有在标签下列出或者我不理解这个建议。
  • 您可以为每个pod分配标签,然后使用它们来选择具有特定标签的pod,您可以通过kubectl get pods --show-labels查看pod上的当前标签
猜你喜欢
  • 2023-04-05
  • 1970-01-01
  • 2016-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-11
  • 2019-08-09
  • 1970-01-01
相关资源
最近更新 更多