14

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

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

3 回答 3

17

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
于 2015-12-03T17:41:22.123 回答
6

是的,多个服务可以有相同的端口,因为每个服务都有自己的 IP 地址。在谷歌 kubernetes 控制台运行

kubectl get svc

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

于 2019-01-31T15:50:09.317 回答
5

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

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

于 2014-12-04T19:13:09.127 回答