没有标签的节点数?

Count of nodes which do not have a label?

如何使用kubectl获取没有标签的K8S节点? 另外,如何获取没有任何标签的 K8S pods?

根据官方的说法documentation我不认为有办法做到这一点,但你可以通过相等性的否定来做类似的事情:

kubectl get nodes --selector=kubernetes.io/hostname!=node_host_name

基本上你可以 select 所有没有特定标签的东西,你也可以链接 select 或者

更多阅读:https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/

如果不列出所有可能的标签,则没有具体的方法来检查一般情况下是否没有标签。你必须做这个客户端。

无法检查没有标签的 nodes/pods。相反,您可以做的是检查 nodes/pods 的特定标签

按照以下步骤操作

添加标签 mylabel=k8s

master $ kubectl get no
NAME      STATUS    ROLES     AGE       VERSION
master    Ready     master    51m       v1.11.3
node01    Ready     <none>    50m       v1.11.3
master $
master $
master $ kubectl label nodes node01 mylabel=k8s
node/node01 labeled
master $
master $ kubectl get no -L mylabel
NAME      STATUS    ROLES     AGE       VERSION   MYLABEL
master    Ready     master    52m       v1.11.3
node01    Ready     <none>    52m       v1.11.3   k8s

列出标签为 mylabel=k8s 的节点

master $ kubectl get no -l mylabel=k8s
NAME      STATUS    ROLES     AGE       VERSION
node01    Ready     <none>    53m       v1.11.3
master $

列出没有标签 mylabel=k8s 的节点

master $ kubectl get no -l mylabel!=k8s
NAME      STATUS    ROLES     AGE       VERSION
master    Ready     master    53m       v1.11.3

你必须利用 kubectl -o 标志和 go-template 输出:

kubectl get nodes -o go-template='{{range .items }}{{if .metadata.labels }}{{else}}{{printf "%s\n" .metadata.name}}{{ end }}{{end}}

此命令将只显示没有任何标签的节点。同样可以用于 pods:

kubectl get pods --all-namespaces -o go-template='{{range .items }}{{if .metadata.labels }}{{else}}{{printf "%s\n" .metadata.name}}{{ end }}{{end}}'

对于那些想要查找没有特定标签的资源的人,无论其值如何:

kubectl get ns --selector='!label_name'

第一个答案有效,但您也可以使用以下答案

kubectl get nodes -l '!label_name'