日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Linux必學(xué):簡單指南幫助你完成IPVS安裝(linux安裝ipvs)

在現(xiàn)代云計(jì)算和容器化技術(shù)的背景下,負(fù)載均衡已經(jīng)成為了互聯(lián)網(wǎng)應(yīng)用中必不可少的組成部分。而在 Linux 平臺上,IPVS 則是更受歡迎的負(fù)載均衡技術(shù)之一,它能夠?yàn)閼?yīng)用提供高效的流量轉(zhuǎn)發(fā)和連接控制功能。本文將從 IPVS 的安裝及配置入手,為大家提供一份簡單易懂的指南,幫助大家完成 IPVS 的安裝和配置過程。

10多年的宣漢網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)整合營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整宣漢建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“宣漢網(wǎng)站設(shè)計(jì)”,“宣漢網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

什么是 IPVS?

IPVS 全稱為 IP Virtual Server,最早是由 Wensong Zhang 在 1999 年開發(fā)的。它是一個(gè)核心層負(fù)載均衡器,在 Linux 內(nèi)核代碼內(nèi)置的 Netfilter 框架中實(shí)現(xiàn)了高效的四層負(fù)載均衡和七層負(fù)載均衡功能,支持多種運(yùn)行模式和轉(zhuǎn)發(fā)算法。由于 IPVS 位于 Linux 內(nèi)核中并發(fā)操作,性能出眾,成為了眾多互聯(lián)網(wǎng)公司使用的主流負(fù)載均衡技術(shù)之一。

IPVS 的優(yōu)勢

與其它負(fù)載均衡方案相比 IPVS 具有下列優(yōu)點(diǎn):

1. 高性能:由于 IPVS 的代碼位于 Linux 內(nèi)核中,因此它的性能非常出色。

2. 穩(wěn)定: IPVS 相比于其它的負(fù)載均衡方案,它的穩(wěn)定性是非常好的。

3. 功能強(qiáng)大:在 IPVS 中,支持多種轉(zhuǎn)發(fā)方式和算法, 提供了比較豐富的配置選項(xiàng),可以靈活的適應(yīng)不同場景的需求。

IPVS 的安裝和配置

下面我們將來介紹一下如何在 Linux 系統(tǒng)上安裝和配置 IPVS。

1. 安裝相關(guān)軟件

在安裝 IPVS 之前,需要先將所需的軟件包安裝到系統(tǒng)上。這里我們以 Debian 系統(tǒng)為例。

通過以下命令安裝所需的軟件包:

“`

sudo apt-get update

sudo apt-get install -y libnl-3-dev libnl-genl-3-dev libssl-dev ipset ipvsadm

“`

/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs/ip_vs_rr.ko

依次安裝 libnl-3-dev、libnl-genl-3-dev、libssl-dev、ipset 和 ipvsadm 五個(gè)軟件包。

2. 配置 kernel 模塊

在安裝完必要的軟件包之后,需要開啟 IPVS 模塊。這里我們使用 modprobe 命令完成這個(gè)過程:

“`

sudo modprobe ip_vs

sudo modprobe ip_vs_rr

sudo modprobe ip_vs_wrr

sudo modprobe ip_vs_sh

“`

這里,我們加載了四個(gè) kernel 模塊,分別是 ip_vs、ip_vs_rr、ip_vs_wrr 和 ip_vs_sh。在使用 IPVS 進(jìn)行負(fù)載均衡之前,需要使用以上命令分別對四個(gè)核心模塊進(jìn)行加載。其中,ip_vs 模塊是必須的,其它三個(gè)模塊則會(huì)根據(jù)負(fù)載均衡方式的不同而選擇加載。

3. 配置 IPVS

在加載了 kernel 模塊之后,就可以開始配置 IPVS 了。需要?jiǎng)?chuàng)建一個(gè)配置文件 /etc/ipvsadm.conf,將需要負(fù)載均衡的一些服務(wù)存儲到該配置文件中。

