国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Kubernetes網(wǎng)絡(luò)插件flannel原理簡(jiǎn)介

這篇具有很好參考價(jià)值的文章主要介紹了Kubernetes網(wǎng)絡(luò)插件flannel原理簡(jiǎn)介。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Flannel是kubernetes的網(wǎng)絡(luò)插件之一,通過構(gòu)建k8s集群節(jié)點(diǎn)之間的overlay網(wǎng)絡(luò),實(shí)現(xiàn)跨節(jié)點(diǎn)通信等功能。flannel常用的網(wǎng)絡(luò)轉(zhuǎn)發(fā)模式有hostgw、udp、vxlan等,在實(shí)際生產(chǎn)中常用的是vxlan模式。

子網(wǎng)劃分

k8s會(huì)為每個(gè)集群節(jié)點(diǎn)劃分子網(wǎng),這樣pod調(diào)度到某節(jié)點(diǎn)時(shí),就會(huì)按照該節(jié)點(diǎn)的子網(wǎng)網(wǎng)段分配ip,保障pod ip的集群唯一性。

我們可以查看/run/flannel/subnet.env 文件,里面主要包括當(dāng)前節(jié)點(diǎn)的子網(wǎng)信息。例如本機(jī)集群192.168.249.10節(jié)點(diǎn)子網(wǎng)網(wǎng)段是10.244.0.0/24,192.168.249.12節(jié)點(diǎn)子網(wǎng)網(wǎng)段是10.244.1.0/24

Kubernetes網(wǎng)絡(luò)插件flannel原理簡(jiǎn)介

Flannel通過daemonset的方式在每個(gè)k8s節(jié)點(diǎn)上運(yùn)行了一個(gè)flanneld的服務(wù),通過flanneld進(jìn)程對(duì)節(jié)點(diǎn)進(jìn)行創(chuàng)建隧道,添加路由信息,修改iptables等操作。

跨節(jié)點(diǎn)Pod通信

我們以vxlan模式為例看一下flannel如何實(shí)現(xiàn)的pod間的通信。

Flannel創(chuàng)建名為flannel.1的vxlan設(shè)備(nolearning),設(shè)備ip是子網(wǎng)的第一個(gè)IP 10.244.1.0,并把設(shè)備的mac和ip和本節(jié)點(diǎn)的ip記錄到etcd中。還會(huì)創(chuàng)建名為cni0的網(wǎng)橋,網(wǎng)橋的ip是子網(wǎng)的第二個(gè)ip 10.244.1.1,起到docker0網(wǎng)橋的作用。

Kubernetes網(wǎng)絡(luò)插件flannel原理簡(jiǎn)介

我們先看一下跨節(jié)點(diǎn)通信的流程圖,然后一步一步查看數(shù)據(jù)包流向。

Kubernetes網(wǎng)絡(luò)插件flannel原理簡(jiǎn)介

我們從節(jié)點(diǎn)192.168.249.12上的pod1?10.244.1.4中ping節(jié)點(diǎn)192.168.249.10上的pod2? 10.244.0.2

Kubernetes網(wǎng)絡(luò)插件flannel原理簡(jiǎn)介

進(jìn)入pod1 執(zhí)行route -n,我們發(fā)現(xiàn)pod的默認(rèn)網(wǎng)關(guān)是10.244.1.1,也就是cni0Kubernetes網(wǎng)絡(luò)插件flannel原理簡(jiǎn)介

為什么pod的eth0可以發(fā)給cni0網(wǎng)橋呢,查看pod的eth0網(wǎng)卡,發(fā)現(xiàn)他的對(duì)端是if11。

Kubernetes網(wǎng)絡(luò)插件flannel原理簡(jiǎn)介

我們?cè)倏此拗鳈C(jī)上的網(wǎng)絡(luò)設(shè)備if11是vethc8894304,這個(gè)設(shè)備在cni0網(wǎng)橋上。這里可以理解成一根網(wǎng)線一頭插在pod里,另一頭插在了cni0網(wǎng)橋上。

