带有Istio Ingress的Kubernetes未在标准HTTP端口443/80上运行



我正试图在Kubernetes上设置Istio作为入口控制器。问题是,我的两个应用程序似乎可以从Istio ingress controllers节点端口访问(例如,http://[host]:31380/application1和http://[host]:31380/application2(,但无法从443/80访问。

我是Kubernetes和Istio的新手,所以我使用了https://istio.io/docs/guides/bookinfo/作为参考。遵循指南相当容易,我可以使用前面提到的节点端口访问Bookinfo应用程序。我无法从443/80访问它。我使用了helm图表来安装Istio。我也没有在Kubernetes面板中的Ingress下看到任何内容。

以下是网关/虚拟服务yaml:的示例

apiVersion:networking.istio.io/v1alpha3种类:网关元数据:名称:myapp网关规格:选择器:istio:ingressgateway#使用istio默认控制器服务器:-端口:数量:80名称:http协议:HTTP主机:-"*"---apiVersion:networking.istio.io/v1alpha3种类:VirtualService元数据:名称:myapp虚拟服务规格:主机:-"*"网关:-myapp网关http:-匹配:-uri:前缀:/myapp路线:-目的地:主机:myapp应用程序服务端口:号码:7080-匹配:-uri:前缀:/路线:-目的地:主持人:基巴纳端口:number:5601

有什么想法吗?我是不是完全遗漏了一个组件?

如果需要在443/80上运行到应用程序的路由,那么您的Kubernetes集群必须部署一个外部负载均衡器。如果没有,流量将路由到入口节点端口。

请参阅-https://istio.io/docs/tasks/traffic-management/ingress/#determining-入口ip和端口(确定入口ip和端口(:

"如果设置了EXTERNAL-IP值,则您的环境有一个可用于入口网关的外部负载平衡器。如果EXTERNAL-IP值为(或永久为(,则环境不会为入口网关提供外部负载均衡器。在这种情况下,您可以使用服务的节点端口访问网关。">

没有外部负载平衡器的裸机实例示例:

[admin@master1~]$kubectl get svc-n istio system | grep istio ingressistio-ingress LoadBalancer 10.114.107.196<挂起>80:32400/TCP,443:31564/TCP 5distio-ingressgateway LoadBalancer 10.99.1148<挂起>80:31380/TCP,443:31390/TCP,31400:31400/TCP 5d

如果您正在部署到在线云提供商,如IBM Bluemix(可能是AWS/Azure/等(,您应该已经配置了一个。如果您的配置是在裸机上,那么您可能没有配置负载均衡器。

我的带有外部负载均衡器的Bluemix实例示例:

λkubectl获取svc-n istio系统|grep istio入口istio-ingress LoadBalancer 172.21.26.25 123.45.67.195 80:32000/TCP,443:31694/TCP 6histio-ingressgateway LoadBalancer 172.21.139.142 123.45.67.196 80:31380/TCP,443:31390/TCP,31400:31400/TCP 6h

我还没有回去将负载平衡器部署到裸机上,所以想听听是否有人这样做。我简要地看了一下Metal,但没有花太多时间。

节点端口范围可以在api服务器清单上修改,如果您使用的是kubeadm,请编辑'/etc/kubernetes/manifests/kube-apiserver.yaml'文件并添加以下行:

- --service-node-port-range=80-32767

然后,编辑"istio-ingressgateway"服务:

- name: http2
nodePort: 80
port: 80
protocol: TCP
targetPort: 8080
- name: https
nodePort: 443
port: 443
protocol: TCP
targetPort: 8443

相关内容

  • 没有找到相关文章

最新更新