下面是一個(gè) /etc/ipvsadm.conf 的示例配置文件:

“`

# /etc/sysconfig/ipvsadm

# Load various modules

modprobe ip_vs

modprobe ip_vs_rr

modprobe ip_vs_wrr

modprobe ip_vs_sh

# Clear out previous setup

ipvsadm -C

# Add virtual server

ipvsadm -A -t 192.168.1.100:80 -s rr

ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.10:80 -g

ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.11:80 -g

“`

該配置文件使用了 ipvsadm 命令,通過該命令可以配置一些虛擬服務(wù),IPVS 會(huì)分發(fā)請求到指定的實(shí)際服務(wù)器上。在上述示例配置文件中,-A 參數(shù)用于添加一個(gè)虛擬服務(wù),并指定負(fù)載均衡算法為 rr(輪詢),而 -a 參數(shù)則用于添加實(shí)際的服務(wù)器地址(以 IP 地址和端口號的形式提供)。

通過以上方法,我們就成功的完成了 IPVS 的安裝和配置。現(xiàn)在,你已經(jīng)可以使用 IPVS 在自己的服務(wù)器上實(shí)現(xiàn)負(fù)載均衡。當(dāng)然,IPVS 還有很多高級用法和配置技巧,但是在最基本的使用上,以上方法已經(jīng)可以滿足我們的需求了。通過學(xué)習(xí)這篇文章,相信你已經(jīng)掌握了 Linux 平臺上 IPVS 的安裝和配置方法。

相關(guān)問題拓展閱讀:

  • Linux如何在系統(tǒng)啟動(dòng)時(shí)自動(dòng)加載模塊
  • k8s網(wǎng)絡(luò)原理-ipvs

Linux如何在系統(tǒng)啟動(dòng)時(shí)自動(dòng)加載模塊

rc.sysinit中有這樣的一段代碼:

# Load other user-defined modules

