kubectl 的标签选择器


首先可以给 pod 添加 label:

kubectl label pod mypod abc=123

显示 label:

kubectl get pod --show-labels

显示部分 label:

kubectl get pod -L app,abc

更改

kubeclt label --overwrite pod mypod abc=456

删除不需要 --overwrite

kubectl label pod mypod abc-

有了标签后,可以

  • 选择没有特定标签
  • 选择有特定标签
  • 选择有特定标签并且值相等或值不等

列出 abc=123 的 pod

kubectl get pod -l abc=123

列出没有 abc 标签的 pod

kubectl get pod -l '!abc'

注意 Linux shell 叹号必须用引号括起来:

还可以这样:

kubectl get pod -l 'abc!=123'
kubectl get pod -l 'abc in (123,456,ddd)'
kubectl get pod -l 'abc notin (123,456)'

如果是多个 -l, 则仅最后一个 -l 有效.

kubectl get pod -l abc -l efg

同时满足:

kubectl get pod -l abc=123,efg=456

好像没有办法表示或者关系, 见:
https://v1-16.docs.kubernetes.io/docs/concepts/overview/working-with-objects/labels/

Caution: For both equality-based and set-based conditions there is no logical OR (||) operator. Ensure your filter statements are structured accordingly.