成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Kubernetes 網絡圖解指南,解決實際問題

系統 Linux
這篇文章我們通過圖文來深入理解 Kubernetes 中的網絡如何工作。

 

如果大家已經使用了 kubernetes技術,并運行了一些測試或生產的服務,可能已經能體會到 K8s 技術帶來的革命性變化,如果還沒有用過的小伙伴,我建議盡快入坑,畢竟這是技術趨勢。

目前盡管已經有很多工具可以用來設置和管理集群,但我們仍然需要知道在k8s底層發生了什么,尤其在碰到問題時,只有知道到底層原理才有可能從某個現象去分析到底是哪里出了問題,才能去解決實際問題。

從技術上說 Kubernetes 其實在底層它是非常復雜的,它有很多組件,因此,必須了解它們如何相互配合并協同工作,才能實際去理解實際中的問題,那說到這里,不得不說K8s的網絡是最復雜且最關鍵之一。

因此,這篇我們通過圖文來深入理解 Kubernetes 中的網絡如何工作。

Kubernetes網絡模型

Kubernetes Networking 的核心是一種重要的基本設計理念:

每個Pod都有唯一的IP。

此 Pod IP 由該Pod中的所有容器共享,并且可以與所有其他Pod路由。你是否曾經注意到Kubernetes節點上運行著一些“暫停”容器?它們被稱為“沙盒容器”,其唯一的工作就是保留和保存由Pod中的所有容器共享的網絡名稱空間(netns)。這樣,即使容器死亡,并且在其位置創建了一個新容器,容器IP也不會改變。這種按單機IP模式的巨大好處是與基礎主機之間沒有IP或端口沖突。而且,我們不必擔心應用程序使用哪個端口。

有了這個,Kubernetes 唯一的要求就是,這些Pod IP可以從其他所有Pod進行路由/訪問,而不管它們位于哪個節點上。

節點內通信

第一步是確保同一節點上的Pod能夠互相通信。然后將該思想擴展到跨節點,到Internet等的通信。

在每個Kubernetes節點(在本例中為Linux機器)上,都有一個根網絡名稱空間(根為基礎,而不是超級用戶)-root netns。

主網絡接口eth0在此根netns中。

同樣,每個Pod都有其自己的網絡,并且有一個虛擬以太網對將其連接到根網絡。這基本上是一個管道對,一端在根網中,另一端在pod網中。

我們將Pod-end命名為eth0,因此Pod不了解底層主機,并認為它具有自己的根網絡設置。另一端的名稱類似于vethxxx。

可以使用ifconfig或ip a命令在節點上列出所有這些接口。

對節點上的所有Pod完成此操作。為了使這些Pod相互通信,使用了Linux以太網橋cbr0。Docker使用了一個類似的橋,名為docker0。

可以使用brctl show命令列出網橋。

假設一個數據包從pod1到pod2。

  1.   它將pod1的網絡保留在eth0處,并將根網絡保留在vethxxx。
  2.   將其傳遞給cbr0,后者使用ARP請求發現目的地,并說“誰擁有此IP?”
  3.   vethyyy說它具有該IP,因此網橋知道將數據包轉發到何處。
  4.   數據包到達vethyyy,穿過管道對并到達pod2的網絡。

這就是節點上的容器相互通信的方式。顯然還有其他方法,但這可能是最簡單的方法.

節點間通訊

正如之前提到的,pod也必須在節點之間可訪問。Kubernetes并不關心它是如何完成的。我們可以使用L2(跨節點的ARP),L3(跨節點的IP路由-如云提供商路由表)覆蓋網絡。只要流量可以到達另一個節點上所需的Pod,這都沒有關系。每個節點都為Pod IP分配了唯一的CIDR塊(一系列IP地址),因此每個Pod具有一個唯一的IP,該IP與另一個節點上的Pod不沖突。

在大多數情況下,尤其是在云環境中,云提供商路由表可確保數據包到達正確的目的地。通過在每個節點上設置正確的路由,可以完成同一件事。還有許多其他的網絡插件也可以發揮自己的作用。

在這里,我們有兩個節點,類似于我們之前看到的。每個節點都有各種網絡名稱空間,網絡接口和網橋。

假設一個數據包從pod1到pod4(在另一個節點上)。

    1. 它將pod1的網絡保留在eth0處,并將根網絡保留在vethxxx。

    2. 它傳遞給cbr0,后者發出ARP請求以查找目的地。

    3. 它從cbr0傳到主網絡接口eth0,因為此節點上沒有人具有pod4的IP地址。

    4. 它將離開node1,這時候src = pod1和dst = pod4。

    5. 路由表具有為每個節點CIDR塊設置的路由,并且將數據包路由到其CIDR塊包含pod4 IP的節點。

    6. 因此,數據包到達主網絡接口eth0的node2?,F在,即使pod4不是eth0的IP,由于已將節點配置為啟用IP轉發,因此數據包仍轉發到cbr0。在節點的路由表中查找與pod4 IP匹配的所有路由。它找到cbr0作為此節點的CIDR塊的目標??梢允褂胷oute -n命令列出節點路由表.

    7. 橋接器接收數據包,發出ARP請求,然后發現IP屬于vethyyy。   

    8. 數據包穿過管道對并到達pod4 

 

責任編輯:龐桂玉 來源: Linux公社
相關推薦

2011-06-27 16:44:59

Qmake

2012-08-22 08:58:39

編程

2013-09-22 10:15:05

編程思想

2015-11-30 16:08:54

iosbitcode適配

2024-11-21 06:00:00

Python列表推導式

2010-03-15 18:08:01

Python編程語言

2017-03-01 10:04:16

2010-03-23 09:32:32

云計算云網絡

2009-10-10 09:03:00

網絡布線

2010-05-14 18:22:56

MySQLSQL優化索

2013-03-25 10:36:20

Android解決問題代碼片段

2019-11-12 14:20:05

區塊鏈比特幣區塊鏈應用

2019-11-14 15:17:49

區塊鏈應用數字貨幣

2019-10-24 10:25:32

Kubernetes網絡集群

2010-03-16 09:41:34

交換機配置

2019-12-09 10:40:15

YAMLBashKubernetes

2009-12-30 10:01:17

MPLSVPN網絡

2009-10-14 09:27:15

結構化綜合布線

2022-05-02 18:45:33

Kubernetes網絡模型

2022-03-02 10:58:06

CactiUbuntuLinux
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品日韩精品 | 国产成人免费网站 | 国产情侣一区 | 中文字字幕一区二区三区四区五区 | 殴美成人在线视频 | 亚洲高清视频一区二区 | 91视频网址 | 欧美性一区二区三区 | 三级欧美 | 国产福利在线视频 | 99re视频在线免费观看 | 一级在线免费观看 | 国产日韩一区二区三免费高清 | 97精品超碰一区二区三区 | 久久一区二区免费视频 | 9191av| 秋霞电影院午夜伦 | 欧美1区| 国产亚洲成av人片在线观看桃 | 免费骚视频 | 亚洲国产aⅴ成人精品无吗 亚洲精品久久久一区二区三区 | 国产成在线观看免费视频 | 久热9| 欧美综合视频在线 | 精品免费在线 | 91久久久久久久久久久久久 | 国产黑丝av | 久久免费资源 | 天天爽一爽 | 欧美自拍网站 | 久久99精品久久久 | 亚洲精品视频免费观看 | 中国大陆高清aⅴ毛片 | 欧美一区二不卡视频 | 成人一区二区三区在线 | 国产精品福利视频 | www日韩欧美 | 在线视频成人 | 久久国产免费看 | 欧美日韩综合 | 亚洲视频免费播放 |