for file in /etc/sysconfig/modules/*.modules ; do

&& $file

done

# Load modules (for backward compatibility with VARs)

if ; then

/隱談etc/rc.modules

fi

可見只需要配置兩個(gè)地方的任何一個(gè)就可以了(以加載fuse內(nèi)核模塊為例)

(1) 在/etc/sysconfig/modules/下面創(chuàng)建*.modules文件,參考裂茄已經(jīng)肆攜察有的*.modules文件,例如我寫創(chuàng)建文件my.modules,內(nèi)容為modprobe fuse

記得最后chmod 755 my.modules

(2) 或者在/etc/rc.modules里面加上modprobe fuse,沒有的話創(chuàng)建該文件。

然后reboot,lod | grep fuse驗(yàn)證一下就OK了。

為搞清楚如何在系統(tǒng)啟動(dòng)時(shí)自動(dòng)加載模塊,搜索了好久,網(wǎng)上有很多人提出這個(gè)問題,但都沒有正確的答案。大家的回答都沒有講到點(diǎn)子上,無非是圍繞modprobe.conf、modprobe講來講去的,要不就是針對特定問題嘗試不同的方法。有的還建議把modprobe modulename寫入rc.local,卻不曾想rc.local的執(zhí)行被放在整個(gè)啟動(dòng)順序的很后面,而啟動(dòng)init.d下面定義的服務(wù)卻在rc.local前面,那么如果某個(gè)服務(wù)要用這個(gè)模塊,就不行了。 在測試LVS時(shí),因?yàn)槲业腇edora7的Kernel(2.6.21-1)缺省沒有加載ip_vs模塊,而內(nèi)核中已經(jīng)包含編譯好的IPVS相關(guān)的模塊了,放在:/lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/下面,有: /lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs.ko /lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_dh.ko /lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_ftp.ko /lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_lblc.ko /lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_lblcr.ko /lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_lc.ko /lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_nq.ko /lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_rr.ko /lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_sed.ko /lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_sh.ko /lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_wlc.ko /lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/ip_vs_wrr.ko 其中ip_vs.ko是IPVS的基本模塊,不加載IPVS就不能工作(運(yùn)行ipvsadm會(huì)報(bào)錯(cuò)的),而其他的都是IPVS的調(diào)度算法或特定協(xié)議的輔助模塊,需要時(shí)則須加則蔽載。 要了解如何在系統(tǒng)啟動(dòng)時(shí)自動(dòng)加載模塊(Automatically load kernel modules),就得先了解系統(tǒng)是如何啟動(dòng)的,啟動(dòng)的過程中按什么順序做了什么,怎么做的,這些啟動(dòng)操作都有那些文件和腳本控制。整個(gè)開機(jī)流程是: (1) 載入BIOS的硬件信息,并取得之一個(gè)開機(jī)裝置的代號 (2)讀取之一個(gè)開機(jī)裝置的MBR的boot Loader (grub)的開機(jī)信息 (3)載入OS Kernel信息,解壓Kernel,嘗試驅(qū)動(dòng)硬件 (4) Kernel執(zhí)行init程序并獲得run-lebel信息(如3或5) (5) init執(zhí)行/etc/rc.d/rc.sysinit (6)啟動(dòng)內(nèi)核外掛模塊(/etc/modprobe.conf) (7) init執(zhí)行run-level的各孫粗州種Scripts,啟動(dòng)服務(wù) (8) init執(zhí)行/etc/rc.d/rc.local (9)執(zhí)行/bin/login,等待用戶Login (10)Login后進(jìn)入Shell看來正確的方式是把需要加載的模塊放在(5)或(6),我修改了/etc/rc.d/rc.sysinit就成功加載了。初步嘗試在rc.sysinit最后增加 modprobe.conf ip_vs,重啟后lod | grep ip_vs,發(fā)現(xiàn)成功自動(dòng)加載了。于是仿效rc.sysinit中其他模塊的加載方法,擴(kuò)展凳賣改腳本文件,在最后增加下來一段: # load LVS IPVS modules if ; then for module in /lib/modules/$unamer/kernel/net/ipv4/ipvs/* ; do module=${module##*/} module=${module%.ko} modprobe $module >/dev/null 2>&1 done fi就把/lib/modules/2.6.21-1.3194.fc7/kernel/net/ipv4/ipvs/下的所有模塊都自動(dòng)加載。

k8s網(wǎng)絡(luò)原理-ipvs

一、背景知識

??本文主要介紹k8s網(wǎng)絡(luò)中service 的兩種模式(clusterIp、nodeport),數(shù)據(jù)是如何通過ipvs&iptables流轉(zhuǎn)的。在學(xué)習(xí)上述知識的同時(shí),還需要了解一下ipset、conntrack的相關(guān)知識。

往期回顧文章

1.1、ipset

??ipset是什么?ipset其實(shí)是iptables的擴(kuò)展,可以定義一些列地址的。拿黑名單來舉例,我想讓黑名單里面的ip拒絕訪問網(wǎng)站(黑名單有很多個(gè)),按照傳統(tǒng)iptables做法,需要渣談在filter表添加很多規(guī)則匹配時(shí)一條一條匹配效率很低(嚴(yán)重影響性能),而有了ipset,則只用添加一條規(guī)則即可,使用hash結(jié)構(gòu)效率很高。

而使用ipset命令如下

??當(dāng)然,ipset還支持 hash:ip,hash:ip,port,ip等多種hash key的組成,具體可以通過拍神 ipset -h 查看。接下來說明一下 -m set 后面 src 和 dst 兩個(gè)的含義。src 指來源,dst 指目標(biāo),此規(guī)則的意思是來自192.178.113.100 ip 訪問本機(jī)8410端口的流量給DROP掉。

