11. Ingress,Ingress Controller
擁有七層代理調度能力
什么是Ingress:
Ingress是授權入站連接到達集群服務的規則集合
Ingress是一個Kubernetes資源,允許您為在Kubernetes上運行的應用程序配置HTTP負載均衡器,由一個或多個服務代表。這樣的負載平衡器是將這些應用程序交付給Kubernetes集群之外的客戶端所必需的。
Ingress資源支持以下功能:
1 基於內容的路由:
基於主機的路由。例如,將具有主機頭的請求路由foo.example.com到一組服務,將主機頭路由bar.example.com到另一個組。
基於路徑的路由。例如,使用/serviceA以服務A開頭的URI和具有/serviceB以服務B 開頭的URI的請求來路由請求。
2 每個主機名的TLS / SSL終止,例如foo.example.com。
Ingress將集群外部的HTTP和HTTPS路由暴露給集群中的服務。Ingress可以配置為提供服務外部可訪問的URL,負載平衡流量,終止SSL / TLS,並提供基於名稱的虛擬主機。
什么是Ingress Controller?
Ingress控制器是一個在集群中運行的應用程序,它根據Ingress資源配置HTTP負載均衡器。負載均衡器可以是在群集中運行的軟件負載均衡器,也可以是在外部運行的硬件或雲負載均衡器。不同的負載平衡器需要不同的Ingress控制器實現。
在NGINX的情況下,Ingress控制器與負載平衡器一起部署在一個容器中。
Ingress Controller:
HAProxy 不推薦
Nginx
Envoy 微服務強烈推薦使用,可自動動態加載(對比與nginx的優勢)
Traefik 可自動動態加載(對比與nginx的優勢)
Ingress是一種資源,所以和pod service等定義的方式類似
Ingress Controller k8s核心附件之一
===============================
nginx Ingress Controller部署:
使用官方推薦的mandatory.yaml這個文件部署 pod一直處於pending狀態啟動有問題
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/baremetal/service-nodeport.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml
部署過程中需要拉取鏡像quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.24.1,國內非常慢
有大佬寫了個工具,親測好使。
https://github.com/xuxinkun/littleTools#azk8spull
先將這個鏡像拉取下來
https://www.cnblogs.com/xuxinkun/p/11025020.html
驗證是否安裝成功:
kubectl get pods --all-namespaces -l app.kubernetes.io/name=ingress-nginx --watch
ssl需要secret
TLS字段
kubectl create secret tls tomcat-ingress-secret --cert=tls --key=tls.key
kubectl get secret
https://kubernetes.github.io/ingress-nginx/