带有Istio Inress的Kubernetes不在标准HTTP端口443/80上运行 [英] Kubernetes with Istio Ingress Not Running on Standard HTTP Ports 443/80

查看:13
本文介绍了带有Istio Inress的Kubernetes不在标准HTTP端口443/80上运行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将Istio设置为Kubernetes上的入口控制器。问题是我的两个应用程序似乎可以从Istio入口控制器节点端口访问(例如,http://[host]:31380/application1http://[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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