2014-12-04 2 views
7

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

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

сервис-1.yaml:

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

сервис-2.yaml:

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

ответ

1

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

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

4

Kubernetes 1.1 имеет тип Ingress, который позволяет вам маршрутизировать различные имена DNS/ips на разные службы. От 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 

 Смежные вопросы

  • Нет связанных вопросов^_^