系列文章:node
總目錄索引:九析帶你輕鬆完爆 istio 服務網格系列教程後端
目錄網絡
1 前言app
2 邀約curl
3 NodePort 樣例ide
4 訪問流程url
5 實例演示spa
6 缺點orm
1 前言
視頻
若是你對博客有任何疑問,請告訴我。
2 邀約
你能夠從 b 站搜索 「九析」,獲取免費的、更生動的視頻資料:
3 NodePort 樣例
跟 hostNetwork 和 hostPort 不一樣,NodePort 屬於 service 類型之一。hostPort 和 hostNetwork 做用對象是 Pod,而 NodePort 做用對象則是 service。
pod 文件以下所示:
service 文件以下:
建立 NodePort 服務時,用戶能夠在 30000 ~ 32767 範圍內指定一個端口,也能夠經過 patch 打補丁的方式修改 service 類型,這樣 NodePort 端口將會在範圍 30000 ~ 32767 之間自動分配。
kubectl patch svc svc_name -n ns_name -p '{"type": "NodePort"}'
4 訪問流程
下圖展現當 k8s svc 建立以後,k8s 集羣內部都發生了哪些變化。
當 client 發送 kubectl apply 指令給 APIServer 後,會生成相關的 service 對象,k8s 集羣內的全部節點(master 和 node)上都會運行 kube-proxy 進程,以下截圖所示:
該進程的做用就是負責跟 APIServer 進行通訊並對 node 上的 pod 進行生命週期管理。若是建立了 k8s service ,那麼 kube-proxy 會建立相應的 iptables 規則,並將發送到 service nodePort 的流量轉發到 service 後端提供的 Pod 的相應端口上。
5 實例演示
當執行 jiuxi-svc.yaml 資源文件後,以下截圖所示:
查看網絡監控接口可知 30088 對應的服務進程就是 kube-proxy,以下圖所示:
當咱們經過 curl 訪問 hostIP:30088 時,數據包會經過 30088 端口送給 kube-proxy 進程,kube-proxy 進程會根據 k8s service 的 endpoint 將數據包路由到實際的 pod IP 和對應的端口去。以下截圖查看 service 對應的 endpoints。
6 缺點
使用 NodePort 方式,在 k8s 集羣內部,每一個節點(master 或 node)上 kube-proxy 進程都會開啓相關的端口。若是服務都採用這樣的方式,端口就有衝突的可能。所以建議謹慎使用。