Как создать набор состояний с помощью nodeAffinity

Я пытаюсь создать набор состояний в kubernetes 1.9 с помощью nodeAffinity. Я нашел несколько примеров с простым выбором узла, но это не совсем то, чего я хотел бы достичь. Я хочу убедиться, что экземпляры statefulset всегда запускаются на одном узле, например так:

  • StatefulPod-0 на узле-0
  • StatefulPod-1 на узле-1
  • StatefulPod-2 на узле-2

Я попытался пометить соответствующие узлы с помощью statefulpod-name и использовать нисходящий api в nodeselector или nodeaffinity, но я не могу создать рабочий yaml для этого.

Пример:

affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
    - nodeSelectorTerms:
        matchExpressions:
        - key: statefulpodname
          operator: In
          values:
          - valueFrom:
              fieldRef:
                fieldPath: metadata.name

Ошибка:

ValidationError (StatefulSet.spec.template.spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution): недопустимый тип для io.k8s.api.core.v1.NodeSelector: есть "карта", ожидаемый "массив";

Пример:

nodeSelector:
  statefulpodname:
  - valueFrom:
        fieldRef:
          fieldPath: metadata.name

Ошибка:

неверный тип для io.k8s.api.core.v1.PodSpec.nodeSelector: получен "массив", ожидаемая "строка"

Есть идеи?

2 ответа

Как говорится об ошибках got "map", expected "array";попробуйте с:

- nodeSelectorTerms:
  - matchExpressions:
...

Для дальнейшего использования YAML должен быть следующим:

      spec: 
 affinity:
   nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
          - matchExpressions:
            - key: <key>
              operator: <operator>
              values:
              - <values>

Обратите внимание на размещение знаков тире (-).

Другие вопросы по тегам