k8s ingress部署

Kubernetes 暴露服務的有三種方式,分別爲 LoadBlancer Service、NodePort Service、Ingress。官網對 Ingress 的定義爲管理對外服務到集羣內服務之間規則的集合,通俗點講就是它定義規則來容許進入集羣的請求被轉發到集羣中對應服務上,歷來實現服務暴漏。 Ingress 能把集羣內 Service 配置成外網可以訪問的 URL,流量負載均衡,終止SSL,提供基於域名訪問的虛擬主機等等。
LoadBlancer Service
LoadBlancer Service 是 Kubernetes 結合雲平臺的組件,如國外 GCE、AWS、國內阿里雲等等,使用它向使用的底層雲平臺申請建立負載均衡器來實現,有侷限性,對於使用雲平臺的集羣比較方便。
NodePort Service
NodePort Service 是經過在節點上暴漏端口,而後經過將端口映射到具體某個服務上來實現服務暴漏,比較直觀方便,可是對於集羣來講,隨着 Service 的不斷增長,須要的端口愈來愈多,很容易出現端口衝突,並且不容易管理。固然對於小規模的集羣服務,仍是比較不錯的。
Ingress
Ingress 使用開源的反向代理負載均衡器來實現對外暴漏服務,好比 Nginx、Apache、Haproxy等。Nginx Ingress 通常有三個組件組成:
1)ingress是kubernetes的一個資源對象,用於編寫定義規則。
2)反向代理負載均衡器,一般以Service的Port方式運行,接收並按照ingress定義的規則進行轉發,一般爲nginx,haproxy,traefik等,本文使用nginx。
3)ingress-controller,監聽apiserver,獲取服務新增,刪除等變化,並結合ingress規則動態更新到反向代理負載均衡器上,並重載配置使其生效。
 
以上三者有機的協調配合起來,就能夠完成 Kubernetes 集羣服務的暴露。
 

 

 
 
 
一、下載文件
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml
 
二、修改mandatory.yaml
注意事項:
• 鏡像地址修改爲國內的: lizhenliang/nginx-ingress-controller:0.20.0
• 使用宿主機網絡: hostNetwork: true
• 此文檔使用DaemonSet 部署,使每個node節點都會有一個ingress-controller 容器
三、修改後mandatory.yaml
 

 

 
四、部署
kubectl apply -f mandatory.yaml
 
五、查看pod是否正常

 

六、查看service
eddy-service是咱們將用ingress暴露的service,service espoxe過程略。
 
七、ingress service yaml文件
 
 1 apiVersion: extensions/v1beta1
 2 kind: Ingress
 3 metadata:
 4   name: eddy-ingress
 5 spec:
 6   rules:
 7   - host: www.black.com
 8     http:
 9      paths:
10      - backend:
11          serviceName: eddy-nginx
12          servicePort: 85
ingress.yaml

 

 
host部分爲自定義的域名
servicename :6部分查看到的service name
 
八、安裝keepalived
略。。。。。在全部的node節點安裝keepalived 設置vip爲 192.168.1.180
 
九、查看ingress service
十、修改host文件
增長 192.168.1.180 www.black.com
 
十一、利用域名訪問
 
相關文章
相關標籤/搜索