nodeSelector не надежно размещает модули на правильных рабочих узлах EKS - PullRequest
0 голосов
/ 11 марта 2020

Я использую кластер Kubernetes в EKS, но по какой-то причине не всегда используется атрибут nodeSelector в развертывании.

Три развертывания: 1 - Cassandra:

kind: StatefulSet
metadata:
  name: cassandra
  labels:
    app: cassandra
spec:
  serviceName: cassandra
  replicas: 3
...
    spec:
      terminationGracePeriodSeconds: 1800
      containers:
      - name: cassandra
        image: gcr.io/google-samples/cassandra:v13
...
      nodeSelector:
        layer: "backend"

2 - Кафка

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    service: kafka
...
    spec:
      containers:
        image: strimzi/kafka:0.11.3-kafka-2.1.0
...
      nodeSelector:
        layer: "backend"
...

3 - Zookeeper

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    service: zookeeper
...
    spec:
      containers:
        image: strimzi/kafka:0.11.3-kafka-2.1.0
...
      nodeSelector:
        layer: "backend"
...

Примечание - все три имеют параметр nodeSelector "layer = backend" в контейнере spe c. У меня есть только 2 "серверных" модуля, однако, когда я смотрю на них, я вижу:

% kubectl get all -o wide
NAME                             READY   STATUS    RESTARTS   AGE     IP             NODE                                         NOMINATED NODE   READINESS GATES
pod/cassandra-0                  1/1     Running   0          9m32s   10.1.150.39    ip-...-27.us-west-2.compute.internal    <none>           <none>
pod/cassandra-1                  1/1     Running   0          7m56s   10.1.100.7     ip-...-252.us-west-2.compute.internal   <none>           <none>
pod/cassandra-2                  1/1     Running   0          6m46s   10.1.150.254   ip-...-27.us-west-2.compute.internal    <none>           <none>
pod/kafka-56dcd8665d-hfvz4       1/1     Running   0          9m32s   10.1.100.247   ip-...-252.us-west-2.compute.internal   <none>           <none>
pod/zookeeper-7f74f96f56-xwjjt   1/1     Running   0          9m32s   10.1.100.128   ip-...-154.us-west-2.compute.internal   <none>           <none>

Они размещены на трех разных узлах - 27, 252 и 154. Просмотр метки "layer" на каждом из них:

> kubectl describe node ip-...-27.us-west-2.compute.internal | grep layer
                    layer=backend
> kubectl describe node ip-...-252.us-west-2.compute.internal | grep layer
                    layer=backend
> kubectl describe node ip-...-154.us-west-2.compute.internal | grep layer
                    layer=perf

Узел 154 имеет метку «perf», а не «backend». Таким образом, согласно моему пониманию nodeSelector, модуль zookeeper не должен был быть помещен туда. Я удалил все (включая сами узлы) и попробовал несколько раз - иногда туда помещается kafka, иногда zookeeper, но надежно что-то помещается туда, куда не следует.

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

Чего мне не хватает? Является ли nodeSelector надежным на 100%? Есть ли другой способ, которым я могу заставить блоки размещаться только на узлах с указанными c метками?

1 Ответ

1 голос
/ 11 марта 2020

Закрыть как ошибка пользователя.

Отдельный процесс отменил мои git изменения, и развертывание, на которое я смотрел в моей IDE, устарело.

...