ipset使用hash結(jié)構(gòu),比iptables的鏈表遍歷效率要高很多。ipset還有很多如賀碰更加高級的玩法,本文就不在闡述了。

1.2、ipvs

??lvs是什么?全稱是Linux Virtual Server,是由章文嵩博士主導(dǎo)的開源負(fù)載均衡項(xiàng)目,目前已經(jīng)集成到linux內(nèi)核中。lvs提供了豐富的負(fù)載均衡能力,接收到用戶請求后根據(jù)具體的負(fù)載均衡算法在內(nèi)核態(tài)把請求轉(zhuǎn)發(fā)到后端的某個(gè)server上,也就是說lvs不需要監(jiān)聽具體的端口。接下來我們看一下lvs的一些基本概念。

??ipvs的原理如下。ipvs工作在iptables 的 input鏈上,VIP一般定義在DS節(jié)點(diǎn)上的一個(gè)虛擬ip,拿nat模式舉例如下。

① : 當(dāng)請求數(shù)據(jù)包到DS上更先經(jīng)過iptables 的PREROUTING鏈,判斷目標(biāo)ip (VIP) 是本機(jī)的ip,于是把請求轉(zhuǎn)發(fā)到INPUT鏈上。

② : 因?yàn)閘vs工作在INPUT鏈上,數(shù)據(jù)到達(dá)INPUT鏈上后lvs會(huì)將用戶請求和定義的后端服務(wù)做對比,如果是請求的后端服務(wù),則使用某種負(fù)載均衡算法找到一個(gè)后端RIP,修改數(shù)據(jù)包的目的ip和端口為某個(gè)RIP的(DNAT轉(zhuǎn)換)。

③ : 此時(shí)數(shù)據(jù)到達(dá)POSTROUTING鏈(不會(huì)做SNAT),數(shù)據(jù)包的源ip 為CIP,目的ip為RIP,數(shù)據(jù)包發(fā)往RIP上。

lvs提供了三種包轉(zhuǎn)發(fā)模式,如下所示

由于k8s使用的是NAT模式,接下來看下

NAT模式下的數(shù)據(jù)包流向

。如下圖所示

①:請求數(shù)據(jù)包到達(dá)DS,數(shù)據(jù)包經(jīng)過PREROUTING鏈,此時(shí)ip 包 src ip為CIP,dst ip 為VIP

②:由于請求的VIP是DS上的虛擬ip,數(shù)據(jù)包發(fā)往INPUT鏈。

③:數(shù)據(jù)包到INPUT鏈上后,ipvs發(fā)現(xiàn)數(shù)據(jù)包請求是定義的集群服務(wù),于是使用定義好的負(fù)載均衡算法找到一個(gè)具體的RS節(jié)點(diǎn),做DNAT,修改數(shù)據(jù)包dst ip為RIP,數(shù)據(jù)包到達(dá)POSTROUTING鏈,發(fā)送給RS。

④:RS收到數(shù)據(jù)包后對比dst ip 發(fā)現(xiàn)是自己,接收數(shù)據(jù)包做處理,處理完成后ip 數(shù)據(jù)包 src ip 為RIP,dst ip 為CIP,把數(shù)據(jù)包發(fā)給DS。

⑤:DS 接收到RS的響應(yīng)包,修改src ip 為自身的VIP,dst ip 為CIP,把數(shù)據(jù)包發(fā)送給client端。

三種模式對比&優(yōu)缺點(diǎn)

接下來在簡單聊一下ipvs的負(fù)載均衡策略,簡單介紹下面四種。

??上面介紹完了ipvs內(nèi)核態(tài)的基本原理,接下來介紹一下如何使用 ipvsadm 用戶態(tài)命令來操作ipvs。說明:此次試驗(yàn)是在四個(gè)虛擬機(jī)上,ipvs的模式使用的nat模式,RS的網(wǎng)關(guān)沒有指向DS的ip(沒辦法做到)在DS節(jié)點(diǎn)上手動(dòng)創(chuàng)建SNAT命令,下文有詳細(xì)介紹。創(chuàng)建一個(gè)vip,在ip為192.168.113.101上

