我使用Ingress Controller在GKE上部署群集
我使用Helm安装以下内容:
我还部署了入口对象(配置如下)
然后我观察到以下状态...
入口控制器(通过负载均衡器服务)通过两个端点公开:35.197.XX.XX:80,35.197.XX.XX:443
这两个端点由云负载均衡器公开。 我没问题。
但是,当我执行kubectl get ing ingress-service -o wide
时,它会打印出以下信息。
NAME HOSTS ADDRESS PORTS AGE
ingress-service k8s.XX.com.tw 34.87.XX.XX 80, 443 5h50m
我真的不在ADDRESS列下使用IP。
我还可以看到Google在我的Ingress配置文件的末尾添加了一些有关我的负载均衡器IP的额外信息。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
....(ommitted)
spec:
rules:
- host: k8s.XX.com.tw
http:
paths:
- backend:
serviceName: client-cluster-ip-service
servicePort: 3000
path: /?(.*)
- backend:
serviceName: server-cluster-ip-service
servicePort: 5000
path: /api/?(.*)
tls:
- hosts:
- k8s.XX.com.tw
secretName: XX-com-tw
status:
loadBalancer:
ingress:
- ip: 34.87.XX.XX
根据Google's doc,此( 34.87.XX.XX )看起来像是外部IP,但我无法使用http://34.87.XX.XX
进行访问我的问题是,由于我们已经有一个外部IP(35.197.XX.XX)来接收流量,为什么我们需要此地址用于入口服务?
是内部还是外部IP地址? 此地址绑定到什么? 该地址的用途是什么?
谁能阐明一些想法?非常感谢!
答案 0 :(得分:1)
如果您只是看一下文档,您将得到答案。
什么是入口资源:https://kubernetes.io/docs/concepts/services-networking/ingress/#what-is-ingress
因此请遵循以下文档:
Ingress公开从群集外部到群集内服务的HTTP和HTTPS路由。流量路由受Ingress资源上定义的规则控制。
为了更精确地描述云提供商,入口将创建一个负载平衡器,以将服务公开给互联网。有关gke特定主题的摘要:https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer
这说明了为什么要为入口使用外部IP。
您现在应该做什么:
我的观点是,在部署入口控制器时,应选择第二个选项,然后将负载均衡器的管理留给它。对于入口控制器的入口,不要仅在nodePort服务的后端定义规则,而是应在每个应用程序的特定入口中定义规则,并由入口控制器进行管理。