2016-12-27 3 views
4

Я хочу (программно) получить список всех планируемых узлов в моем кластере kubernetes.Как определить планируемые узлы в Kubernetes

Я довольно уверен, что это раньше было возможно, глядя на .spec.unschedulable в полном выходе kubectl get nodes (с помощью JSON или шаблон вывода), но теперь, кажется, что эта информация находится внутри scheduler.alpha.kubernetes.io/taints ключа, который гораздо сложнее разобрать и просто не чувствует себя в нужном месте.

Есть ли другой способ найти эту информацию? Мне что-то не хватает? В настоящее время я использую версию 1.5.1.

UPDATE: Я могу почти попасть с некоторыми Go шаблонами:

$ kubectl get nodes -o go-template='{{range .items}}{{with $x := index .metadata.annotations "scheduler.alpha.kubernetes.io/taints"}}{{.}}{{end}}{{end}}' 
[{"key":"dedicated","value":"master","effect":"NoSchedule"}] 

Но это оставляет меня с сгустком JSON, что я не могу разобрать в шаблоне, и я до сих пор инвертировать результаты и получить имя узла.

ОБНОВЛЕНИЕ 2: По-видимому, незапланированные узлы должны иметь .spec.unschedulable комплект. Кажется, это не всегда так; не уверен, что это связано с ошибкой или недоразумением с моей стороны.

ответ

1

unschedulable по умолчанию false, поэтому значение не будет отображаться в спецификации, если оно не установлено на true. Значение подразумевается в спецификации.

+0

Мне это известно. Согласно моему обновлению, у меня был незапланированный узел без установки '.spec.unschedulable'. У узла действительно было «taint», чтобы сказать, что оно было несложным, и на узел не могли быть запланированы стручки. В настоящее время я подозреваю, что это просто ошибка. –

Смежные вопросы