11.5 服務(wù)是如何實(shí)現(xiàn)的

11.5 服務(wù)是如何實(shí)現(xiàn)的

在第5 章中學(xué)習(xí)過(guò)Service,Service允許長(zhǎng)時(shí)間對(duì)外暴露一系列pod钉迷、穩(wěn)定的IP地址以及端口。為了聚焦Service的目的以及它們?nèi)绾伪皇褂茫覀儺?dāng)時(shí)并沒(méi)有深入探究其工作原理肥荔。但是骇两,要真正理解服務(wù),并更好地了解當(dāng)事情的行為與預(yù)期不一致時(shí)應(yīng)該從哪著手拳喻,就需要了解服務(wù)的實(shí)現(xiàn)原理哭当。

11.5.1 引入kube-proxy

和Service相關(guān)的任何事情都由每個(gè)節(jié)點(diǎn)上運(yùn)行的kube-proxy進(jìn)程處理。開(kāi)始的時(shí)候冗澈,kube-proxy確實(shí)是一個(gè)proxy钦勘,等待連接,對(duì)每個(gè)進(jìn)來(lái)的連接亚亲,連接到一個(gè)pod彻采。這稱為userspace(用戶空間)代理模式。后來(lái)捌归,性能更好的iptables代理模式取代了它肛响。iptables代理模式目前是默認(rèn)的模式,如果你有需要也仍然可以配置Kubernetes使用舊模式惜索。

在我們繼續(xù)之前特笋,先快速回顧一下Service的幾個(gè)知識(shí)點(diǎn),對(duì)理解下面幾段有幫助巾兆。

我們之前了解過(guò)猎物,每個(gè)Service有其自己穩(wěn)定的IP地址和端口〗撬埽客戶端(通常為pod)通過(guò)連接該IP和端口使用服務(wù)蔫磨。IP地址是虛擬的,沒(méi)有被分配給任何網(wǎng)絡(luò)接口圃伶,當(dāng)數(shù)據(jù)包離開(kāi)節(jié)點(diǎn)時(shí)也不會(huì)列為數(shù)據(jù)包的源或目的IP地址堤如。Service的一個(gè)關(guān)鍵細(xì)節(jié)是,它們包含一個(gè)IP留攒、端口對(duì)(或者針對(duì)多端口Service有多個(gè)IP煤惩、端口對(duì)),所以服務(wù)IP本身并不代表任何東西炼邀。這就是為什么你不能夠ping它們魄揉。

11.5.2 kube-proxy 如何使用iptables

當(dāng)在API服務(wù)器中創(chuàng)建一個(gè)服務(wù)時(shí),虛擬IP地址立刻就會(huì)分配給它拭宁。之后很短時(shí)間內(nèi)洛退,API服務(wù)器會(huì)通知所有運(yùn)行在工作節(jié)點(diǎn)上的kube-proxy客戶端有一個(gè)新服務(wù)已經(jīng)被創(chuàng)建了瓣俯。然后,每個(gè)kube-proxy都會(huì)讓該服務(wù)在自己的運(yùn)行節(jié)點(diǎn)上可尋址兵怯。原理是通過(guò)建立一些iptables規(guī)則彩匕,確保每個(gè)目的地為服務(wù)的IP/端口對(duì)的數(shù)據(jù)包被解析,目的地址被修改媒区,這樣數(shù)據(jù)包就會(huì)被重定向到支持服務(wù)的一個(gè)pod驼仪。

除了監(jiān)控API對(duì)Service的更改,kube-proxy也監(jiān)控對(duì)Endpoint對(duì)象的更改袜漩。我們?cè)诘?章討論過(guò)绪爸,下面回顧一下,因?yàn)槟慊旧喜粫?huì)去手動(dòng)創(chuàng)建它們宙攻,所以比較容易忘記它們的存在奠货。Endpoint對(duì)象保存所有支持服務(wù)的pod的IP/端口對(duì)(一個(gè)IP/端口對(duì)也可以指向除pod之外的其他對(duì)象)。這就是為什么kube-proxy必須監(jiān)聽(tīng)所有Endpoint對(duì)象座掘。畢竟Endpoint對(duì)象在每次新創(chuàng)建或刪除支持pod時(shí)都會(huì)發(fā)生變更递惋,當(dāng)pod的就緒狀態(tài)發(fā)生變化或者pod的標(biāo)簽發(fā)生變化,就會(huì)落入或超出服務(wù)的范疇溢陪。

