k8s calico網路原理以及多租戶實現設計
-
軟體定義網路SDN
基礎概念介紹
租戶(Tenant):在網路資源上完全隔離的一個使用者,在業務上可以代表一個對於網路有隔離和管理需求的部門。一個租戶可以對應多個網路。
網路(Network):在業務上可以代表一個部門下的一個專案組。一個網路只能掛在一個租戶下面,同時可以有多個子網。
子網(Subnet):在業務上可以代表一個部門下專案組的一個開發或測試環境。同一個network的subnet之間可以預設配置成隔離或者連通。
預設版本提供:tenant隔離,tenant下的network隔離,network下的subnet全通。(network下的subnet可以由使用者可選配置成隔離)
模組功能概述
軟體定義網路(software-definednetworking,SDN)的核心思想是採用控制和轉發相分離的策略,實現網路和業務的可程式設計,從而實現網路資源的動態管理。使用者可以通過程式動態構建各種特性的資料轉發網路,以達到不同網路對各種應用的承載需求。
雲環境下的網路已經變得非常複雜,特別是在多租戶場景裡,使用者隨時都可能需要建立、修改和刪除網路,網路的連通性和隔離性也不可能通過手工配置來保證了。為快速響應業務的需求,HarmonyCloud提供了軟體定義網路的解決方案,具有非常高的靈活性和自動化優勢。
主要功能:
租戶網路隔離
-
不同租戶之間的網路進行隔離,每個租戶只能訪問自己的網路資源,不可訪問其他租戶的網路資源。
-
解決了租戶與其他租戶服務間的網路隔離問題,保障了租戶對自身服務訪問的合法權益,禁止其他租戶的惡意訪問。
網路的安全性
-
諧雲網絡服務利用Linuxiptables、ACLs特性,實現訪問虛機的安全性。
網路的多粒度隔離控制
-
根據業務需求,通過policy提供網路的多粒度隔離控制。
可以在同一tenant下配置如下6種使用者自定義policy,tenant之間不可配置。
優先順序 |
入口物件 |
作用物件 |
備註 |
11 |
network1 |
network2 |
network2->network1 |
12 |
network1 |
network2-subnet1 |
network2-subnet1->network1 |
21 |
network1-subnet1 |
network2 |
network2->network1-subnet1 |
22 |
network1-subnet1 |
network2-subnet1 |
network2-subnet1->network1-subnet1 |
31 |
network1-subnet1(name:app) |
network2 |
network2->network1-subnet1(name:app) |
32 |
network1-subnet1(name:app) |
network2-subnet1 |
network2-subnet1->network1-subnet1(name:app) |
為Kubernetes提供網路服務
-
使用者建立Pod過程中,只需簡單配置便可以為Pod提供網路服務,而無需關心底層實現細節。
-
如網路服務工作流程圖所示,為Pod建立網路是一個非常複雜的過程,使用者一鍵建立網路的背後,後臺卻進行了一系列的操作。諧雲網絡服務首先要建立Network、Subnet等資源,在建立pod時候指定所需網路資源以及networkpolicy策略。
模組功能點實現介紹
HarmonyCloud軟體定義網路解決方案的目標是實現“網路即服務(Networkas a Service)”,在設計上遵循了基於SDN實現網路虛擬化的原則,以開源的calico網路解決方案為基礎進行定製優化。
Calico是一個純三層的資料中心網路方案,而且方便整合OpenStack這種 IaaS雲架構,能夠提供高效可控的VM、容器、裸機之間的通訊。
如圖, 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包的方式完成互聯的。
Calico節點組網可以直接利用資料中心的網路結構(支援L2或者 L3),不需要額外的NAT,隧道或者VXLANoverlay network。
如上圖所示,這樣保證這個方案的簡單可控,而且沒有封包解包,節約CPU計算資源的同時,提高了整個網路的效能。實驗測試calico網路效能非常接近物理機的效能。
此外,Calico基於iptables還提供了豐富而靈活的網路Policy,保證通過各個節點上的ACLs來提供Workload的多租戶隔離、安全組以及其他可達性限制等功能。
相關推薦
k8s calico網路原理以及多租戶實現設計
軟體定義網路SDN 基礎概念介紹 租戶(Tenant):在網路資源上完全隔離的一個使用者,在業務上可以代表一個對於網路有隔離和管理需求的部門。一個租戶可以對應多個網路。 網路(Netw
掃碼登入的原理以及jsp簡單實現
掃碼登入實現 簡介: 在一次專案的開發中,看到了一篇文章掃碼登入的原理,覺得好像可以做這個,於是乎就自己動手寫了這個簡單版本的掃碼登入,已及遇到的問題,在這裡和大家分享一下。 1.實現原理
深度學習(七)U-Net原理以及keras程式碼實現醫學影象眼球血管分割
原文作者:aircraft 原文連結:https://www.cnblogs.com/DOMLX/p/9780786.html 全卷積神經網路 醫學影象分割框架 醫學影象分割主要有兩種框架,一個是基於CNN的,另一個就是基於FCN的。這裡都是通過網路來進行語義分割。 那麼什麼是語義分割?可
k8s calico網路排錯2
解決了跨node的pod連通性,接下來面臨新問題,首先是nodeport只對pod所在node能夠訪問。 參考上面連結,執行sudo iptables -P FORWARD ACCEPT初步解決該問題,hadoop001的還是不行 報錯如下: Chain KUBE-
k8s calico網路排錯
本地三個節點搭k8s,結果前兩個節點的pod互通,第三個節點不能與前兩個的pod通訊。 檢視路由,發現第三個節點沒有建立通訊的路由。 hadoop002節點路由詳情,加粗為路由詳情。hadoop003無此路由。 [[email protected] b
資料庫連線池底層原理以及手寫實現
資料庫連線池的基本思想是:為資料庫連線建立一個“緩衝池”,預先在池中放入一定數量的資料庫連線管道,需要時,從池子中取出管道進行使用,操作完畢後,在將管道放入池子中,從而避免了頻繁的向資料庫申請資源,釋放資源帶來的效能損耗。 在如今的分散式系統當中,系統的QPS瓶頸往往就
[k8s]calico網路部-轉
看了下calico k8s 佈署全網文件還是比較少的,為了大家少踩坑,特擬寫此文,如有任何問題,歡迎各位留言交流 目前k8s 網路最快的第一就是Calico 第二種稍慢flannel ,根據自己的網路環境條件來定 目前經本人測試calico
linux網路程式設計:使用多程序實現socket同時收發資料
轉載:http://blog.csdn.net/li_wen01/article/details/52685844 前面已講過使用一個程序實現服務端和客戶端P2P通訊的例項,但是它只能同時處理一個客戶端的連線。如果要實現併發處理多個客戶端的連線並且實現P2P通訊,可以使
Coursera deeplearning.ai 深度學習筆記1-4-Deep Neural Networks-深度神經網路原理推導與程式碼實現
在掌握了淺層神經網路演算法後,對深度神經網路進行學習。 1. 原理推導 1.1 深度神經網路表示 定義:L表示神經網路總層數,上標[l]代表第l層網路,n[l]代表第l層的節點數,a[l]
蒙版原理以及Python簡單實現
第一次發部落格,就試試看的心態,不喜勿噴~蒙版可以將兩張毫不相關的圖片合成為一張圖,其實就是使用蒙版mask對兩張圖片的畫素做了加權平均處理的結果。 比如對於畫素點(x1,y1,v1), (x2,y2,v2)使用的蒙版上相應畫素點為(x3,y3,v3),其中x,
淘寶HSF服務的原理以及簡單的實現
淘寶HSF服務具體來說分三個應用:api介面,service服務,本地應用。 最基本的Api服務應該是十分乾淨的,不含方法,只有介面。它是要被打包(jar包的形式)到中央倉庫去的。 service服務是api介面的實現,它是要被打包成(最常
Activiti 多租戶實現全過程
歡迎使用Markdown編輯器寫部落格 本Markdown編輯器使用StackEdit修改而來,用它寫部落格,將會帶來全新的體驗哦: Markdown和擴充套件Markdown簡潔的語法 程式碼塊高亮 圖片連結和圖片上傳 LaTex數學公式 UML序列圖和
Kubernetes(k8s)底層網路原理刨析
目錄 1 典型的資料傳輸流程圖 2 3種ip說明 3 Docker0網橋和flannel網路方案 4 Service和DNS 4.1 service 4.2 DNS
calico網路原理、組網方式和使用
calico的好處是endpoints組成的網路是單純的三層網路,報文的流向完全通過路由規則控制,沒有overlay等額外開銷。 calico的endpoint可以漂移,並且實現了acl。 calico的缺點是路由的數目與容器數目相同,非常容易超過路由器、三層交換、甚至node的處理能力,從而限制了整
多態(upcast)減少分支判斷 以及 多態繼承設計、具體類型判斷。
ret ada ati 改變 over post () 子類 cto Influenced by 《java 八榮八恥》,翻了下《java編程思想》 印象中多態產生的條件:1.子類繼承父類 2.父類【指針】指向子類 3.父類引用調用重寫(@Override)方法 *
資料層的多租戶淺談(SAAS多租戶資料庫設計)
在上一篇“淺析多租戶在 Java 平臺和某些 PaaS 上的實現”中我們談到了應用層面的多租戶架構,涉及到 PaaS、JVM、OS 等,與之相應的是資料層也有多租戶的支援。 資料層的多租戶綜述 多租戶(Multi Tenancy/Tenant)是一種軟體架構,其定義是: 在一臺伺服器上執行單個應用例項,
c++ 網路程式設計(九)TCP/IP LINUX/windows下 多執行緒超詳細教程 以及 多執行緒實現服務端
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <process.h> #include <winsock2.h> #include <win
c++ 網路程式設計(九)TCP/IP LINUX/windows下 多執行緒超詳細教程 以及 多執行緒實現服務端
原文作者:aircraft 原文連結:https://www.cnblogs.com/DOMLX/p/9661012.html 先講Linux下(windows下在後面可以直接跳到後面看): 一.執行緒基本概念 前面我們講過多程序伺服器,但我們知道它開銷很大
Java多執行緒-----執行緒池的使用,原理以及舉例實現(三)(四):使用樣例及如何配置執行緒池大小
三.使用示例 前面我們討論了關於執行緒池的實現原理,這一節我們來看一下它的具體使用: public class Test { public static void main(String[] args) { ThreadPoolExe
開源網路庫boost.asio,libevent,mongoose學習記錄以及多執行緒模式的實現
目錄 IO操作: poll: 總結: 首先說明一下幾個基礎概念: IO操作: IO操作包括兩個部分: 等待資料準備好:對於一個套介面上的操作,這一步驟關係到資料從網路到達,並將其複製到核心的某個緩