Kubernetes網(wǎng)絡(luò)插件flannel原理簡(jiǎn)介

到了cni0網(wǎng)橋其實(shí)就到了宿主機(jī),再看宿主機(jī)的路由信息??梢园l(fā)現(xiàn)flannel專門為每個(gè)子網(wǎng)網(wǎng)段創(chuàng)建了一條路由,10.244.0.0/24網(wǎng)段就通過宿主機(jī)上的vxlan設(shè)備flannel.1發(fā)給網(wǎng)關(guān)10.244.0.0,網(wǎng)關(guān)的ip、mac與宿主機(jī)的對(duì)應(yīng)關(guān)系都可以在etcd中查到。

Kubernetes網(wǎng)絡(luò)插件flannel原理簡(jiǎn)介

之后通過flannel.1 進(jìn)行vxlan封包。vxlan包結(jié)構(gòu)如圖所示。

Kubernetes網(wǎng)絡(luò)插件flannel原理簡(jiǎn)介

包內(nèi)層就是pod到pod發(fā)送的二層鏈路層包,在此基礎(chǔ)上添加了vxlan的header,并使用udp、宿主機(jī)的ip和mac信息進(jìn)行封包后,傳輸給對(duì)方宿主機(jī)再進(jìn)行拆包。

最后查看對(duì)端宿主機(jī)的路由表,route -n。Kubernetes網(wǎng)絡(luò)插件flannel原理簡(jiǎn)介

對(duì)于本機(jī)pod網(wǎng)段的數(shù)據(jù)包 10.244.0.0/24,都轉(zhuǎn)給了虛擬網(wǎng)橋cni0,而cni0再通過上面的veth對(duì)將數(shù)據(jù)包轉(zhuǎn)發(fā)到pod中。至此就完成了跨node節(jié)點(diǎn)的pod通信。

同節(jié)點(diǎn)Pod通信

了解了跨節(jié)點(diǎn)pod通信,再考慮同節(jié)點(diǎn)pod通信就明白,直接通過cni0網(wǎng)橋就可以了。

Kubernetes網(wǎng)絡(luò)插件flannel原理簡(jiǎn)介

UDP與Host-gw模式

Flannel還提供了UDP和Host-gw兩種模式。UDP模式和Vxlan基本一致,只是封包方式不同,UDP封包結(jié)構(gòu)如下圖所示。

Kubernetes網(wǎng)絡(luò)插件flannel原理簡(jiǎn)介

所以UDP封包就是直接將內(nèi)層IP層數(shù)據(jù)包封裝到了UDP中,由于是使用flanneld應(yīng)用層面進(jìn)行封包解包,效果比vxlan內(nèi)核封包要差,使用較少。

我們修改flannel的configmap,將flannel從vxlan模式換成host-gw模式,并重啟flannel的pod。這樣就從vxlan模式切換成了host-gw模式。

kubectl edit cm -nkube-system kube-flannel-cfg

Kubernetes網(wǎng)絡(luò)插件flannel原理簡(jiǎn)介

我們發(fā)現(xiàn)其他pod網(wǎng)段的路由信息有所變化,輸出網(wǎng)卡從flannel.1變成了本機(jī)網(wǎng)卡,因?yàn)椴恍枰M(jìn)行封包,同時(shí)flannel的mtu從1450改成1500。而網(wǎng)關(guān)直接配置為宿主機(jī)ip,這就需要所有的集群節(jié)點(diǎn)處于同一個(gè)二層網(wǎng)絡(luò)中,即二層可達(dá)。這也是host-gw模式的最大限制。

Kubernetes網(wǎng)絡(luò)插件flannel原理簡(jiǎn)介

最后,如果你對(duì)kubernetes感興趣的話,歡迎關(guān)注~文章來源地址http://www.zghlxwxcb.cn/news/detail-417629.html

