Перечисление незапланированных узлов kubernetes по портам в operator-sdk / client-go - PullRequest
0 голосов
/ 23 апреля 2019

Я пытаюсь перечислить все узлы, которые установлены как незапланированные в операторе operator-sdk.Обычно (до 1.12) это означает, что у них установлено spec.unscheduleable.Поэтому я попробовал это:

nodes := &corev1.NodeList{}
opts := &client.ListOptions{}
if err := opts.SetFieldSelector("spec.unschedulable=true"); err != nil {
  reqLogger.Info("Failed to set field selector")
}

Что является ошибкой:

2019-04-23T10:19:39.761-0700    ERROR   kubebuilder.controller  Reconciler error    {"controller": "node-controller", "request": "/nodename", "error": "Index with name field:spec.unschedulable does not exist"}

Я запутался в этом, потому что селектор поля работает из kubectl:

kubectl get nodes --field-selector="spec.unschedulable=true"

Помимо этой проблемы, я заметил, что после версии 1.1.12 поле spec.unscheduleable было устарело в пользу TaintNodeByCondition.Это еще более усложняет ситуацию, потому что теперь я действительно не думаю, что могу использовать кого-либо из поля fieldselector, потому что я не верю (если я не ошибаюсь?), Что вы все равно можете использовать fieldselector с порками.

Итак, мой вопрос - как я могу эффективно перечислить все испорченные / незапланированные узлы в моем кластере, особенно при использовании operator-sdk

ОБНОВЛЕНИЕ:

Мне удалось решить селектор полейпроблема с использованием вызова v1meta.ListOptions, например, так:

nodes := &corev1.NodeList{}
opts := &client.ListOptions{
Raw: &metav1.ListOptions{
  FieldSelector: "spec.unschedulable=true",
  },
}

Однако я до сих пор не знаю, как это сделать с порчей, поэтому я отредактировал вопрос и оставлю его открытым

...