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