欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

從零開始入門K8s|Kubernetes網(wǎng)絡概念及策略控制-創(chuàng)新互聯(lián)

作者 |?阿里巴巴高級技術(shù)專家? 葉磊

在萬柏林等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供成都網(wǎng)站建設、網(wǎng)站制作 網(wǎng)站設計制作按需網(wǎng)站制作,公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,品牌網(wǎng)站設計,成都全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站制作,萬柏林網(wǎng)站建設費用合理。

一、Kubernetes 基本網(wǎng)絡模型

本文來介紹一下 Kubernetes 對網(wǎng)絡模型的一些想法。大家知道 Kubernetes 對于網(wǎng)絡具體實現(xiàn)方案,沒有什么限制,也沒有給出特別好的參考案例。Kubernetes 對一個容器網(wǎng)絡是否合格做出了限制,也就是 Kubernetes 的容器網(wǎng)絡模型??梢园阉鼩w結(jié)為約法三章和四大目標。

  • 約法三章的意思是:在評價一個容器網(wǎng)絡或者設計容器網(wǎng)絡的時候,它的準入條件。它需要滿足哪三條? 才能認為它是一個合格的網(wǎng)絡方案。
  • 四大目標意思是在設計這個網(wǎng)絡的拓撲,設計網(wǎng)絡的具體功能的實現(xiàn)的時候,要去想清楚,能不能達成連通性等這幾大指標。

約法三章

先來看下約法三章:

  • 第一條:任意兩個 pod 之間其實是可以直接通信的,無需經(jīng)過顯式地使用 NAT 來接收數(shù)據(jù)和地址的轉(zhuǎn)換;
  • 第二條:node 與 pod 之間是可以直接通信的,無需使用明顯的地址轉(zhuǎn)換;
  • 第三條:pod 看到自己的 IP 跟別人看見它所用的IP是一樣的,中間不能經(jīng)過轉(zhuǎn)換。

后文中會講一下我個人的理解,為什么 Kubernetes 對容器網(wǎng)絡會有一些看起來武斷的模型和要求。

四大目標

四大目標其實是在設計一個 K8s 的系統(tǒng)為外部世界提供服務的時候,從網(wǎng)絡的角度要想清楚,外部世界如何一步一步連接到容器內(nèi)部的應用?

  • 外部世界和 service 之間是怎么通信的?就是有一個互聯(lián)網(wǎng)或者是公司外部的一個用戶,怎么用到 service?service 特指 K8s 里面的服務概念。
  • service 如何與它后端的 pod 通訊?
  • pod 和 pod 之間調(diào)用是怎么做到通信的?
  • 最后就是 pod 內(nèi)部容器與容器之間的通信?

最終要達到目標,就是外部世界可以連接到最里面,對容器提供服務。

對基本約束的解釋

對基本約束,可以做出這樣一些解讀:因為容器的網(wǎng)絡發(fā)展復雜性就在于它其實是寄生在 Host 網(wǎng)絡之上的。從這個角度講,可以把容器網(wǎng)絡方案大體分為?Underlay/Overlay?兩大派別:

  • Underlay 的標準是它與 Host 網(wǎng)絡是同層的,從外在可見的一個特征就是它是不是使用了 Host 網(wǎng)絡同樣的網(wǎng)段、輸入輸出基礎設備、容器的?IP 地址是不是需要與 Host 網(wǎng)絡取得協(xié)同(來自同一個中心分配或統(tǒng)一劃分)。這就是 Underlay;
  • Overlay 不一樣的地方就在于它并不需要從 Host 網(wǎng)絡的 IPM 的管理的組件去申請 IP,一般來說,它只需要跟 Host 網(wǎng)絡不沖突,這個 IP 可以自由分配的。

從零開始入門 K8s | Kubernetes 網(wǎng)絡概念及策略控制

為什么社區(qū)會提出 perPodperIP 這種簡單武斷的模型呢?我個人是覺得這樣為后面的 service 管理一些服務的跟蹤性能監(jiān)控,帶來了非常多的好處。因為一個 IP 一貫到底,對 case 或者各種不大的事情都會有很大的好處。

