1. 程式人生 > >OpenSource I 探索EKS的網路基礎:amazon-vpc-cni-k8s + Calico

OpenSource I 探索EKS的網路基礎:amazon-vpc-cni-k8s + Calico

Amazon 在 AWS re:invent 上宣佈推出 Elastic Container Service for Kubernetes (EKS) 並詳細介紹了容器網路將如何在此令人振奮的新平臺上工作 — 以及得到保護。特別是 EKS 利用了新推出的 AWS Container Network Interface (amazon-vpc-cni-k8s) 外掛以及 Project Calico 來執行網路策略。在本博文中,我們將詳細介紹這種整合的工作原理,還將說明目前如何在 EC2 中執行的 Kubernetes 群集中試用。它好比您在等待訪問 EKS 本身時的一個“先睹為快”,或者您在自己基於 AWS 的 Kubernetes 中部署時可能考慮的因素 — 但請注意 amazon-vpc-cni-k8 仍然是官方的 alpha 版釋出,不能用於生產工作負載。

VPC 與容器

Virtual Private Cloud (VPC) 網路的概念已經被 AWS 使用者廣為接受,但最初它是基於例項將擁有單個 IP 地址的假設建立的。因此,AWS 中部署的大多數容器環境將使用疊加 — 特別使用 Calico 來利用 EC2 的第 2 層功能,以避免單個可用區 (AZ) 內的疊加。但即使是 Calico 也使用疊加來遍歷可用區。Calico 的聯網方法雖然在 AWS 中非常流行,但它不能為容器賦予“真正的 IP”,即讓相關 VPC 看起來與主機例項 IP 一樣的 IP 地址。更好的解決方案將是從相關 VPC 為它分配一個 IP 地址,讓相關 Amazon 聯網層負責路由。這就是 AWS 團隊通過

amazon-vpc-cni-k8s 外掛實現的功能。它利用 EC2 的能力為主機例項預置多重彈性網路介面 (ENI),每個介面都有多個二級 IP 地址,從而獲得來自 VPC 池的多個 IP 地址。然後,它將這些 IP 地址分配給主機上的 Pod,將 ENI 連線到 Pod 上建立的虛擬乙太網埠 (veth),然後將剩下的工作交給 Linux 核心。

有關 veth 的策略

現在您也許會自問:如果 amazon-vpc.cni-k8s 外掛負責分配 IP 地址和容器聯網,Calico 如何才能啟用網路策略?它其實非常簡單:因為 Calico 採用模組化設計,它的聯網、IPAM 和策略功能都可以通過相關設定獨立部署。對於 EKS,amazon-vpc-cni-k8s 外掛作為 Kubernetes 的 CNI 外掛配置,但我們還會在每個節點上將“calico-node”代理作為 Kubernetes daemonset 部署。將 amazon-vpc.cni-k8s 外掛的 veth 命名規則與 Calico 統一,每個主機上的 calico-node 都將知道哪個 veth 屬於哪個容器,因此可以 (使用 iptable/ipset) 照常建立每個容器在 Linux 核心中的介面的策略規則。由於 amazon-vpc-cni-k8s 外掛以正確的方式接入 veth,我們知道所有來自 Pod 的流量都將執行這些規則。實際上您需要知道的是:作為 CNI 外掛,amazon-vpc-cni-k8s 會執行簡單宣告以將 Calico 部署為 daemonset,然後就

萬事大吉

將理論應用到您自己的 EC2 控制檯

讀到這裡,您也許不禁想要嘗試一下。當然,最終這將成為適用於所有 EKS 使用者的標準。雖然它目前還屬於功能有限的預覽版,但您可以利用在 EC2 上的正常 Kubernetes 部署來試用:github.com/aws-samples/aws-kube-cni

適用於 AWS Calico 聯網何去何從?

