如何使用kubectl获取没有标签的K8S节点? 另外,如何获取没有标签的K8S吊舱?
答案 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