2014-12-04 2 views
7

Google 컨테이너 엔진의 Kubernetes에서 포트 80에서 여러 서비스를 실행할 수 있습니까? 각 서비스에는 전용 외부 IP 주소가 있으므로 이론적으로 라우터는 IP 주소를 기반으로 각 서비스에 라우팅 할 수 있어야합니다.Google 컨테이너 엔진의 동일한 Kubernetes 클러스터에서 포트 80에 여러 서비스 실행

지금까지 컨테이너 엔진에서 "frontend-1"및 "frontend-2"용 포드를 만들었습니다. 필자는 고유 한 외부 IP로 포트 80에서 실행되는 별도의 서비스를 만들려고했지만 작동하지 않았습니다. 커스텀 라우팅 서비스를 사용하지 않고 Kubernetes에서 이것을 수행 할 수있는 다른 방법이 있습니까?

서비스 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은 다른 DNS 이름/ips를 다른 서비스로 라우팅 할 수있는 Ingress 유형이 있습니다. 부터 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 
관련 문제