【问题标题】:Run Multiple Services on Port 80 in same Kubernetes Cluster on Google Container Engine在 Google Container Engine 上的同一 Kubernetes 集群中的 80 端口上运行多个服务
【发布时间】:2015-02-02 14:55:05
【问题描述】:

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

到目前为止,我已经在 Container Engine 上为“frontend-1”和“frontend-2”创建了 pod。我尝试为它们创建单独的服务,它们都在端口 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

【问题讨论】:

  • 这个问题是在 Kubernetes 0.4 时提出的,从那时起发生了很大变化。它在 Kubernetes 1.x 领域无关紧要,我认为应该删除它。

标签: kubernetes google-kubernetes-engine


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    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
    

    【讨论】:

      【解决方案3】:

      是的,多个服务可以有相同的端口,这并不重要,因为每个服务都有自己的 IP 地址。在 google kubernetes 控制台运行

      kubectl get svc
      

      这将列出所有服务,并且可以通过将其复制到浏览器中的相应端口号来检查外部 IP。

      【讨论】:

        猜你喜欢
        • 2018-12-25
        • 2020-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-25
        • 2017-03-26
        • 2016-06-01
        相关资源
        最近更新 更多