簡單介紹:
Ingress是Kubernetes API的標准資源類型之一,它其實就是一組基於DNS名稱或URL路徑把請求轉發至指定的Service資源的規則,用來將集群外部的請求流量轉發至集群內部。但是,Ingress資源自身並不能進行“流量穿透”,它僅是一組路由規則的集合,這些規則想要真正發揮作用還需要其他功能的輔助,如監聽某套接字,然后根據這些規則的匹配機制路由請求流量。這種能為Ingress資源監聽套接字並轉發流量的組件稱為Ingress控制器(Ingress Controller)。
部署方法:① helm安裝ingress ②傳統yaml文件安裝ingress
測試環境:
一個kubernetes集群,配置了helm
操作步驟:
方法①
1. 用helm搜索並安裝
[root@k8s-master ~]# helm search nginx-ingress NAME CHART VERSION APP VERSION DESCRIPTION stable/nginx-ingress 0.9.5 0.10.2 An nginx Ingress controller that uses ConfigMap to store ... stable/nginx-lego 0.3.1 Chart for nginx-ingress-controller and kube-lego [root@k8s-master ~]# helm install --name nginx-ingress --set "controller.hostNetwork=true,rbac.create=true" stable/nginx-ingress NAME: nginx-ingress LAST DEPLOYED: Sat May 25 13:51:54 2019 NAMESPACE: default STATUS: DEPLOYED RESOURCES: ==> v1/ConfigMap …… ……
2. 查看pod運行狀態
[root@k8s-master ~]# kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE nginx-ingress-controller-78f9df54dd-dmxvr 1/1 Running 0 59s 172.19.5.40 k8s-node3 nginx-ingress-default-backend-6f598d9c4c-ms7xx 1/1 Running 0 58s 192.168.1.43 k8s-node1
注:上面的高亮IP是某一個節點的IP,此刻這個節點上已經啟動了80和443端口;同時,也起了一個默認的后端(default backend),這個默認的后端就做了一件事:返回404(如果訪問根)。
3. 瀏覽器IP測試和域名(k8s.xxx.cn)測試效果
以上是安裝后的默認配置,如果需要添加其他類似於api.xxx.com或者www.xxx.com/api 這樣的域名,繼續添加或者修改ingress資源,然后在ingress中引用ServiceName就能指向到后端的pod。