k8s網(wǎng)絡基礎

1. CNM模型

DOCKER公司提出,主要通過如下三個組件實現(xiàn):

1.1 Network Sandbox

  • 作用: 容器內(nèi)部網(wǎng)絡棧,包括網(wǎng)絡接口、路由表、DNS等配置的管理。
  • 實現(xiàn):可用 linux網(wǎng)絡命名空間、FreeBSD Jail等機制實現(xiàn)
  • 說明:一個Sandbox可以包含多個Endpoint。

1.2 Endpoint

  • 作用:用于將容器內(nèi)部Sandbox與外部網(wǎng)絡相連的網(wǎng)絡接口。
  • 實現(xiàn):可用veth對、Open vSwitch內(nèi)部port等技術實現(xiàn)。
  • 說明:一個Endpoint僅可加入一個Network

1.3 Network

  • 作用:可以直接相互連接的Endpoint的集合。
  • 實現(xiàn):可用linux網(wǎng)橋、VLAN等技術實現(xiàn)。
  • 說明:一個Network包含多個Endpoint

2. CNI模型

由CoreOS公司提出的一種容器網(wǎng)絡規(guī)范。被kubernetes等項目采納。
其對容器網(wǎng)絡的設置和操作都通過插件完成,有如下兩種類型:

2.1 CNI Plugin

作用:負責為容器配置網(wǎng)絡資源。

包括如下3個基本接口的定義:

  • ADD:將容器添加到某個網(wǎng)絡
  • DELETE:容器銷毀時將容器從某個網(wǎng)絡中刪除
  • CHECK:檢查容器網(wǎng)絡是否正確
  • VERSION:查詢網(wǎng)絡插件支持的CNI規(guī)范版本號

2.2 IPAM Plugin

作用:負責對容器的IP地址進行分配和管理。如:為容器分配IP、網(wǎng)關、路由、DNS。


下邊介紹集中常用的網(wǎng)絡組件

3. Flannel

3.1 實現(xiàn)原理

1) 協(xié)助kubernetes,給每個node上的容器分配互不沖突的IP地址
2)建立一個覆蓋網(wǎng)絡(Overlay Network),通過該網(wǎng)絡將數(shù)據(jù)原封不動的傳給目標容器。

3.2 網(wǎng)絡架構(gòu)

image.png
  • flannel0的網(wǎng)橋一端諒解docker0,一端連接flanneld 服務進程

  • flanneld進程連接etcd
    利用etcd管理可分配的IP地址網(wǎng)段資源
    監(jiān)控etcd中每個Pod的實際地址,并在內(nèi)存中建立一個Pod節(jié)點的路由表

  • flanneld進程下連docker0和物理網(wǎng)絡
    使用內(nèi)存中的Pod路由表,將docker0發(fā)來的數(shù)據(jù)包包裝起來,利用物理網(wǎng)絡投遞到目標flanneld上。
    目標flanneld解包,發(fā)送給docker0(因此daocker0得到的是原始數(shù)據(jù))

4. calico-BGP模式

4.1 實現(xiàn)原理

一個基于BGP的純?nèi)龑泳W(wǎng)絡方案
在每個計算節(jié)點上由一個vRouter 來負責轉(zhuǎn)發(fā),每個vRouter通過BGP1協(xié)議把本節(jié)點上運行的容器路由信息向整個Calico網(wǎng)絡廣播,并自動設置到達其他節(jié)點的路由轉(zhuǎn)發(fā)規(guī)則

4.2網(wǎng)絡架構(gòu)

image.png

4.3 calico 組件

  • Felix:
    是一個Calico Agent,運行在每個node上,負責為容器設置網(wǎng)絡資源(如IP地址、路由規(guī)則、iptables規(guī)則等),保證跨主機容器網(wǎng)絡互通

  • etcd:后端存儲

  • BGP Client
    負責把Felix在各Node上設置的路由信息通過BGP協(xié)議廣播到Calico網(wǎng)絡

  • Route Reflector:
    通過一個或多個BGP Reflector 來完成大規(guī)模集群的分級路由分發(fā)

  • CalicoCtl
    Calico的命令行管理工具。

4.4 IP Pool 的兩種模式

  • IPIP模式
    將各Node的路由之間做一個tunnel,再把兩個網(wǎng)絡連接起來。如圖所示:
image.png
  • BGP模式
    直接使用物理機作為虛擬路由器(vRouter),不再創(chuàng)建額外的tunnel

  • 設置方法
    calico-node的容器中變量設置為:
    ipip模式: CALICO_IPV4POOL_IPIP="always"
    BGP模式: CALICO_IPV4POOL_IPIP="off"


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

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

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