現(xiàn)在讓我們了解一下kube-proxy如何讓客戶端能夠通過(guò)Service連接到這些pod萍虽,如圖11.17所示。

img

圖11.17 發(fā)送到服務(wù)虛擬IP/端口對(duì)的網(wǎng)絡(luò)包會(huì)被修改嬉愧、重定向到一個(gè)隨機(jī)選擇的后端pod

圖中描述kube-proxy做了什么贩挣,以及數(shù)據(jù)包如何通過(guò)客戶端pod發(fā)送到支持服務(wù)的一個(gè)pod上。讓我們檢查一下當(dāng)通過(guò)客戶端pod(圖中的pod A)發(fā)送數(shù)據(jù)包時(shí)發(fā)生了什么没酣。

包目的地初始設(shè)置為服務(wù)的IP和端口(在本例中王财,Service是在 172.30.0.1:80 )。發(fā)送到網(wǎng)絡(luò)之前裕便,節(jié)點(diǎn)A的內(nèi)核會(huì)根據(jù)配置在該節(jié)點(diǎn)上的iptables規(guī)則處理數(shù)據(jù)包绒净。

內(nèi)核會(huì)檢查數(shù)據(jù)包是否匹配任何這些iptables規(guī)則。其中有個(gè)規(guī)則規(guī)定如果有任何數(shù)據(jù)包的目的地IP等于 172.30.0.1 偿衰、目的地端口等于 80挂疆,那么數(shù)據(jù)包的目的地IP和端口應(yīng)該被替換為隨機(jī)選中的pod的IP和端口。

本例中的數(shù)據(jù)包滿足規(guī)則下翎,故而它的IP/端口被改變了缤言。在本例中,pod B2 被隨機(jī)選中了视事,所有數(shù)據(jù)包的目的地IP變更為10.1.2.1(pod B2 的IP)胆萧,端口改為8080(Service中定義的目標(biāo)端口)。就好像是俐东,客戶端pod直接發(fā)送數(shù)據(jù)包給pod B而不是通過(guò)Service跌穗。

實(shí)際上可能比描述的要更復(fù)雜一點(diǎn)兒订晌,但是上述內(nèi)容是你需要理解的最重要的內(nèi)容。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蚌吸,一起剝皮案震驚了整個(gè)濱河市锈拨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌羹唠,老刑警劉巖奕枢,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異肉迫,居然都是意外死亡验辞,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén)喊衫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人杆怕,你說(shuō)我怎么就攤上這事族购。” “怎么了陵珍?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵寝杖,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我互纯,道長(zhǎng)瑟幕,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任留潦,我火速辦了婚禮只盹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘兔院。我一直安慰自己殖卑,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布坊萝。 她就那樣靜靜地躺著孵稽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪十偶。 梳的紋絲不亂的頭發(fā)上菩鲜,一...
    開(kāi)封第一講書(shū)人閱讀 52,156評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音惦积,去河邊找鬼接校。 笑死,一個(gè)胖子當(dāng)著我的面吹牛荣刑,可吹牛的內(nèi)容都是我干的馅笙。 我是一名探鬼主播伦乔,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼董习!你這毒婦竟也來(lái)了烈和?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤皿淋,失蹤者是張志新(化名)和其女友劉穎招刹,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體窝趣,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡疯暑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了哑舒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妇拯。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖洗鸵,靈堂內(nèi)的尸體忽然破棺而出越锈,到底是詐尸還是另有隱情,我是刑警寧澤膘滨,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布甘凭,位于F島的核電站,受9級(jí)特大地震影響火邓,放射性物質(zhì)發(fā)生泄漏丹弱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一铲咨、第九天 我趴在偏房一處隱蔽的房頂上張望躲胳。 院中可真熱鬧,春花似錦鸣驱、人聲如沸泛鸟。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)北滥。三九已至,卻和暖如春闸翅,著一層夾襖步出監(jiān)牢的瞬間再芋,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工坚冀, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留济赎,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像司训,于是被迫代替她去往敵國(guó)和親构捡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容