二、Netns 探秘

Netns 究竟實現(xiàn)了什么

下面簡單講一下,Network Namespace 里面能網(wǎng)絡實現(xiàn)的內(nèi)核基礎。狹義上來說 runC 容器技術(shù)是不依賴于任何硬件的,它的執(zhí)行基礎就是它的內(nèi)核里面,進程的內(nèi)核代表就是?task,它如果不需要隔離,那么用的是主機的空間( namespace),并不需要特別設置的空間隔離數(shù)據(jù)結(jié)構(gòu)( nsproxy-namespace proxy)。

從零開始入門 K8s | Kubernetes 網(wǎng)絡概念及策略控制

相反,如果一個獨立的網(wǎng)絡 proxy,或者 mount proxy,里面就要填上真正的私有數(shù)據(jù)。它可以看到的數(shù)據(jù)結(jié)構(gòu)如上圖所示。

從感官上來看一個隔離的網(wǎng)絡空間,它會擁有自己的網(wǎng)卡或者說是網(wǎng)絡設備。網(wǎng)卡可能是虛擬的,也可能是物理網(wǎng)卡,它會擁有自己的 IP 地址、IP 表和路由表、擁有自己的協(xié)議棧狀態(tài)。這里面特指就是 TCP/Ip協(xié)議棧,它會有自己的status,會有自己的 iptables、ipvs。

從整個感官上來講,這就相當于擁有了一個完全獨立的網(wǎng)絡,它與主機網(wǎng)絡是隔離的。當然協(xié)議棧的代碼還是公用的,只是數(shù)據(jù)結(jié)構(gòu)不相同。

Pod 與 Netns 的關系

從零開始入門 K8s | Kubernetes 網(wǎng)絡概念及策略控制

這張圖可以清晰表明 pod 里 Netns 的關系,每個 pod 都有著獨立的網(wǎng)絡空間,pod net container 會共享這個網(wǎng)絡空間。一般 K8s 會推薦選用 Loopback 接口,在 pod net container 之間進行通信,而所有的 container 通過 pod 的 IP 對外提供服務。另外對于宿主機上的 Root Netns,可以把它看做一個特殊的網(wǎng)絡空間,只不過它的?Pid?是1。

三、主流網(wǎng)絡方案簡介

典型的容器網(wǎng)絡實現(xiàn)方案

接下來簡單介紹一下典型的容器網(wǎng)絡實現(xiàn)方案。容器網(wǎng)絡方案可能是 K8s 里最為百花齊放的一個領域,它有著各種各樣的實現(xiàn)。容器網(wǎng)絡的復雜性,其實在于它需要跟底層 Iass 層的網(wǎng)絡做協(xié)調(diào)、需要在性能跟 IP 分配的靈活性上做一些選擇,這個方案是多種多樣的。

從零開始入門 K8s | Kubernetes 網(wǎng)絡概念及策略控制

下面簡單介紹幾個比較主要的方案:分別是 Flannel、Calico、Canal ,最后是 WeaveNet,中間的大多數(shù)方案都是采用了跟 Calico 類似的策略路由的方法。

  • Flannel?是一個比較大一統(tǒng)的方案,它提供了多種的網(wǎng)絡 backend。不同的 backend 實現(xiàn)了不同的拓撲,它可以覆蓋多種場景;
  • Calico?主要是采用了策略路由,節(jié)點之間采用 BGP 的協(xié)議,去進行路由的同步。它的特點是功能比較豐富,尤其是對 Network Point 支持比較好,大家都知道 Calico 對底層網(wǎng)絡的要求,一般是需要 mac 地址能夠直通,不能跨二層域;
  • 當然也有一些社區(qū)的同學會把 Flannel 的優(yōu)點和 Calico 的優(yōu)點做一些集成。我們稱之為嫁接型的創(chuàng)新項目?Cilium;
  • 最后講一下?WeaveNet,如果大家在使用中需要對數(shù)據(jù)做一些加密,可以選擇用 WeaveNet,它的動態(tài)方案可以實現(xiàn)比較好的加密。

Flannel 方案

