另外一個也是非常知名的 CNI Plugin 就是 Calico, 相對於 Flannel 來說, Calico 提供的功能則相對的多,而這些功能與特色都能夠對應不同的網路環境。
Calico 專案的開發相對於 Flannel 來得更加活躍且也不停的有各種功能出現,畢竟相對於 Flannel 單純想提供Pod x Pod 連線功能來說, Calico 想提供的則是更多的功能,自然而然的發展就會比較廣且活躍。
安裝方便基本上可以很簡單,如同 Flannel 一樣透過一個 Yaml 就可以安裝基本的 CNI 資源到 Kubernetes 叢集中。此外也可以很複雜到需要安裝非常多的東西來提供更進階的功能。 這部分取決於你想要採用的功能。
舉例來說,如何建立存放 Calico 各節點溝通的資料就有兩種
Calico 支援的平台非常多種,本身支援 CNI 介面使得支援 CNI 的平台都可以使用外,其也可以透過 Neutron Plugin 的方式安裝於 OpenStack 的環境中,算是我目前看到支援度非常豐富的網路功能解決方案
在其功能方面,基本上主要以 kubernetes 該平台能夠提供的功能來探討,可以分成兩個面向來看,分別是 Policy 以及 Network。
Network Policy
Application Layer Policy
Calico為每個容器或者虛擬機分配一個獨立的IP地址,然後在每台物理主機上定義包含這些IP地址的iptables規則,實現了防火牆功能。Calico在每個物理節點上跑一個高效的vRouter,由它對外廣播本機各容器的路由信息。它基於BGP協議,不僅適用於小規模部署,在route reflector的幫助下,更能應用於大型DataCenter。包的轉髮用是的Linux內核的轉發功能,高效而簡單。只要編排框架支持為每個服務分配一個IP地址,就可以集成使用Calico 。
could not retrieve mirrorlost http://mirror/centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was 14:curl#7 - “Failed to connect to 2001:1b48:203::4:10: Network is unreachable”