k8s calico網路原理以及多租戶實現設計

2021-07-30 05:51:57 字數 3438 閱讀 5471

基礎概念介紹

租戶(tenant

):在網路資源上完全隔離的乙個使用者,在業務上可以代表乙個對於網路有隔離和管理需求的部門。乙個租戶可以對應多個網路。

網路(network

):在業務上可以代表乙個部門下的乙個專案組。乙個網路只能掛在乙個租戶下面,同時可以有多個子網。

子網(subnet

):在業務上可以代表乙個部門下專案組的乙個開發或測試環境。同乙個

network

的subnet

之間可以預設配置成隔離或者連通。

預設版本提供:

tenant

隔離,tenant

下的network

隔離,network

下的subnet

全通。(

network

下的subnet

可以由使用者可選配置成隔離)

模組功能概述

軟體定義網路(software-definednetworking,sdn

)的核心思想是採用控制和**相分離的策略,實現網路和業務的可程式設計,從而實現網路資源的動態管理。使用者可以通過程式動態構建各種特性的資料**網路,以達到不同網路對各種應用的承載需求。

雲環境下的網路已經變得非常複雜,

特別是在多租戶場景裡,

使用者隨時都可能需要建立、修改和刪除網路,網路的連通性和隔離性也不可能通過手工配置來保證了。為快速響應業務的需求,harmonycloud

提供了軟體定義網路的解決方案,具有非常高的靈活性和自動化優勢。

主要功能:

租戶網路隔離

網路的安全性

網路的多粒度隔離控制

可以在同一

tenant

下配置如下

6種使用者自定義

policy

,tenant

之間不可配置。

優先順序

入口物件

作用物件 備註

11network1

network2 n

etwork

2->n

etwork112

network1

network2-subnet1

network2-subnet1

->

network1 21

network1-subnet1

network2

network2

->

network1-subnet1 22

network1-subnet1

network2-subnet1

network2-subnet1

->

network1-subnet1 31

network2

network2

-> 32

network2-subnet1

network2-subnet1

->

kubernetes

提供網路服務

模組功能點實現介紹

harmonycloud

軟體定義網路解決方案的目標是實現「網路即服務(networkas a service

)」,在設計上遵循了基於sdn

實現網路虛擬化的原則,以開源的

calico

網路解決方案為基礎進行定製優化。

calico

是乙個純三層的資料中心網路方案,而且方便整合openstack

這種 iaas

雲架構,能夠提供高效可控的vm

、容器、裸機之間的通訊。

calico架構圖

如圖,calico

的核心元件包括:

felix

、etcd

、bird

、bird。

felix

,即calicoagent

,跑在kubernetes

的node

節點上,主要負責配置路由及acls

等資訊來確保endpoint

的連通狀態;

etcd

,分布式鍵值儲存,主要負責網路元資料一致性,確保calico

網路狀態的準確性,可以與

kubernetes

共用;bgpclient(bird),

主要負責把 felix

寫入 kernel

的路由資訊分發到當前 calico

網路,確保 workload

間的通訊的有效性;

bgproute reflector(bird),

大規模部署時使用,摒棄所有節點互聯的mesh

模式,通過乙個或者多個 bgproute reflector

來完成集中式的路由分發;

通過將整個網際網路的可擴充套件 ip

網路原則壓縮到資料中心級別,calico

在每乙個計算節點利用 linuxkernel

實現了乙個高效的 vrouter

來負責資料**,而每個vrouter

通過 bgp

協議負責把自己上執行的 workload

的路由資訊向整個calico

網路內傳播,小規模部署可以直接互聯,大規模下可通過指定的bgproute reflector

來完成。這樣保證最終所有的workload

之間的資料流量都是通過 ip

包的方式完成互聯的。

節點組網可以直接利用資料中心的網路結構(支援l2

或者 l3

),不需要額外的nat

,隧道或者vxlanoverlay network。

如上圖所示,這樣保證這個方案的簡單可控,而且沒有封包解包,節約

cpu計算資源的同時,提高了整個網路的效能。

實驗測試

calico

網路效能非常接近物理機的效能。

此外,calico

基於iptables

還提供了豐富而靈活的網路

policy

,保證通過各個節點上的

acls

來提供workload

的多租戶隔離、安全組以及其他可達性限制等功能。

k8s calico 網路不通

環境描述 k8s calico coredns 部署容器 問題描述 虛擬機器掛起後,重新啟用連線,k8s 容器網路不通 ping 同宿主機 容器ip 成功 ping 跨宿主機 容器ip 失敗 ping 同宿主機 容器主機名 失敗 ping 跨宿主機 容器主機名 失敗 route n 檢視路由 路由缺...

K8s的網路共享儲存原理

pvcpv與pvc的生命週期 資源 注意kubernetes對於有狀態的容器應用或者對資料需要持久化的應用,不僅需要將容器內的目錄掛載到宿主機的目錄或者emptydir臨時儲存 卷,而且需要更加可靠的儲存來儲存應用產生的重要資料,以便容器應用在重建之後仍然可以使用之前的資料。定義 k8s支援的pv型...

K8s configMap原理介紹

給容器內應用程式傳遞引數的實現方式 1.將配置檔案直接打包到映象中,但這種方式不推薦使用,因為修改配置不夠靈活。2.通過定義pod清單時,指定自定義命令列引數,即設定 args 命令引數 這種也 可在啟動pod時,傳參來修改pod的應用程式的配置檔案.3.使用環境變數來給pod中應用傳參修改配置 但...