Cal*_*leb 11 kubernetes google-kubernetes-engine
我可以在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
Run Code Online (Sandbox Code Playgroud)
服务2.yaml:
id: service-2
port: 80
containerPort: 8081
selector:
name: frontend-2
createExternalLoadBalancer: true
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
截至目前,GKE 依赖 Kubernetes 0.4.x,它在每个节点上为每个服务分配端口。使用此配置,您不能让多个服务侦听端口 80。
Kubernetes 0.5.x 引入了一种新的网络模型,为每个服务映射一个单独的 IP。因此,一旦 GKE 升级,您将能够在不同的 IP/端口上公开多个服务。
小智 5
是的,多个服务可以有相同的端口,因为每个服务都有自己的 IP 地址,这无关紧要。在 google kubernetes 控制台中运行
kubectl get svc
Run Code Online (Sandbox Code Playgroud)
这将列出所有服务,并且可以通过将其复制到浏览器中使用相应的端口号来检查 EXTERNAL IP。