2017-04-12 23 views
4

docs非常適合解釋如何在節點上設置污點或刪除污點。我可以使用kubectl describe node來獲得一個節點的詳細描述,包括它的污點。但是如果我忘記了我創建的污點名稱,或者我設置了哪些節點,該怎麼辦?我可以列出我的所有節點,以及它們上面存在的任何污點嗎?如何列出我的節點上的污點?

回答

9

在kuberentes 1.6.x中,節點污點已經進入規範。因此,jaxxstorm的上述回答將不起作用。相反,您可以使用以下模板。

{{printf "%-50s %-12s\n" "Node" "Taint"}} 
{{- range .items}} 
    {{- if $taint := (index .spec "taints") }} 
     {{- .metadata.name }}{{ "\t" }} 
     {{- range $taint }} 
      {{- .key }}={{ .value }}:{{ .effect }}{{ "\t" }} 
     {{- end }} 
     {{- "\n" }} 
    {{- end}} 
{{- end}} 

我有保存到一個文件,然後引用它,像這樣:

kubectl get nodes -o go-template-file="./nodes-taints.tmpl" 

你會得到輸出,像這樣:

Node           Taint 
ip-xxx-xxx-xxx-xxx.us-west-2.compute.internal dedicate=etcd:NoSchedule 
ip-xxx-xxx-xxx-xxx.us-west-2.compute.internal dedicate=jenkins:NoSchedule 
ip-xxx-xxx-xxx-xxx.us-west-2.compute.internal dedicate=etcd:NoSchedule 
ip-xxx-xxx-xxx-xxx.us-west-2.compute.internal dedicate=containerlinux-canary-channel-workers:NoSchedule 
ip-xxx-xxx-xxx-xxx.us-west-2.compute.internal dedicate=jenkins:NoSchedule 
ip-xxx-xxx-xxx-xxx.us-west-2.compute.internal dedicate=etcd:NoSchedule 
ip-xxx-xxx-xxx-xxx.us-west-2.compute.internal dedicate=etcd:NoSchedule 
ip-xxx-xxx-xxx-xxx.us-west-2.compute.internal dedicate=etcd:NoSchedule 
ip-xxx-xxx-xxx-xxx.us-west-2.compute.internal dedicate=jenkins:NoSchedule 

我不是一個巨大的去模板用戶,所以我確信有一些事情我可以做得更好,但事實就是如此。

1

您可以使用kubectl走吧模板輸出選項,以幫助你在這裏,

kubectl get nodes -o go-template='{{range .items}}{{if $x := index .metadata.annotations "scheduler.alpha.kubernetes.io/taints"}}{{with $x := index .metadata.name}}{{.}}{{printf "\n"}}{{end}}{{end}}{{end}}'

在我的集羣,這個打印我的主人,這是污染:

kubemaster-1.example.net kubemaster-2.example.net kubemaster-3.example.net

+0

這不再1.6.x的工作準備1.6.x的一個更完整的答案 –

2

要查找節點的污點可以運行:

kubectl describe nodes your-node-name 

輸出:

Name:     your-node-name 
... 
Taints:     node-role.kubernetes.io/master:NoSchedule 
CreationTimestamp:  Wed, 19 Jul 2017 06:00:23 +0800 
相關問題