為vip添加RS

添加完成RS后,查看ipvs規(guī)則,如下圖所示

client端的ip地址為192.168.113.102,client端要想直接訪問vip的話,需要在client端添加靜態(tài)路由,添加命令如下

添加完命令后,在client端curl 10.10.0.1:8410 發(fā)現(xiàn)不通,此時(shí)去某個(gè)RS上抓包如下

??上圖抓包顯示,client 直接訪問的vip,而數(shù)據(jù)包的目的ip 變?yōu)榱藃s的ip,因此可以看出ipvs做了DNAT轉(zhuǎn)換。因?yàn)樽隽薉NAT,RS發(fā)送響應(yīng)數(shù)據(jù)直接發(fā)給client,client收到RS的數(shù)據(jù)包。client給vip發(fā)的包卻收到了RS的響應(yīng)包(client 想我從來沒有給RS發(fā)過數(shù)據(jù)),因此client端會(huì)把此數(shù)據(jù)包丟棄。

??因?yàn)閕pvs沒有做SNAT,接下來在DS上添加iptables規(guī)則自己實(shí)現(xiàn)SNAT的功能,添加完SNAT后,

RS就看不到真實(shí)的CIP了

。

??此時(shí)還是不通,查找資料后發(fā)現(xiàn)ipvs 的

conntrack

沒有開,手動(dòng)打開,后續(xù)文章介紹conntrack是什么,設(shè)置完成后可以愉快的訪問了。

??總結(jié):通過ipvs提供的DNAT功能和負(fù)載均衡功能,很容易實(shí)現(xiàn)外部用戶訪問內(nèi)網(wǎng)的需求。但是還要考慮高可用層面,比如主DS宕機(jī)VIP要漂移到備DS上,后端RS重啟或宕機(jī),ipvs負(fù)載均衡列表中要及時(shí)把有問題的RS剔除,這樣才能真正的實(shí)現(xiàn)高可用。

1.3、conntrack

??大家在家上網(wǎng)時(shí)用到的都是192.168.x.x的ip地址,這是私網(wǎng)ip地址。那么大家是如何能夠成功的訪問外網(wǎng)的呢?答案是路由器幫我們做了SNAT的功能,使我們發(fā)出的數(shù)據(jù)包的src ip變?yōu)槁酚善鞯墓W(wǎng)ip,這樣數(shù)據(jù)包就能在互聯(lián)網(wǎng)上愉快的轉(zhuǎn)發(fā)了。從而實(shí)現(xiàn)了對內(nèi)網(wǎng)的保護(hù)。

??那么問題來了,既然做了SNAT轉(zhuǎn)換,那響應(yīng)數(shù)據(jù)包回來以后路由器怎么知道轉(zhuǎn)到哪臺PC上呢?路由器可能鏈接了很多PC,不可能都給每一個(gè)PC轉(zhuǎn)發(fā)吧。。。答案就是conntrack實(shí)現(xiàn)的。

??接下來我拿上面ipvs的例子舉例,我們手動(dòng)實(shí)現(xiàn)了在DS上SNAT轉(zhuǎn)換,在client上curl vip:8410,這時(shí)候查看DS上和client上的conntrack表如下

先從client上的連接跟蹤分析起:主要看 src、dst、sport、dport這幾個(gè)字段。

client發(fā)送數(shù)據(jù)包

client端發(fā)出數(shù)據(jù)包的src ip 為192.168.113.102,dst ip 為10.10.0.1 (VIP), sport 為35562這個(gè)端口,dport為8410(VIP 定義端口)。

client端接收響應(yīng)數(shù)據(jù)包

期望src ip 為vip(10.10.0.1),dst ip 為CIP(192.168.113.102),sport為8410,dport為35562