從零開始入門 K8s | Kubernetes 網(wǎng)絡概念及策略控制

Flannel 方案是目前使用最為普遍的。如上圖所示,可以看到一個典型的容器網(wǎng)方案。它首先要解決的是 container 的包如何到達 Host,這里采用的是加一個 Bridge 的方式。它的 backend 其實是獨立的,也就是說這個包如何離開 Host,是采用哪種封裝方式,還是不需要封裝,都是可選擇的。

現(xiàn)在來介紹三種主要的 backend:

  • 一種是用戶態(tài)的 udp,這種是最早期的實現(xiàn);
  • 然后是內(nèi)核的 Vxlan,這兩種都算是 overlay 的方案。Vxlan 的性能會比較好一點,但是它對內(nèi)核的版本是有要求的,需要內(nèi)核支持 Vxlan 的功能;
  • 如果你的集群規(guī)模不夠大,又處于同一個二層域,也可以選擇采用 host-gw 的方式。這種方式的 backend 基本上是由一段廣播路由規(guī)則來啟動的,性能比較高。

四、Network Policy 的用處

Network Policy 基本概念

下面介紹一下 Network Policy 的概念。

從零開始入門 K8s | Kubernetes 網(wǎng)絡概念及策略控制

剛才提到了 Kubernetes 網(wǎng)絡的基本模型是需要 pod 之間全互聯(lián),這個將帶來一些問題:可能在一個 K8s 集群里,有一些調(diào)用鏈之間是不會直接調(diào)用的。比如說兩個部門之間,那么我希望 A 部門不要去探視到 B 部門的服務,這個時候就可以用到策略的概念。

基本上它的想法是這樣的:它采用各種選擇器(標簽或 namespace),找到一組 pod,或者找到相當于通訊的兩端,然后通過流的特征描述來決定它們之間是不是可以聯(lián)通,可以理解為一個白名單的機制。

在使用 Network Policy 之前,如上圖所示要注意 apiserver 需要打開一下這幾個開關。另一個更重要的是我們選用的網(wǎng)絡插件需要支持 Network Policy 的落地。大家要知道,Network Policy 只是 K8s 提供的一種對象,并沒有內(nèi)置組件做落地實施,需要取決于你選擇的容器網(wǎng)絡方案對這個標準的支持與否及完備程度,如果你選擇 Flannel 之類,它并沒有真正去落地這個 Policy,那么你試了這個也沒有什么用。

配置實例

從零開始入門 K8s | Kubernetes 網(wǎng)絡概念及策略控制

接下來講一個配置的實例,或者說在設計一個 Network Policy 的時候要做哪些事情?我個人覺得需要決定三件事:

  • 第一件事是控制對象,就像這個實例里面 spec 的部分。spec 里面通過 podSelector 或者 namespace 的 selector,可以選擇做特定的一組 pod 來接受我們的控制;
  • 第二個就是對流向考慮清楚,需要控制入方向還是出方向?還是兩個方向都要控制?
  • 最重要的就是第三部分,如果要對選擇出來的方向加上控制對象來對它流進行描述,具體哪一些 stream 可以放進來,或者放出去?類比這個流特征的五元組,可以通過一些選擇器來決定哪一些可以作為我的遠端,這是對象的選擇;也可以通過 IPBlock 這種機制來得到對哪些 IP 是可以放行的;最后就是哪些協(xié)議或哪些端口。其實流特征綜合起來就是一個五元組,會把特定的能夠接受的流選擇出來 。

本文總結(jié)

