欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

k8s-service中ipvsclusterip實現(xiàn)原理是什么

這篇文章將為大家詳細講解有關(guān)k8s-service中ipvs cluster ip實現(xiàn)原理是什么,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

創(chuàng)新互聯(lián)建站堅持“要么做到,要么別承諾”的工作理念,服務領(lǐng)域包括:做網(wǎng)站、成都網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的涉縣網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!

基于iptable方式實現(xiàn)的k8s集群中cluster ip類型和node port類型service的負載均衡。本質(zhì)上是當網(wǎng)絡數(shù)據(jù)包從pod的network namespace中通過linux veth pair設備進入到host宿主中的network namespace時,經(jīng)過iptable一系列的NAT轉(zhuǎn)換,把service的cluster ip和端口DNAT成pod的ip和端口。同時leverage linux iptable的random模塊,實現(xiàn)了對pod的負載均衡,然后再交由host對目標pod的路由策略來實現(xiàn)將數(shù)據(jù)包發(fā)往pod。當然,這一切都是在linux內(nèi)核空間實現(xiàn)的,和應用程序的用戶空間沒有關(guān)系。在這里我們主要介紹基于ipvs的cluster ip類型service的實現(xiàn)原理。

要實現(xiàn)基于ipvs的k8s網(wǎng)絡負載均衡需要如下:

  • Linux內(nèi)核高于2.4.x,參考如下:

    https://en.wikipedia.org/wiki/IP_Virtual_Server

    k8s-service中ipvs cluster ip實現(xiàn)原理是什么

  • 在kube-proxy網(wǎng)絡組件的啟動參數(shù)中加入--proxy-mode=ipvs,在以前文章中有所介紹

  • 安裝ipvsadm工具,本質(zhì)是ipvsadm是用戶空間的程序,用來操作和管理ipvs

安裝ipvsadm工具:

yum install ipvsadmwhereis ipvsadm

k8s-service中ipvs cluster ip實現(xiàn)原理是什么

k8s-service中ipvs cluster ip實現(xiàn)原理是什么

我們這里是介紹cluster ip類型的service,所以我們基于以前文章里安裝的應用,顯示k8s集群中的cluster ip:

kubectl get service --all-namespaces

k8s-service中ipvs cluster ip實現(xiàn)原理是什么

根據(jù)以前文章,數(shù)據(jù)包會從pod的network namespace通過linux veth pair設備進入host的network namespace。host開啟了路由轉(zhuǎn)發(fā)功能,數(shù)據(jù)先進入到了iptable的PREROUTING chain中,我們查看這個chain:

iptables -nL -t nat

據(jù)這個chain,數(shù)據(jù)包會進入到KUBE-SERVICES這個targe中。

k8s-service中ipvs cluster ip實現(xiàn)原理是什么

查看KUBE-SERVICES這個target:

iptables -nL -t nat

k8s-service中ipvs cluster ip實現(xiàn)原理是什么

根據(jù)KUBE-SERVICES target,數(shù)據(jù)包匹配ipset KUBE-CLUSTER-IP。ipset是linux的內(nèi)核數(shù)據(jù)結(jié)構(gòu),可以存儲一些ip和端口的信息,ipvs模式的集群通過在iptable中匹配ipset,這樣減少了iptable中的entry數(shù)量。在這里匹配了這個ipset之后進入了KUBE-MARK-MASQ這個target。

查看KUBE-CLUSTER-IP這個ipset:

ipset list KUBE-CLUSTER-IP

k8s-service中ipvs cluster ip實現(xiàn)原理是什么

這里我們看到KUBE-CLUSTER-IP這個ipset里一共有9個entry,而且也匹配了集群中cluster ip類型service的ip和端口。

根據(jù)KUBE-SERVICES target,匹配KUBE-CLUSTER-IP這個ipset的items(也就是cluster ip類型的service)會進入到KUBE-MARK-MASQ這個target中,我們查看這個target:

k8s-service中ipvs cluster ip實現(xiàn)原理是什么

我們觀察這個target是對所有的items做了mark標記。

經(jīng)過了PREROUTING chain以及相關(guān)的target之后數(shù)據(jù)會來到INPUT chain,這是因為對于ipvs模式,會在host的network namespace里創(chuàng)建kube-ipvs0網(wǎng)絡設備,并且綁定了所有的cluster ip,這樣數(shù)據(jù)就可以進入到INPUT chain。

ip addr|grep kube

k8s-service中ipvs cluster ip實現(xiàn)原理是什么

