带有Istio Inress的Kubernetes不在标准HTTP端口443/80上运行 [英] Kubernetes with Istio Ingress Not Running on Standard HTTP Ports 443/80
问题描述
我正在尝试将Istio设置为Kubernetes上的入口控制器。问题是我的两个应用程序似乎可以从Istio入口控制器节点端口访问(例如,http://[host]:31380/application1和 http://[host]:31380/application2),但从443/80开始无法访问。
我是Kubernetes和Istio的新手,所以我使用了https://istio.io/docs/guides/bookinfo/指南作为参考。按照指南操作相当简单,如前所述,我能够使用节点端口访问Bookinfo应用程序。不过,从443/80开始我无法访问它。我用舵表安装了Istio。我也没有在Kubernetes仪表板中的Ingresses下看到任何内容。
以下是网关/虚拟服务YAML的示例:
apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: myapp-gateway spec: selector: istio: ingressgateway # use istio default controller servers: - port: number: 80 name: http protocol: HTTP hosts: - "*" --- apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: myapp-virtual-service spec: hosts: - "*" gateways: - myapp-gateway http: - match: - uri: prefix: /myapp route: - destination: host: myapp-app-service port: number: 7080 - match: - uri: prefix: / route: - destination: host: kibana port: number: 5601
我该怎么做才能让它收听443?我是否完全缺少某个组件?
推荐答案
如果您的应用程序需要在443/80上运行,则您的kubernetes集群必须部署外部负载均衡器。如果不存在,则流量将被路由到入口节点端口。
参考-https://istio.io/docs/tasks/traffic-management/ingress/#determining-the-ingress-ip-and-ports(确定入口IP和端口):
"如果设置了外部IP值,则您的环境有一个外部负载平衡器可用于入口网关。如果外部IP值为(或永久),则您的环境不会为入口网关提供外部负载平衡器。在这种情况下,您可以使用服务的节点端口访问网关。"
没有外部负载均衡器的裸机实例示例:
[admin@master1 ~]$ kubectl get svc -n istio-system | grep istio-ingress istio-ingress LoadBalancer 10.114.107.196 <pending> 80:32400/TCP,443:31564/TCP 5d istio-ingressgateway LoadBalancer 10.99.1.148 <pending> 80:31380/TCP,443:31390/TCP,31400:31400/TCP 5d
如果您要部署到IBM Bluemix(可能是AWS/Azure/等)等在线云提供商,您应该已经配置了一个。如果您的配置在裸机上,则可能没有配置负载均衡器。
我的Bluemix实例使用外部负载均衡器的示例:
λ kubectl get svc -n istio-system | grep istio-ingress istio-ingress LoadBalancer 172.21.26.25 123.45.67.195 80:32000/TCP,443:31694/TCP 6h istio-ingressgateway LoadBalancer 172.21.139.142 123.45.67.196 80:31380/TCP,443:31390/TCP,31400:31400/TCP 6h
我还没有回去将负载均衡器部署到裸机,所以我想知道是否有人这样做了。我简要地看了一下《金属》,但没有花太多时间。
这篇关于带有Istio Inress的Kubernetes不在标准HTTP端口443/80上运行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!