到了這里,關(guān)于Kubernetes網(wǎng)絡(luò)插件flannel原理簡(jiǎn)介的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • K8S安裝網(wǎng)絡(luò)插件flannel

    引言:K8S集群剛剛創(chuàng)建完成之后,由于網(wǎng)絡(luò)環(huán)境未進(jìn)行配置,在執(zhí)行查看Node節(jié)點(diǎn)時(shí),節(jié)點(diǎn)狀態(tài)會(huì)顯示NotReady,信息如下。導(dǎo)致顯示這個(gè)狀態(tài)的原因是因?yàn)檫€未安裝網(wǎng)絡(luò)插件,注意,該網(wǎng)絡(luò)插件只在master節(jié)點(diǎn)中執(zhí)行就可以了。本文使用flanner網(wǎng)絡(luò)查看 執(zhí)行后,會(huì)顯示各種文件

    2024年02月15日
    瀏覽(17)
  • 【K8S系列】深入解析k8s網(wǎng)絡(luò)插件—Flannel

    【K8S系列】深入解析k8s網(wǎng)絡(luò)插件—Flannel

    ? 做一件事并不難,難的是在于堅(jiān)持。堅(jiān)持一下也不難,難的是堅(jiān)持到底。 文章標(biāo)記顏色說明: 黃色:重要標(biāo)題 紅色:用來標(biāo)記結(jié)論 綠色:用來標(biāo)記論點(diǎn) 藍(lán)色:用來標(biāo)記論點(diǎn) Kubernetes (k8s) 是一個(gè)容器編排平臺(tái),允許在容器中運(yùn)行應(yīng)用程序和服務(wù)。今天學(xué)習(xí)一下k8s網(wǎng)絡(luò)插件

    2024年02月16日
    瀏覽(41)
  • 深入 K8s 網(wǎng)絡(luò)原理(一)- Flannel VXLAN 模式分析

    深入 K8s 網(wǎng)絡(luò)原理(一)- Flannel VXLAN 模式分析

    這周集中聊下 K8s 的集群網(wǎng)絡(luò)原理,我初步考慮分成3個(gè)方向: Pod-to-Pod ?通信(同節(jié)點(diǎn) or 跨節(jié)點(diǎn)),以 Flannel VXLAN 模式為例; Pod/External-to-Service ?通信,以 iptables 實(shí)現(xiàn)為例; Ingress ?原理,以 NGINX Ingress Controller 實(shí)現(xiàn)為例; 其他:(到時(shí)候看心情)Flannel host-gw 模式,Calico,…

    2024年01月17日
    瀏覽(18)
  • k8s kubernetes 1.23.6 + flannel公網(wǎng)環(huán)境安裝

    k8s kubernetes 1.23.6 + flannel公網(wǎng)環(huán)境安裝

    準(zhǔn)備環(huán)境,必須是同一個(gè)云服務(wù)廠商,如:華為,阿里、騰訊等,不要存在跨平臺(tái)安裝K8S,跨平臺(tái)安裝需要處理網(wǎng)絡(luò)隧道才能實(shí)現(xiàn)所有節(jié)點(diǎn)在一個(gè)網(wǎng)絡(luò)集群中,這里推薦使用同一家云服務(wù)廠商安裝即可 這里使用centos7進(jìn)行安裝: 必須先開通端口 2380 2379 10250 10257 10259 6443 否則會(huì)

    2024年02月07日
    瀏覽(28)
  • K8s進(jìn)階之網(wǎng)絡(luò):pod內(nèi)不同容器、同節(jié)點(diǎn)不同pod通信、CNI插件、不同節(jié)點(diǎn)pod通信、Flannel容器網(wǎng)絡(luò)、Serivce連接外部網(wǎng)絡(luò)、服務(wù)發(fā)現(xiàn)、Nginx反向代理與域名、Ingress代理

    K8s進(jìn)階之網(wǎng)絡(luò):pod內(nèi)不同容器、同節(jié)點(diǎn)不同pod通信、CNI插件、不同節(jié)點(diǎn)pod通信、Flannel容器網(wǎng)絡(luò)、Serivce連接外部網(wǎng)絡(luò)、服務(wù)發(fā)現(xiàn)、Nginx反向代理與域名、Ingress代理

    Pod是Kubernetes中最小的可部署單元,它是一個(gè)或多個(gè)緊密關(guān)聯(lián)的容器的組合,這些容器共享同一個(gè)網(wǎng)絡(luò)命名空間和存儲(chǔ)卷,因此Pod中的 所有容器都共享相同的網(wǎng)絡(luò)命名空間和IP地址——PodIP ,所以在同一個(gè)Pod內(nèi)的容器間通信可以 通過localhost直接通信 。 k8s創(chuàng)建Pod時(shí)永遠(yuǎn)都是首先

    2024年02月05日
    瀏覽(24)
  • k8s Calico網(wǎng)絡(luò)和flannel網(wǎng)絡(luò)對(duì)比

    Calico 和 Flannel 是 Kubernetes(K8s) 中常用的兩種網(wǎng)絡(luò)插件,它們都有各自的優(yōu)點(diǎn)和適用場(chǎng)景。以下是 Calico 網(wǎng)絡(luò)與 Flannel 網(wǎng)絡(luò)的一些主要對(duì)比點(diǎn): Calico 1. 技術(shù)基礎(chǔ) :Calico 依賴于 BGP(Border Gateway Protocol)路由協(xié)議來實(shí)現(xiàn)節(jié)點(diǎn)間通信,可以支持大規(guī)模的集群。 2. 性能 :由于使用

    2024年04月27日
    瀏覽(21)
  • etcd跨主機(jī)通信與Flannel

    etcd跨主機(jī)通信與Flannel

    Docker 默認(rèn)的網(wǎng)絡(luò)環(huán)境下 , 單臺(tái)主機(jī)上的 Docker 容器可以通過 docker0 網(wǎng)橋直接通信 , 而不同主機(jī)上的 Docker 容器之間只能通過在主機(jī)上做端口映射進(jìn)行通信。 這種端口映射方式對(duì)很多集群應(yīng)用來說極不方便。 如果能讓 Docker 容器之間直接使用自己的 IP 地址進(jìn)行通信 , 會(huì)解決很多

    2024年01月25日
    瀏覽(15)
  • 解決k8s拉取flannel失敗的方法

    k8s版本:1.26.0 flannel:0.20.2 flannel-cni-plugin:v1.1.0 flannel是k8s常用的網(wǎng)絡(luò)插件,正常的部署步驟為: 打開flannel項(xiàng)目: https://github.com/flannel-io/flannel 按照指引執(zhí)行: kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml 但是在國(guó)內(nèi)如果按照該步驟,則會(huì)顯示

    2024年02月16日
    瀏覽(15)
  • Flannel dial tcp X.X.X.X i/o timeout

    Flannel dial tcp X.X.X.X i/o timeout

    E0826 15:59:20.782550 ? ? ? 1 main.go:229] Failed to create SubnetManager: error retrieving pod spec for \\\'kube-flannel/kube-flannel-ds-k79vs\\\': Get \\\"https://10.0.0.1:443/api/v1/namespaces/kube-flannel/pods/kube-flannel-ds-k79vs\\\": dial tcp 10.0.0.1:443: i/o timeout ?這種報(bào)錯(cuò)一般是 集群網(wǎng)段設(shè)置錯(cuò)誤造成的 查看kube-flannel.yaml ? step1 檢查

    2024年02月11日
    瀏覽(17)
  • Pod提示NetworkPlugin cni failed to set up .. network:open/run/flannel/subnet.env:nosuchfileordirectory

    Pod提示NetworkPlugin cni failed to set up .. network:open/run/flannel/subnet.env:nosuchfileordirectory

    K8s在創(chuàng)建pod時(shí)發(fā)現(xiàn)pod狀態(tài)為ContainerCreating狀態(tài) 檢查pod的日志發(fā)現(xiàn)提示 Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container \\\"fdd30141bf51b68d4f08a2405ea287508aa0d585d30c853a849d9d57cb7c1062\\\" network for pod \\\"tiller-deploy-58565b5464-zhnml\\\": NetworkPlugin cni failed to set up pod \\\"tiller-deploy-585

    2024年02月12日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包