對于k8s集群的ipvs負載均衡來說,其核心工作就是在INPUT chain,采用NAT模式(http://www.linuxvirtualserver.org/VS-NAT.html,當然ipvs不僅僅只有NAT模式,還有更多模式,詳細的資料可以到LVS項目的官方網(wǎng)站參考www.linuxvirtualserver.org/Documents.html),linux操作系統(tǒng)網(wǎng)絡內(nèi)核會對目標ip來做轉(zhuǎn)DNAT換。這里我們以service service-nginx-app做為例子,它的cluster ip是10.254.226.173,我們查看ipvs如何做DNAT

kubectl describe service service-nginx-app --namespace defaultipvsadm -L

k8s-service中ipvs cluster ip實現(xiàn)原理是什么

k8s-service中ipvs cluster ip實現(xiàn)原理是什么

我們看到service service-nginx-app cluster ip為10.254.226.173:80,對應兩個endpoint為10.1.86.6:80和10.1.86.7:80。然后通過ipvsadm工具查看確實是ipvs將其映射成兩個endpoints,并且使用round robin的分配方式,分配權(quán)重為1和1,也就是均勻的實現(xiàn)負載均衡。

ipvs在INPUT chain完成上述DNAT操作,然后將數(shù)據(jù)送入POSTROUTING chain,我們查看這個chain。

iptables -nL -t nat

k8s-service中ipvs cluster ip實現(xiàn)原理是什么

這里我們發(fā)現(xiàn)數(shù)據(jù)在POSTROUTING chain會進入KUBE-POSTROUTING這個target中。

查看KUBE-POSTROUTING target:

iptables -nL -t nat

k8s-service中ipvs cluster ip實現(xiàn)原理是什么

這里我們發(fā)現(xiàn)是對數(shù)據(jù)包做了MASQUERADE偽裝,并且匹配的就是在KUBE-MARK-MASQ target中做的標記,也就是用下一跳路由所使用網(wǎng)路設備的ip做了SNAT操作。所以到這里我們的數(shù)據(jù)包源ip為下一跳路由所使用網(wǎng)路設備的ip,目標ip為10.1.86.6或者10.1.86.7(RR 1:1的負載均衡方式),然后根據(jù)host network namespace的路由表做下一跳路由選擇。

總結(jié)對于ipvs下的cluster ip的通訊方式為:

  • 數(shù)據(jù)包從pod network namespace發(fā)出,進入host的network namespace,源ip為pod ip,源端口為隨機端口,目標ip為cluster ip,目標port為指定port。

  • 數(shù)據(jù)包在host network namespace中進入PREROUTING chain。

  • 在PREROUTING chain中經(jīng)過匹配ipset KUBE-CLUSTER-IP做mask標記操作。

  • 在host network namespace中創(chuàng)建網(wǎng)絡設備kube-ipvs0,并且綁定所有cluster ip,這樣從pod發(fā)出的數(shù)據(jù)包目標ip為cluster ip,有kube-ipvs0網(wǎng)絡設備對應,數(shù)據(jù)進入INPUT chain中。

  • 數(shù)據(jù)在INPUT chain中被ipvs的內(nèi)核規(guī)則修改(可由ipvsadm查看規(guī)則),完成DNAT,然后將數(shù)據(jù)直接送入POSTROUTING chain。這時源ip為pod ip,源端口為隨機端口,目標ip為映射選擇的pod ip,目標port為映射選擇的port。

  • 數(shù)據(jù)在POSTROUTING chain中,經(jīng)過KUBE-POSTROUTING target完成MASQUERADE SNAT。這時源ip為下一跳路由所使用網(wǎng)路設備的ip,源端口為隨機端口,目標ip為映射選擇的pod ip,目標port為映射選擇的port。

  • 數(shù)據(jù)包根據(jù)host network namespace的路由表做下一跳路由選擇。

關(guān)于k8s-service中ipvs cluster ip實現(xiàn)原理是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

分享文章:k8s-service中ipvsclusterip實現(xiàn)原理是什么
網(wǎng)頁鏈接:http://chinadenli.net/article46/jsiehg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄網(wǎng)頁設計公司、手機網(wǎng)站建設響應式網(wǎng)站、網(wǎng)站改版、微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設
少妇人妻一级片一区二区三区| 日韩欧美亚洲综合在线| 在线观看国产午夜福利| 亚洲精品熟女国产多毛| 日韩欧美国产高清在线| 色欧美一区二区三区在线| 在线观看视频成人午夜| 欧美一区二区在线日韩| 又大又长又粗又黄国产| 日本女优一色一伦一区二区三区| 老外那个很粗大做起来很爽| 国产精品福利一二三区| 久久香蕉综合网精品视频| 欧美大胆美女a级视频| 亚洲精品伦理熟女国产一区二区| 中文字幕亚洲精品在线播放| 日韩精品一区二区毛片| 国产日产欧美精品大秀| 日本理论片午夜在线观看| 亚洲国产欧美久久精品| 色婷婷人妻av毛片一区二区三区| 欧美日韩国产的另类视频| 色偷偷偷拍视频在线观看| 99秋霞在线观看视频| 五月婷婷综合激情啪啪| 国产一区二区三区成人精品| 黄色激情视频中文字幕| 日本人妻精品中文字幕不卡乱码 | 人妻中文一区二区三区| 久久精品久久久精品久久| 国产午夜精品美女露脸视频| 国产亚洲精品久久99| 久久99亚洲小姐精品综合| 国产精品福利一二三区| 2019年国产最新视频| 中文字幕一区二区三区大片| 国产日韩综合一区在线观看| 九九热九九热九九热九九热| 精品国产亚洲av久一区二区三区| 中文字幕一区二区免费| 久久天堂夜夜一本婷婷|