k8s自身原理service及實現(xiàn)圖文示例解析
引言
終于來到 k8s 自身的原理之 關于 Service 的一部分了
前面我們用 2 個簡圖展示了 pod 之間和 pod 與 node 之間是如何通信息的,且通信的數(shù)據(jù)包是不會經(jīng)過 NAT 網(wǎng)絡地址轉換的
那么 Service 又是如何實現(xiàn)呢?
Service 我們知道是用來對外暴露服務的 ip 和 端口的,好讓外部的客戶端可以訪問到我們內部 pod 提供的服務
另外 Service 管理的 pod ,實際的 ip 和 端口 列表,都是存放在對應的 endpoints 里面的
目前為止,我們也僅僅是停留在會使用 Service 了,那么 Service 自身的原理又是如何呢?我們一起來瞅瞅看
對于 Service 的服務 ip 地址,也是一個虛擬的,同時也是對外暴露了 1 個或者多個端口,既然是虛擬的,咱們肯定是 ping 不通的,例如我的 minikube 環(huán)境
當然,我們看了之前的分享之后,發(fā)現(xiàn) k8s 中對于資源的變動,基本上都是使用的監(jiān)聽機制,那么對于 Service 的行為 和 endpoints 的行為,是不是同樣是被不同的關鍵組件所監(jiān)聽呢?
我們可以用一個簡圖來了解一下:
圖中,我們可以看到
- 一個 Service 管控的是 2 個 pod,具體的 ip 和 端口 列表 都是存放在 endpoints 中
- kube-proxy 會監(jiān)控 ApiServer 中 Endpoints 對象的變化,若 endpoints 這中 list 有變化,kube-proxy 監(jiān)聽到之后,就會通知 iptables 去配置新的規(guī)則
- 例如環(huán)境中的 一個 pod 3 發(fā)請求給到咱們這個 Service,發(fā)出來的 目的地址是 Service 的地址和端口
- 但是通過 iptables 設定的規(guī)則進行轉換,目的地址和端口就變成了 Service 管控的 pod 自己的 ip 和端口了
就看這個流程,好像也不復雜嘛,那么實際生產(chǎn)環(huán)境中也會是這樣的嗎?我們可以思考一下,更多關于k8s service實現(xiàn)原理的資料請關注腳本之家其它相關文章!
相關文章
k8s部署Pyroscope并分析golang性能瓶頸(最新推薦)
這篇文章主要介紹了k8s部署Pyroscope并分析golang性能瓶頸,Pyroscope支持多種編程語言并提供了豐富的性能數(shù)據(jù),可以幫助我們跟蹤應用程序的執(zhí)行情況,并根據(jù)收集到的數(shù)據(jù)來識別性能瓶頸,需要的朋友可以參考下2023-04-04K8s Pod調度機制詳解(從理論到生成實戰(zhàn)指南)
Kubernetes調度機制是集群的智能調度中樞,主要完成過濾和打分兩個決策,在生產(chǎn)環(huán)境中,核心調度策略包括資源調度、親和性調度、污點與容忍、拓撲分布約束等,本文介紹K8s Pod調度機制詳解(從理論到生成實戰(zhàn)指南),感興趣的朋友一起看看吧2025-03-03云服務器Jenkins部署Springboot項目及Vue項目的詳細過程
本文詳細介紹了如何在云服務器上使用Jenkins部署Springboot和Vue項目,包括創(chuàng)建Springboot項目并上傳到Git倉庫、安裝Maven和配置Maven插件、安裝Gitee插件、配置Jenkins任務以及創(chuàng)建自由風格項目等步驟,感興趣的朋友一起看看吧2025-02-02青龍面板拉庫解決沒有或丟失依賴can‘t?find?module的保姆級教程(附青龍面板腳本倉庫)
這篇文章主要介紹了青龍面板拉庫解決沒有或丟失依賴can‘t?find?module的保姆級教程(附青龍面板腳本倉庫),需要的朋友可以參考下2022-05-05基于云服務MRS構建DolphinScheduler2調度系統(tǒng)的案例詳解
這篇文章主要介紹了基于云服務MRS構建DolphinScheduler2調度系統(tǒng),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05