DS接收數(shù)據(jù)包

DS接收到src ip 為CIP(192.168.113.102),dst ip 為vip(10.10.0.1),sport為35562,dport為8410的數(shù)據(jù)包

DS接收響應(yīng)數(shù)據(jù)包

??由于在DS側(cè)做了DNAT轉(zhuǎn)換,根據(jù)負(fù)載均衡策略找到了一個(gè)RS(RIP 192.168.113.99),同時(shí)也做了SNAT轉(zhuǎn)換(判斷是否是VIP和端口),轉(zhuǎn)換為DS的DIP。所以當(dāng)DS收到src ip 為192.168.113.99(RIP),dst ip 為192.168.113.101(DIP),sport為8080,dport為35562,會(huì)根據(jù)連接跟蹤表找到這個(gè)包是192.168.113.102這個(gè)client發(fā)過來的,因此把數(shù)據(jù)包在轉(zhuǎn)發(fā)給192.168.113.102:35562 上。

conntrack各個(gè)字段的含義

總結(jié):

??本文只是簡單的說明了一下conntrack,并沒有具體說明數(shù)據(jù)流經(jīng)netfilter時(shí)何時(shí)創(chuàng)建記錄,數(shù)據(jù)存儲的數(shù)據(jù)結(jié)構(gòu)啥樣,底層比較復(fù)雜,感興趣的大佬可以自行研究~

二、k8s網(wǎng)絡(luò)通信

??介紹完了ipset、ipvs、conntrack,接下來進(jìn)入正題,看一下ipvs模式下k8s的網(wǎng)絡(luò)通信。kube-proxy 的主要作用是watch apiserver,當(dāng)監(jiān)聽到pod 或service變化時(shí),修改本地的iptables規(guī)則或ipvs規(guī)則。

2.1、clusterIp模式

clusterIp模式為一個(gè)集群內(nèi)部可訪問的ip,集群外部沒辦法訪問這個(gè)ip,試驗(yàn)環(huán)境如下:

創(chuàng)建完deployment和service后,查看一下service的ip如下。

接下來看下宿主機(jī)網(wǎng)卡、ipvs規(guī)則、ipset規(guī)則有什么變化

查看iptables 的nat表和filter表,看一下k8s創(chuàng)建了哪些規(guī)則以及經(jīng)過哪些鏈

接下來分析一下curl 10.108.113.237 數(shù)據(jù)是如何走的,只討論在nat表和filter表的流向,因?yàn)樵趍angle和raw都沒有規(guī)則。

1、nat表PREROUTING鏈

①:數(shù)據(jù)首先進(jìn)入PREROUTING鏈,所有請求都會(huì)進(jìn)入KUBE-SERVICES鏈。

②:進(jìn)入KUBE-SERVICES后,查看對應(yīng)在此鏈上的規(guī)則,發(fā)現(xiàn)請求的目的ip和port在KUBE-CLUSTER-IP 對應(yīng)的ipset里面(上面已有展示),匹配上了則跳往KUBE-MARK-MASQ鏈。

③:數(shù)據(jù)流向KUBE-MARK-MASQ鏈,主要做了mark 打標(biāo)記的功能,iptables命令如下

④:之后走向KUBE-NODE-PORT鏈,因?yàn)闆]有定義nodepode 類型的service,此處先略過。

2、filter表的INPUT鏈

⑤:首先進(jìn)入INPUT鏈,所有數(shù)據(jù)轉(zhuǎn)向KUBE-FIREWALL鏈。

⑥:進(jìn)入KUBE-FIREWALL鏈,如果發(fā)現(xiàn)數(shù)據(jù)包打了0x8000/0x8000,DROP掉。因?yàn)閕pvs工作在INPUT鏈上,做完DNAT之后直接轉(zhuǎn)發(fā)到POSTROUTING鏈上。

3、nat表POSTROUTING鏈

