我可以在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
答案 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。