日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

k8s pod里访问不到外部ip_K8S容器网络如何实现通信?

發(fā)布時間:2024/9/27 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 k8s pod里访问不到外部ip_K8S容器网络如何实现通信? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Kubernetes(簡稱K8S)正迅速成為云計算中部署和管理軟件的新標準,那么K8S的容器網(wǎng)絡(luò)是如何通信的呢?在了解容器網(wǎng)絡(luò)通信原理之前,我們先學(xué)習(xí)下K8S中主要組件的定義,包括:節(jié)點(Node)、容器、POD、 外部網(wǎng)絡(luò)

節(jié)點:是K8s中最小的計算硬件單元。它是集群中單個機器的表示。在大多數(shù)生產(chǎn)系統(tǒng)中,節(jié)點很可能是數(shù)據(jù)中心中的物理機器,或者是托管在像谷歌云平臺這樣的云供應(yīng)商上的虛擬機。

容器:在K8s上運行的程序被打包成Linux容器。容器是一個被廣泛接受的標準,因此已經(jīng)有許多預(yù)先構(gòu)建的映像可以部署在K8s上。容器化允許你創(chuàng)建自足式的Linux執(zhí)行環(huán)境。任何程序和它的所有依賴項都可以打包成一個文件,然后在網(wǎng)絡(luò)上共享。任何人都可以下載該容器并在其基礎(chǔ)設(shè)施上部署它,所需的設(shè)置非常少。

POD:是K8s中最小的可部署和管理單元。換句話講,如果需要在K8s中運行單個容器,那么你就得為這個容器創(chuàng)建一個Pod。同時,一個Pod可以包含多個容器,這些容器往往是緊耦合的。怎么樣個緊耦合法呢?試著想象這么一個場景,一個Pod中的多個容器代表需要運行在同一個服務(wù)器上的多個進程。這種類比是合理的,因為在許多方面,Pod就類似于一臺服務(wù)器。

外部網(wǎng)絡(luò):容器應(yīng)用部署完成后,需要對外提供服務(wù),這里的外部可能是互聯(lián)網(wǎng)、也可能是內(nèi)部網(wǎng)絡(luò)。

那么容器網(wǎng)絡(luò)是如何實現(xiàn)在:POD內(nèi)部通信、同節(jié)點的POD之間通信、不同節(jié)點的POD之間通信、外部網(wǎng)絡(luò)與POD之間通信的呢?下面我們分別來介紹:


1、POD內(nèi)部通信:同一Pod中的任何容器都將共享相同的名稱空間和本地網(wǎng)絡(luò),容器可以很容易地與其他容器在相同的容器中進行通信,k8s中每個Pod中管理著一組容器,這些容器共享同一個網(wǎng)絡(luò)命名空間,Pod中的每個容器擁有與Pod相同的IP和port地址空間,并且由于他們在同一個網(wǎng)絡(luò)命名空間,他們之間可以通過localhost相互訪問(可見POD內(nèi)部的通信是不經(jīng)過數(shù)據(jù)IP數(shù)據(jù)通信通信網(wǎng)絡(luò)的)。

2、同節(jié)點的POD之間通信:不同pod之間的通信,就是使用linux虛擬以太網(wǎng)設(shè)備或者說是由兩個虛擬接口組成的以太網(wǎng)接口對使不同的網(wǎng)絡(luò)命名空間鏈接起來,這些虛擬接口分布在多個POD上,通過網(wǎng)橋把不同的POD組成為一個以太網(wǎng),直接進行二層以太網(wǎng)通信。

3、不同節(jié)點的POD之間通信:當跨POD通信時,本節(jié)點內(nèi)無法找到目的POD的MAC地址,則會查找三層路由表轉(zhuǎn)發(fā),這需要依靠不同節(jié)點間的網(wǎng)路配置來實現(xiàn),對于如何來配置網(wǎng)絡(luò),k8s在網(wǎng)絡(luò)這塊自身并沒有實現(xiàn)網(wǎng)絡(luò)規(guī)劃的具體邏輯,而是制定了一套CNI接口規(guī)范,開放給社區(qū)來實現(xiàn),目前主流的網(wǎng)絡(luò)配置方案有:Flannel、weave、calico,Macvlan等,其中Flannel和weave方案都采用VXLAN網(wǎng)絡(luò)模型,calico采用的BGP三層路由網(wǎng)絡(luò)模型,Macvlan是Linux自帶的虛擬網(wǎng)卡實現(xiàn)簡單的二層通信。

4、外部網(wǎng)絡(luò)與POD之間通信:Pod之間通過他們自己的ip地址進行通信,但是pod的ip地址是不持久的,當集群中pod的規(guī)模縮減或者pod故障或者node故障重啟后,新的pod的ip就可能與之前的不一樣的。所以k8s中衍生出來Service來解決這個問題。k8s中 Service管理了一系列的Pods,每個Service有一個虛擬的ip,要訪問service管理的Pod上的服務(wù)只需要訪問你這個虛擬ip就可以了,這個虛擬ip是固定的,當service下的pod規(guī)模改變、故障重啟、node重啟時候,對使用service的用戶來說是無感知的,因為他們使用的service的ip沒有變。當數(shù)據(jù)包到達Service虛擬ip后,數(shù)據(jù)包會被通過k8s給該servcie自動創(chuàng)建的負載均衡器路由到背后的pod容器。

以上就是K8S容器網(wǎng)絡(luò)通信的基本原理,歡迎關(guān)注本賬號,帶你了解有意思的IT技術(shù)。

總結(jié)

以上是生活随笔為你收集整理的k8s pod里访问不到外部ip_K8S容器网络如何实现通信?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。