在Google容器引擎上的相同Kubernetes群集中的端口80上运行多个服务

时间:2014-12-04 16:22:54

标签: kubernetes google-kubernetes-engine

我可以在Google Container Engine上的Kubernetes中的端口80上运行多项服务吗?每个服务都有一个专用的外部IP地址,因此理论上路由器应该能够根据它的IP地址路由到每个服务。

到目前为止,我已经为" frontend-1"创建了pods。和"前端-2"在集装箱引擎上。我尝试为它们创建单独的服务,它们都在端口80上运行,具有独特的外部IP,但它没有工作。是否有另一种方法可以在不使用自定义路由服务的情况下在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

3 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:2)

截至今天,GKE依赖于Kubernetes 0.4.x,它为每个服务的每个节点分配端口。使用此配置,您无法在端口80上侦听多个服务。

Kubernetes 0.5.x引入了一种新的网络模型,为每种服务映射一个单独的IP。因此,一旦GKE升级,您将能够在不同的IP /端口上公开多个服务。

答案 2 :(得分:0)

是的,多个服务可以具有相同的端口,这无关紧要,因为每个服务都具有自己的IP地址。在Google kubernetes控制台中运行

kubectl get svc

这将列出所有服务,可以通过在浏览器中使用相应的端口号将其复制来检查EXTERNAL IP。