scofield 菜鳥運維雜談
先上圖

在Kubernetes叢集中,service通過标簽選擇器選着對應的pod,然後對請求進行轉發,看個動畫,能直接了當體會到便簽選擇器
1、舉個栗子說明
先看部署檔案,主要看注釋部分。因為檔案太長,本文删除了yaml檔案的部分字段
2、檢視運作結果
3、通過kubectl describe來檢視pod,endpoints,service詳情
4、從上圖可以看出關聯資訊:
1、Pod和Endpoint的的IP是一緻的,Endpoint是用來映射那些能對外提供服務的pod,如果pod運作狀态不是running,就不會産出Endpoint
2、StatefulSet 和 Pod 的關系是通過 label-selector 來關聯的
3、 Service可以簡單了解為 Kubernetes 内置的一個 LoadBalancer,它的作用就是給多個 Pod 提供負載均衡。
4、Service通過标簽 app: gogs來比對它所要做負載均衡的 Pod
好了,對pod,endpoints,service三者關系做了簡單介紹,接下來我們來介紹Kubernetes中的幾種Service Type
通過叢集的内部 IP 暴露服務,選擇該值,服務隻能夠在叢集内部可以通路,這也是預設的 ServiceType
缺點:服務隻能夠在叢集内部可以通路
栗子
結果
可以看到10.104.1.9是叢集内部的一個IP,在叢集外是無法通路到的
如果将 type 字段設定為 NodePort,則 Kubernetes将在指定的範圍内配置設定端口(預設值:30000-32767)。每個節點将随機配置設定的端口代理到服務中。
舉栗子
這裡可以看到,随機配置設定了端口30526,現在可以通過叢集任意節點的IP+30526通路到該服務
Ingress 公開了從叢集外部到叢集内服務的 HTTP 和 HTTPS 路由。流量路由由 Ingress 資源上定義的規則控制。
可以将 Ingress 配置為服務提供外部可通路的 URL、負載均衡流量、終止 SSL/TLS,以及提供基于名稱的虛拟主機等能力。Ingress 控制器 通常負責通過負載均衡器來實作 Ingress,盡管它也可以配置邊緣路由器或其他前端來幫助處理流量。
現在通過域名gogs.test.cn就可以通路到gogs了
注意,gogs.test.cn需要自行添加DNS解析到ingress所在機器的IP
建立服務時,你可以選擇自動建立雲網絡負載均衡器。這提供了一個外部可通路的 IP 位址, 可将流量配置設定到叢集節點上的正确端口上,LoadBalancer一般都是公有雲廠商提供,不需要自建,這裡就介紹了。
PS:後續文章會同步到dev.kubeops.net
注:文中圖檔來源于網絡,如有侵權,請聯系我及時删除。