NodePort запрашивает баланс между развертываниями? - PullRequest
0 голосов
/ 27 сентября 2018

Итак, я настраиваю весь стек в Google Cloud, и у меня есть несколько компонентов, с которыми нужно общаться друг с другом, поэтому я пришел к следующему потоку:

Вход -> Служба Apache -> ApacheРазвертывание (2 экземпляра) -> Служба приложений -> Развертывание приложения (2 экземпляра)

Таким образом, Ingress хорошо разделяет запросы между моими 2 экземплярами Apache, но развертывания Apache не делят его между моими 2 развертываниями приложений..

Службы (Apache и App) в обоих случаях являются службами NodePort.

Я пытаюсь добиться того, чтобы службы (Apache и App) распределяли нагрузки между полученными ими запросами.связанных развертываний, но я не знаю, сможет ли служба NodePort это сделать, поэтому мне было интересно, как мне этого добиться.

yaml службы приложений выглядит так:

apiVersion: v1
kind: Service
metadata:
  name: preprocessor-service
  labels:
    app: preprocessor
spec:
  type: NodePort
  selector:
    app: preprocessor
  ports:
  - port: 80
    targetPort: 8081

1 Ответ

0 голосов
/ 28 сентября 2018

Если вы проходите через clusterIP и используете режим прокси по умолчанию, равный iptables , то служба NodePort будет использовать случайный подход (Kubernetes 1.1 или более поздняя версия), это называется режим прокси iptables .Для более ранних версий Kubernetes 1.0 по умолчанию использовался режим прокси для пользовательского пространства , который выполняет циклический перебор.Если вы хотите контролировать это поведение, вы можете использовать ipvs proxy mode .

Когда я говорю clusterIP , я имею в виду IP-адрес, который понимается только кластером, напримеркак показано ниже:

$ kubectl get svc
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
http-svc     NodePort    10.109.87.179    <none>        80:30723/TCP     5d
kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP          69d

Когда вы указываете NodePort, он также должен быть сеткой для всех узлов кластера.Другими словами, все узлы в вашем кластере будут прослушивать свои внешние IP-адреса на этом конкретном порту, однако вы получите ответ от вашего приложения или модуля, если это произойдет на этом конкретном узле.Таким образом, вы можете потенциально настроить внешний балансировщик нагрузки, который указывает своему бэкэнду конкретный NodePort, и трафик будет перенаправляться в соответствии с проверкой работоспособности порта.

Я не уверен в вашем случае, возможно ли эточто вы не используете clusterIP?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...