Запуск нескольких служб на порту 80 в одном кластере Kubernetes в Google Container Engine

Могу ли я запустить несколько сервисов на порту 80 в Kubernetes на Google Container Engine? Каждая служба имеет выделенный внешний IP-адрес, поэтому теоретически маршрутизатор должен иметь возможность выполнять маршрутизацию к каждой службе на основе ее IP-адреса.

До сих пор я создал модули для «frontend-1» и «frontend-2» на Container Engine. Я попытался создать для них отдельные службы, работающие на порту 80 с уникальными внешними IP-адресами, но это не сработало. Есть ли другой способ сделать это в Kubernetes без использования настраиваемой службы маршрутизации?

service-1.yaml:

id: service-1
port: 80
containerPort: 8080
selector:
  name: frontend-1
createExternalLoadBalancer: true

service-2.yaml:

id: service-2
port: 80
containerPort: 8081
selector:
  name: frontend-2
createExternalLoadBalancer: true

person Caleb    schedule 04.12.2014    source источник
comment
Этот вопрос задавали, когда Kubernetes был 0.4, с тех пор многое изменилось. Это не относится к сфере Kubernetes 1.x, я думаю, что его следует удалить.   -  person Caleb    schedule 29.12.2020


Ответы (3)


На сегодняшний день GKE полагается на Kubernetes 0.4.x, который выделяет порты на каждом узле для каждой службы. В этой конфигурации у вас не может быть нескольких сервисов, прослушивающих порт 80.

Kubernetes 0.5.x представил новую сетевую модель, которая отображает отдельный IP-адрес для каждой службы. Таким образом, после обновления GKE вы сможете иметь несколько сервисов, доступных на разных IP / портах.

person proppy    schedule 04.12.2014

Kubernetes 1.1 имеет тип Ingress, который позволяет маршрутизировать разные DNS-имена / IP-адреса на разные службы. Из github

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test
spec:
  rules:
  - host: foo.bar.com
    http:
      paths:
      - backend:
          serviceName: s1
          servicePort: 80
  - host: bar.foo.com
    http:
      paths:
      - backend:
          serviceName: s2
          servicePort: 80
person Reese    schedule 03.12.2015

Да, несколько служб могут иметь одинаковые порты, поскольку это не имеет значения, потому что каждая служба получает собственный IP-адрес. В консоли google kubernetes запустить

kubectl get svc

В нем будут перечислены все службы, и ВНЕШНИЙ IP-адрес можно проверить, скопировав его в браузере с соответствующим номером порта.

person shubham_asati    schedule 31.01.2019