- K8S 對外暴露服務(wù)的方式有三種:loadblancer、nodeport、ingress
- ingress 由 ingress controller 和 ingress 服務(wù)組成
- controller 主要有兩種:nginx、traefik
nginx ingress controller 分為k8s社區(qū)、nginx公司兩個(gè)版本
ingress的工作原理
ingress具體的工作原理如下:
ingress contronler通過與k8s的api進(jìn)行交互,動(dòng)態(tài)的去感知k8s集群中ingress服務(wù)規(guī)則的變化,然后讀取它,并按照定義的ingress規(guī)則,轉(zhuǎn)發(fā)到k8s集群中對應(yīng)的service。
而這個(gè)ingress規(guī)則寫明了哪個(gè)域名對應(yīng)k8s集群中的哪個(gè)service,然后再根據(jù)ingress-controller中的nginx配置模板,生成一段對應(yīng)的nginx配置。
然后再把該配置動(dòng)態(tài)的寫到ingress-controller的pod里,該ingress-controller的pod里面運(yùn)行著一個(gè)nginx服務(wù),控制器會(huì)把生成的nginx配置寫入到nginx的配置文件中,然后reload一下,使其配置生效。以此來達(dá)到域名分配置及動(dòng)態(tài)更新的效果。
Ingress安裝
1. 下載kubernetes nginx的yaml文件
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.18.0/deploy/mandatory.yaml
2. 創(chuàng)建 Ingress - Nginx
kubectl apply -f ./mandatory.yaml
kubectl get pods -n ingress-nginx
kubectl get service -n ingress-nginx
3. 測試
curl http://10.98.51.155 //ip來自上一步
如果返回404則表示安裝成功