關(guān)于Kube-Proxy在IPVS模式下的路由問題

我們知道kube-proxy在1.8之后就增加了ipvs模式,直到我在部署1.9.1版本的Proxy時(shí),ipvs默認(rèn)仍然還在beta版本。

最近試用了一下,運(yùn)行在ipvs模式下的kube-proxy大體和之前我所用的kube-router類似,但是功能反而沒有kube-router支持的完善。比如對(duì)于ipvs的負(fù)載均衡策略的支持,kube-proxy是配置在啟動(dòng)參數(shù)當(dāng)中,而kube-router是配置在svc的annotate中。相比kube-proxy的功能kube-router要更靈活一些。當(dāng)然這些都不是問題,作為Kubernetes的親兒子,這些功能應(yīng)該很快都會(huì)被支持。

好了,說下最近遇到的問題吧。

背景

既然文章標(biāo)題說是網(wǎng)絡(luò)問題,下面就簡(jiǎn)單介紹下kube-proxy所在的物理機(jī)的網(wǎng)絡(luò)環(huán)境:

服務(wù)器類型 管理網(wǎng) 容器網(wǎng) SVC網(wǎng)絡(luò) 存儲(chǔ)網(wǎng)
Kube-Proxy 10.17.64.0/22 IPVLAN 10.17.74.0/24 10.17.70.0/23

問題現(xiàn)象:

  • 外部服務(wù)器無法ping通eth2網(wǎng)卡,也無法ping通svc網(wǎng)絡(luò)。下面是我kube-proxy的環(huán)境:

kube-proxy運(yùn)行在ipvs模式下,通過svc創(chuàng)建的Cluster都綁定在kube-ipvs0這塊虛擬網(wǎng)卡上。

ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 18:66:da:6d:b5:ac brd ff:ff:ff:ff:ff:ff
    inet 10.17.64.14/22 brd 10.17.67.255 scope global eth0
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 18:66:da:6d:b5:ad brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 18:66:da:6d:b5:ae brd ff:ff:ff:ff:ff:ff
    inet 10.17.74.253/24 scope global eth2
       valid_lft forever preferred_lft forever
5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 18:66:da:6d:b5:af brd ff:ff:ff:ff:ff:ff
    inet 10.17.70.14/23 scope global eth3
       valid_lft forever preferred_lft forever
18: dummy0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether ee:16:fe:84:08:df brd ff:ff:ff:ff:ff:ff
19: kube-ipvs0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default
    link/ether 22:41:85:c1:65:54 brd ff:ff:ff:ff:ff:ff
    inet 10.17.74.1/32 brd 10.17.74.1 scope global kube-ipvs0
       valid_lft forever preferred_lft forever
    inet 10.17.74.2/32 brd 10.17.74.2 scope global kube-ipvs0
       valid_lft forever preferred_lft forever

這里可以看到我的eth2網(wǎng)卡和kube-ipvs0所處一個(gè)網(wǎng)段。由于默認(rèn)網(wǎng)關(guān)是處于管理網(wǎng),這樣就出現(xiàn)訪問SVC網(wǎng)絡(luò)不通的尷尬場(chǎng)景。這里就牽扯出一個(gè)新的概念了,策略路由

簡(jiǎn)單來說策略路由,是一種可以靈活配置路由包轉(zhuǎn)發(fā)的機(jī)制,可以根據(jù)配置服務(wù)器上的路由策略來選擇外出包的路徑。如果服務(wù)器配置了多網(wǎng)卡,這個(gè)時(shí)候就需要配置策略路由來調(diào)整出口的網(wǎng)卡。

以我這里的kube-proxy為例:

默認(rèn)情況下服務(wù)器用的路由表空間是default,由于需要另加路由表,就需要在/etc/iproute2/rt_tables文件下創(chuàng)建一張新表,如下:

$ cat /etc/iproute2/rt_tables

#
# reserved values
#
255    local
254    main
253    default
0    unspec
#
# local
#
100   eth2

添加路由策略

# 清空路由表100
ip route flush table 100
# 添加一個(gè)默認(rèn)的路由表
ip route add default via 10.17.74.254 dev eth2 src 10.17.74.253 table 100
# 將來自10.17.74.253轉(zhuǎn)發(fā)到table 100上處理
ip rule add from 10.17.74.253 table 100
# 查看路由表信息
ip rule list

這樣就eth2網(wǎng)卡就能在外部被訪問了。

同理,我們將來源是SVC地址的IP也轉(zhuǎn)發(fā)到table 100上處理,這樣SVC的地址就能在外部訪問了。

總結(jié)

雖然這樣能夠暫時(shí)訪問svc,但是畢竟不是長(zhǎng)久之計(jì),目前準(zhǔn)備給社區(qū)提交解決方案。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,688評(píng)論 19 139
  • 關(guān)于路由 很多像我這樣的網(wǎng)絡(luò)小白,對(duì)于整個(gè)路由過程比較模糊。下面以一個(gè)簡(jiǎn)單的PING示例解釋一下路由的整個(gè)過程。 ...
    wupeaking閱讀 4,855評(píng)論 1 5
  • 名詞解釋——GA:government affairs,政府事務(wù)。 中國的大部分互聯(lián)網(wǎng)公司,特別是移動(dòng)互聯(lián)網(wǎng)公司,...
    liupc閱讀 15,324評(píng)論 1 14
  • 一個(gè)不知名的作家,他擅長(zhǎng)寫作,尤其是感情生活類的文章。拜讀他的多篇文章之后,感覺他的文字里始終都有積極的主題,甚至...
    韓小曰閱讀 140評(píng)論 0 3
  • 1、javascript 1.1javascript來源 94年網(wǎng)景公司 研發(fā)出世界上第一款瀏覽器。95年 s...
    嗨黃先生閱讀 338評(píng)論 0 0

友情鏈接更多精彩內(nèi)容