⑦:進(jìn)入POSTROUTING鏈,所有數(shù)據(jù)轉(zhuǎn)向KUBE-POSTROUTING鏈

⑧:進(jìn)入KUBE-POSTROUTING鏈,對有0x4000/0x4000標(biāo)記的數(shù)據(jù)包做SNAT轉(zhuǎn)換,因?yàn)閕pvs只有DNAT功能。

4、數(shù)據(jù)轉(zhuǎn)發(fā)給flannel網(wǎng)卡,進(jìn)行轉(zhuǎn)發(fā)

⑨:flannel 根據(jù)具體的backend模式,對數(shù)據(jù)做封包等操作,然后發(fā)出去。flannel的網(wǎng)絡(luò)模式比較復(fù)雜,之后會(huì)專門文章進(jìn)行說明。

2.2、nodeport模式

??要想把集群內(nèi)部的服務(wù)可以讓集群外部訪問,可以使用nodeport模式在物理機(jī)上開一個(gè)端口,這樣外部就能訪問集群內(nèi)部的服務(wù)了。說明:還是使用上面創(chuàng)建的deployment。

查看創(chuàng)建service的信息,發(fā)現(xiàn)也創(chuàng)建了集群內(nèi)部的一個(gè)ip。

iptables規(guī)則如下

接下來看下ipset規(guī)則有什么變化,發(fā)現(xiàn)KUBE-NODE-PORT-TCP下的一個(gè)成員是剛才我們指定的那個(gè)nodePort的值。

接下來看一下iptables規(guī)則,nat表和filter表

1、nat表PREROUTING鏈

①:數(shù)據(jù)首先進(jìn)入PREROUTING鏈,所有請求都會(huì)進(jìn)入KUBE-SERVICES鏈。

②:ip和port匹配不上KUBE-CLUSTER-IP 的ipset,判斷是訪問的本地地址,進(jìn)入KUBE-NODE-PORT鏈。

③:進(jìn)入KUBE-NODE-PORT鏈后,判斷訪問端口在 KUBE-NODE-PORT-TCP ipset規(guī)則中,因此進(jìn)入KUBE-MARK-MASQ鏈。

④:進(jìn)入KUBE-MARK-MASQ鏈,對數(shù)據(jù)做mark標(biāo)記

后續(xù)流程跟clusterIp一樣,此處就不在闡述。

2.3、dns相關(guān)

??k8s中的dns默認(rèn)使用的是coredns,通過以下命令查看。k8s中定義的service是有域名的,訪問域名要通過dns解析,此時(shí)coredns就發(fā)揮它的作用了。

??上面的試驗(yàn)時(shí)我們創(chuàng)建了一個(gè)my-service 的nodePort的service,此時(shí)查看一下此域名對應(yīng)的ip,如下圖所示,域名解析出來的ip與service對應(yīng)的ip相同,大功告成。

參考:

?

以上相關(guān)內(nèi)容介紹了k8s service ipvs的相關(guān)實(shí)現(xiàn),如有錯(cuò)誤歡迎指出~

linux 安裝ipvs的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于linux 安裝ipvs,Linux 必學(xué):簡單指南幫助你完成 IPVS 安裝,Linux如何在系統(tǒng)啟動(dòng)時(shí)自動(dòng)加載模塊,k8s網(wǎng)絡(luò)原理-ipvs的信息別忘了在本站進(jìn)行查找喔。

成都創(chuàng)新互聯(lián)建站主營:成都網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、網(wǎng)站改版的網(wǎng)站建設(shè)公司,提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、成都網(wǎng)站推廣、成都網(wǎng)站優(yōu)化seo、響應(yīng)式移動(dòng)網(wǎng)站開發(fā)制作等網(wǎng)站服務(wù)。


新聞標(biāo)題:Linux必學(xué):簡單指南幫助你完成IPVS安裝(linux安裝ipvs)
文章起源:http://www.dlmjj.cn/article/dpjeoed.html