amazon-vpc-cni-k8s 外掛的優點非常明顯:您在 VPC 中獲得真實的 IP 地址,效能與 EC2 主機聯網相同,可用區與 VPC 之間的路由無需額外的疊加。那麼您是否會希望在 AWS 中使用 Calico 的聯網功能?可能有一些原因會讓您希望繼續使用 Calico 而不是 amazon-vpc-cni-k8s 外掛:

  • 使用 amazon-vpc-cni-k8s 外掛,單個主機例項 (Kubernetes 節點) 的 Pod 總數以 ENI 的數量乘以每個 ENI 的二級 IP 地址數量為極限 –根據例項的大小不同會有差異 (參見此表)。對於較小的例項,這可能極低 — 例如,對於 c1.medium 例項,您只能啟動 10 個 Pod。而 Calico 對每個節點的 Pod 數量是沒有限制的。
  • amazon-vpc-cni-k8s 外掛會在日初為給定的節點分配最大數量的 IP 地址,這可能會降低地址利用的效率。而 Calico 允許整個 IP 地址池在所有節點之間使用。

我們的建議是:如果部署沒有應阻斷,您應當使用 amazon-vpc-cni-k8s 外掛,這是適用於 AWS 的最簡單、最佳效能的原生聯網解決方案 — 當然,這也是 EKS 的預設配置。不論您選擇哪種聯網方法,您都可以放心享受 Calico 提供的行業標準容器網路安全性。

本文的另一位作者是 Tigera 的 Andy Randall!有關他的資訊請關注 @andrew_randall

相關推薦

OpenSource I 探索EKS網路基礎:amazon-vpc-cni-k8s + Calico

Amazon 在 AWS re:invent 上宣佈推出 Elastic Container Service for Kubernetes (EKS) 並詳細介紹了容器網路將如何在此令人振奮的新平臺上工作 — 以及得到保護。特別是 EKS 利用了新推出的 AWS Container Netw

Exploring the Networking Foundation for EKS: amazon-vpc-cni-k8s + Calico

At AWS re:invent, Amazon announced Elastic Container Service for Kubernetes (EKS), and revealed details of how container networking would

Amazon VPC CNI Plugin Version 1.1 Now Available

The Amazon VPC Container Networking Interface (CNI) plugin allows Kubernetes pods to receive native AWS VPC IP addresses. Because the CNI plugin i

Web效能探索之旅-1.無線網路基礎

一、無所不在的連線 針對不通的使用場景,無線網路技術有很多種。 鑑於無線網路技術如此多樣,籠統地概括所有無線網路的效能優化手段是不可能的。好在大多數無線技術的原理都是相通的,衡量效能的指標和約束條件也具有普遍實用性。只要把影響無線效能的基本原理搞清楚,那其他問題自然也就迎刃而解了。 二、無線網路的效能基

計算機網路基礎 - 一些基本概念與網絡結構

logs 網路 兩個 wdm comment quest 利用 gin 規範 1. 基本概念 計算機網絡 = 通信技術+計算機技術,是兩項技術緊密結合的產物。 通信系統的基礎模型: 計算機網絡,是指將地理位置不同、具有獨立功能的多臺計算機及其外部設備,通過通信線路連接,在

網路基礎之命令操作

exce width have emp handle 依據 spa pat syn Linux網絡配置(1) 在Linux系統中,網絡功能的實現被分成兩部分存放; 1.存放於內核空間中的協議棧; 包括:物理層、數據鏈路層、網絡層以及

TCP/IP 網路基礎

net 其他 規則 系統 資源共享 開放 特殊 系統安全 miss 一、引子 ????????TCP/IP是“Transmission Control Protocol/Internet Protocol”的簡寫,翻譯成中文為傳輸控制協議/互聯網網絡協議。TCP/IP是一種

網路基礎(OSI,TCP/IP,DNS,DHCP,閘道器)

OSI 七層模型   開放系統互聯模型      資料在網路中的傳輸過程(七層假想)   其中,應用層更接近使用者,資料傳遞是在物理層,中間是邏輯假想,上三層為使用者提供服務,下四層給傳輸資料用   比如,你想給[email protected]傳送一封郵件,應用層開啟瀏覽器,

軟體開發架構、網路基礎知識、osi七層模型

一、軟體開發的架構 涉及到兩個程式之間通訊的應用大致可以分為兩種: 第一種是應用類:qq、微信、網盤、優酷這一類是屬於需要安裝的桌面應用 第二種是web類:比如百度、知乎、部落格園等使用瀏覽器訪問就可以直接使用的應用 這些應用的本質其實都是兩個程式之間的通訊。而這兩個分類又對應了兩個軟體開發的架構

