没有标签的节点数?

时间:2019-06-17 04:53:20

标签: kubernetes google-kubernetes-engine kubectl azure-kubernetes kubernetes-pod

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

5 个答案:

答案 0 :(得分:3)

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

kubectl get ns --selector='!label_name'

答案 1 :(得分:1)

您必须利用kubectl -o标志和模板输出:

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

此命令将仅显示没有任何标签的节点。相同的内容也可以用于广告连播:

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

答案 2 :(得分:0)

根据官方documentation,我认为没有办法做到这一点,但是您可以在否定平等的情况下做类似的事情:

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

基本上,您可以选择没有特定标签的所有内容,也可以链接选择器

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

答案 3 :(得分:0)

没有列出所有可能的标签,通常没有特定的方法来检查是否没有标签。您将必须在此客户端进行操作。

答案 4 :(得分:0)

无法检查没有标签的节点/吊舱。相反,您可以做的是检查特定标签的节点/吊舱

按照以下步骤

添加标签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