本文內(nèi)容到這里就結(jié)束了,我們簡單總結(jié)一下:

  • 在 pod 的容器網(wǎng)絡中核心概念就是 IP,IP 就是每個 pod 對外通訊的地址基礎,必須內(nèi)外一致,符合 K8s 的模型特征;

  • 那么在介紹網(wǎng)絡方案的時候,影響容器網(wǎng)絡性能最關鍵的就是拓撲。要能夠理解你的包端到端是怎么聯(lián)通的,中間怎么從 container 到達 Host,Host 出了 container 是要封裝還是解封裝?還是通過策略路由?最終到達對端是怎么解出來的?

  • 容器網(wǎng)絡選擇和設計選擇。如果你并不清楚你的外部網(wǎng)絡,或者你需要一個普適性最強的方案,假設說你對 mac 是否直連不太清楚、對外部路由器的路由表能否控制也不太清楚,那么你可以選擇 Flannel 利用 Vxlan 作為 backend 的這種方案。如果你確信你的網(wǎng)絡是 2 層可直連的,你可以進行選用 Calico 或者 Flannel-Hostgw 作為一個 backend;

  • 最后就是對 Network Policy,在運維和使用的時候,它是一個很強大的工具,可以實現(xiàn)對進出流的精確控制。實現(xiàn)的方法我們也介紹了,要想清楚你要控制誰,然后你的流要怎么去定義。

五、思考時間

最后留一些思考,大家可以想一想:

  1. 為什么接口標準化 CNI 化了,但是容器網(wǎng)絡卻沒有一個很標準的實現(xiàn),內(nèi)置在 K8s 里面?

  2. Network Policy 為什么沒有一個標準的 controller 或者一個標準的實現(xiàn),而是交給這個容器網(wǎng)絡的 owner 來提供?

  3. 有沒有可能完全不用網(wǎng)絡設備來實現(xiàn)容器網(wǎng)絡呢?考慮到現(xiàn)在有 RDMA 等有別于 TCP/IP 的這種方案。

  4. 在運維過程中網(wǎng)絡問題比較多、也比較難排查,那么值不值得做一個開源工具,讓它可以友好的展示從 container 到 Host 之間、Host 到 Host 之間,或者說封裝及解封裝之間,各個階段的網(wǎng)絡情況,有沒有出現(xiàn)問題,能夠快速的定位。據(jù)我所知應該現(xiàn)在是沒有這樣的工具的。

以上就是我對 K8s 容器網(wǎng)絡的基本概念、以及 Network Policy 的一些介紹。

“ 阿里巴巴云×××icloudnative×××erverless、容器、Service Mesh等技術(shù)領域、聚焦云原生流行技術(shù)趨勢、云原生大規(guī)模的落地實踐,做最懂云原生開發(fā)×××

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

新聞名稱:從零開始入門K8s|Kubernetes網(wǎng)絡概念及策略控制-創(chuàng)新互聯(lián)
鏈接地址:http://aaarwkj.com/article10/jccgo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供云服務器、電子商務外貿(mào)網(wǎng)站建設、網(wǎng)站設計公司企業(yè)建站、關鍵詞優(yōu)化

廣告

聲明:本網(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)

外貿(mào)網(wǎng)站建設
给我搜亚洲免费播放黄色大片| 亚洲天堂岛av一区二区| 亚洲精品一区二区播放| 加勒比视频在线观看一区| 精品国产一区二区三区精品日韩| 国产亚洲欧美精品久久久久| 丝袜啪啪啪麻豆白虎内射| 日韩视频播放一区二区| 日韩精品一区二区91| 国产一区精品在线免费看| 国产一区在线免费在线观看| 丝袜美腿亚洲综合第一区| 超碰免费在线公开97| 人妻黄色这里只有精品| 综合av在线一区天堂| 亚洲综合久久精品少妇av| 91日本精品免费在线视频| 久久午夜人妻一区二区| 日韩精品国产亚洲欧美| 亚洲精品色在线网站国产呦| av第一福利大全导航| 传媒视频在线免费观看| 色欧美在线视频观看日韩| 成人亚洲精品一区二区三区| 午夜影院在线免费观看三区| 亚洲国产成人91精品| 午夜性色福利视频你懂的| 日本一区二区三区高清| 亚洲av免费一区二区三区| 久久久之久亚州精品露出| 日本理伦片一区二区| 国产高清av免费在线播放| 国产在线一区二区三区观看| 精品成人乱色一区二区| 午夜av在线毛片免费观看| 狠狠久久五月综合色和啪| 五月婷婷丁香花综合网| 91免费在线观看高清| 开心五月婷婷六月丁香| 日韩人妻系列在线观看| 九九热这里只有免费精品|