《深信服醒獅計劃網路基礎》學習筆記

第一部分《網路基礎》 一、IP 1、IP資料報 1)版本號:佔用4位二進位制數,表示該IP資料報使用的IP協議版本。目前Internet中使用的主要是TCP/IP協議族中版本號為4的IP協議。 2)頭長度:佔用4位二進位制位,此域指出整個報頭的長度(包括選項),該長度是以

圖解HTTP之——網路基礎

1、網路基礎TCP/IP       為了理解HTTP,我們應該先了解一下TCP/IP協議族。       通常使用的網路(包括網際網路)是在TCP/IP協議族的基礎上運作的,而HTTP屬於它內部的一個子集。 1.1、TCP/I

Python3 與 C# 網路程式設計之~ 網路基礎

最新版本檢視:https://www.cnblogs.com/dotnetcrazy/p/9919202.html 入門篇 官方文件:https://docs.python.org/3/library/ipc.html(程序間通訊和網路) 例項程式碼:https://github.com/lotapp/

Linux——網路配置(網路基礎知識,dhcp配置,路由器)

一、網路基礎知識 IPv4的定義   IPv4,是網際網路協議(Internet Protocol,IP)的第四版,也是第一個被廣泛使用,構成現今網際網路技術的基礎的協議   目前的全球因特網所採用的協議族是TCP/IP協議族。IP是TCP/IP協議族中網路層的協議,是TCP

Python(網路基礎)

day33 參考:http://www.cnblogs.com/linhaifeng/articles/5937962.html IP協議: 規定網路地址的協議叫ip協議,它定義的地址稱之為ip地址,廣泛採用的v4版本即ipv4,它規定網路地址由32位2進製表示 範圍0.0.0.0-255.2

s16 計算機網路基礎

交換機裝置說明 1)交換機裝置說明 交換機概念:解決多臺主機在一個網路裡面通訊的需求 主機身份標識資訊:稱為叫做mac地址 交換機通訊的網路範圍:稱為叫做一個區域網 交換機傳輸資料問題: 01.會有廣播風暴產生:會讓主機接收

2018年秋招運維崗常見計算機網路基礎知識點總結

靜態變數和非靜態變數的區別: 靜態變數被所有的物件所共享,在記憶體中只有一個副本,當且僅當類在初次載入會被初始化。 非靜態常量是物件所擁有的,在建立物件的時候被初始化存在多個副本,static在不同例項中地址一樣,存在全域性區。 殭屍程序和孤兒程序: 殭屍程序:一個子程序在其父

計算機網路基礎知識面試常考點

1、OSI,TCP/IP,五層協議的體系結構,以及各層協議   OSI分層 (7層):物理層、資料鏈路層、網路層、傳輸層、會話層、表示層、應用層。 TCP/IP分層(4層):網路介面層、 網際層、運輸層、 應用層。 五層協議     (5層):物理

網路基礎學習日誌(一)

人類不可能將所有的記憶都塞入可以長期記憶的海馬體,大多數的記憶好比記憶體條裡的資料,也許什麼時候說沒就沒了。我想如果將每日所學記錄下來,之後再再來看看,說不定能過更快的回憶起來知識。這是我的寫下該部落格目的。   通過這兩天的學習,我瞭解了計算機網路基礎。今天的實驗是將如下的拓撲結構實現全網互通

卷積神經網路基礎概念

1,垂直邊緣檢測過濾器 1    0    -1 1    0    -1 1    0    -1   2,水平邊緣檢測過濾器 1 

網路基礎筆記_網路傳輸層協議(TCP/UDP)知識點

  網路層負責把分組傳送到目的主機,但是真正通訊的並不是主機而是主機中的程序。傳輸層提供了程序間的邏輯通訊,傳輸層向高層使用者遮蔽了下面網路層的核心細節,使應用程式看起來像是在兩個傳輸層實體之間有一條端到端的邏輯通訊通道。 一.傳輸層中的兩種協議UDP / TCP