天天看點

《Kubernetes網絡權威指南》讀書筆記 | 從叢集外通路服務

作者:熱愛程式設計的通信人

書籍來源:《Kubernetes網絡權威指南:基礎、原理與實踐》

一邊學習一邊整理讀書筆記,并與大家分享,侵權即删,謝謝支援!

附上彙總貼:《Kubernetes網絡權威指南》讀書筆記 | 彙總_COCOgsta的部落格-CSDN部落格

在Kubernets中,L7的轉發功能、叢集外通路Service,都是專門交給Ingress的。

Ingress可能是暴露服務的最強大方式,也是最複雜的。Kubernetes Ingress提供了負載平衡器的典型特性:HTTP路由、黏性會話、SSL終止、SSL直通、TCP和UDP負載平衡等。

3.6.1KubernetesIngress

Kubernetes的Ingress資源對象是指授權入站連接配接到達叢集内服務的規則集合。

《Kubernetes網絡權威指南》讀書筆記 | 從叢集外通路服務

圖3-18 沒有Ingress時通路叢集内服務

圖3-19所示為引入Ingress後通路叢集内服務的狀态。

《Kubernetes網絡權威指南》讀書筆記 | 從叢集外通路服務

圖3-19 引入Ingress後通路叢集内服務的狀态

Ingress的作用就是在邊界路由處開個口子,放外部流量進來。是以,Ingress是建立在Service之上的L7通路入口,它支援通過URL的方式将Service暴露到k8s叢集外;支援自定義Service的通路政策;提供按域名通路的虛拟主機功能;支援TLS通信。Ingress的作用如圖3-20所示。

《Kubernetes網絡權威指南》讀書筆記 | 從叢集外通路服務

圖3-20 Ingress的作用

在上面這個例子中,Ingress可以基于用戶端請求的URL做流量分發,轉發給不同的Service後端。

我們來看Ingress資源對象的API定義:

《Kubernetes網絡權威指南》讀書筆記 | 從叢集外通路服務

把上面這個Ingress對象建立起來後,通過kubectl get我們可以看到:

《Kubernetes網絡權威指南》讀書筆記 | 從叢集外通路服務

其中,ADDRESS即Ingress的通路入口位址,ACKEND是Ingress對接的後端Kubernetes Service IP+Port,ULE是自定義的通路政策,主要基于URL的轉發政策,若為空,則通路ADDRESS的所有流量都轉發給BACKEND。

下面給出一個Ingress的rules不為空的例子:

《Kubernetes網絡權威指南》讀書筆記 | 從叢集外通路服務

這個例子和前一個的最明顯差別是,rules定義了path分别為/foo和/bar的分發規則,分别轉發給s1:80和s2:80:

Kubernetes隻負責提供一個API定義,具體的Ingress Controller需要使用者自己實作!官方提供了Nginx和GCE的Ingress Controller示例供開發者參考。

如果想要通過域名通路Ingress,則需要使用者自己配置域名和Ingress IP的映射關系,例如host檔案、自己的DNS(不是Kube-dns)。