[英]Kubernetes with Istio Ingress Not Running on Standard HTTP Ports 443/80
我正在嘗試在 Kubernetes 上設置 Istio 作為入口控制器。 問題是我的兩個應用程序似乎可以從 Istio 入口控制器節點端口(例如, http://[host]:31380/application1和http://[host]:31380/application2 )訪問,但不能從 443 訪問/80。
我是 Kubernetes 和 Istio 的新手,所以我使用了https://istio.io/docs/guides/bookinfo/指南作為參考。 遵循指南相當容易,我能夠使用提到的節點端口訪問 Bookinfo 應用程序。 但是我無法從 443/80 訪問它。 我使用 helm chart 來安裝 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 和端口):
“如果設置了 EXTERNAL-IP 值,則您的環境具有可用於入口網關的外部負載均衡器。如果 EXTERNAL-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
我還沒有回去將負載均衡器部署到裸機,所以想聽聽是否有人這樣做。 我曾簡要地研究過 Metal,但並沒有花太多時間在上面。
可以在 api-server 清單上修改 nodeport 范圍,如果您使用的是 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.