日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Kubernetes網(wǎng)絡插件詳解-Calico篇-概述

Kubernetes網(wǎng)絡插件詳解 - Calico篇 - 概述

作者:巨子嘉 2022-07-27 16:23:36

云計算

云原生 Kubernetes容器網(wǎng)絡比較復雜,需要與底層基礎設施及上層業(yè)務來確定容器網(wǎng)絡方案,同時很多網(wǎng)絡插件又支持多種模式,需要大量的網(wǎng)絡的基礎知識支撐才能了解清楚。

專注于為中小企業(yè)提供網(wǎng)站設計制作、成都網(wǎng)站制作服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)通州免費做網(wǎng)站提供優(yōu)質(zhì)的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了近千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。

1、容器網(wǎng)絡及策略

Kubernetes本身并沒有自己實現(xiàn)容器網(wǎng)絡,而是借助CNI標準,通過插件化的方式來集成各種網(wǎng)絡插件,實現(xiàn)集群內(nèi)部網(wǎng)絡相互通信。任何人都可以編寫CNI插件,只要實現(xiàn)CNI標準中定義的核心接口操作(ADD,將容器添加到網(wǎng)絡;DEL,從網(wǎng)絡中刪除一個容器;CHECK,檢查容器的網(wǎng)絡是否符合預期等)。CNI插件通常聚焦在容器到容器的網(wǎng)絡通信,Kubernetes構(gòu)造的Services網(wǎng)絡服務仍然是由kube-proxy處理,通過主機的IPtables確定Service后端的Pod服務,通過CNI插件將網(wǎng)絡報文轉(zhuǎn)發(fā)到目標Pod,如下圖所示:

CNI的接口并不是指HTTP,gRPC這種接口,CNI接口是指對可執(zhí)行程序的調(diào)用(exec)可執(zhí)行程序,Kubernetes節(jié)點默認的CNI插件路徑為/opt/cni/bin。

CNI通過JSON格式的配置文件來描述網(wǎng)絡配置,當需要設置容器網(wǎng)絡時,由容器運行時負責執(zhí)行CNI插件,并通過CNI插件的標準輸入(stdin)來傳遞配置文件信息,通過標準輸出(stdout)接收插件的執(zhí)行結(jié)果。從網(wǎng)絡插件功能可以分為五類:

(一)Main插件,創(chuàng)建具體網(wǎng)絡設備(bridge:網(wǎng)橋設備,連接container和host;ipvlan:為容器增加ipvlan 網(wǎng)卡;loopback:IO設備;macvlan:為容器創(chuàng)建一個MAC地址;ptp:創(chuàng)建一對Veth Pair;vlan:分配一個vlan設備;host-device:將已存在的設備移入容器內(nèi))。

(二)IPAM插件:負責分配IP地址(dhcp:容器向DHCP服務器發(fā)起請求,給Pod發(fā)放或回收IP地址;host-local:使用預先配置的IP地址段來進行分配;static:為容器分配一個靜態(tài)IPv4/IPv6地址,主要用于debug)。

(三)META插件:其他功能的插件(tuning:通過sysctl調(diào)整網(wǎng)絡設備參數(shù);portmap:通過iptables配置端口映射;bandwidth:使用Token Bucket Filter來限流;sbr:為網(wǎng)卡設置source based routing;firewall:通過iptables給容器網(wǎng)絡的進出流量進行限制)。

(四)Windows插件:專門用于Windows平臺的CNI插件(win-bridge與win-overlay網(wǎng)絡插件)。

(五)第三方網(wǎng)絡插件:第三方開源的網(wǎng)絡插件眾多,每個組件都有各自的優(yōu)點及適應的場景,難以形成統(tǒng)一的標準組件,常用有Flannel、Calico、Cilium、OVN網(wǎng)絡插件。

大部分的CNI插件功能設計上遵守功能職責單一原則,比如Bridge插件負責網(wǎng)橋的相關配置,F(xiàn)irewall插件負責防火墻相關配置,Portmap插件負責端口映射相關配置。因此,當網(wǎng)絡設置比較復雜時,通常通過調(diào)用多個插件來完成。CNI通過鏈式調(diào)(NetworkConfigList)用多個插件,將多個插件組合起來按順序調(diào)用,比如前面文章提到的Flannel網(wǎng)絡插件CNI插件配置POD網(wǎng)絡時的鏈式調(diào)用。

Kubernetes底層是通過Linux的Cgroup與Namesapce來實現(xiàn)底層基礎資源隔離,每個命名空間(namespace)都有自己網(wǎng)絡堆棧,包括接口、路由表、套接字和 IPTABLE 規(guī)則等。一個接口只能屬于一個網(wǎng)絡命名空間,這樣多個容器就需要多個接口,一般情況是通過虛擬化技術(shù)來實現(xiàn)硬件資源共享,通過將虛擬化設備連接到真實的物理設備上,具體分為三種實現(xiàn):

(一)虛擬網(wǎng)橋(Virtual bridge):創(chuàng)建一個虛擬網(wǎng)卡對(veth pair),一端在容器內(nèi)一頭端宿主機的root namespace內(nèi),并且使用Linux bridge(網(wǎng)橋)或者OpenvSwitch(OVS)來連接兩個不同namespace內(nèi)的網(wǎng)卡對。這樣一來,容器內(nèi)發(fā)出的網(wǎng)絡數(shù)據(jù)包,可以通過網(wǎng)橋進入宿主機網(wǎng)絡棧,而發(fā)往容器的網(wǎng)絡數(shù)據(jù)包也可以經(jīng)過網(wǎng)橋進入容器。

(二)多路復用(Multiplexing):使用一個中間網(wǎng)絡設備,暴露多個虛擬網(wǎng)卡接口,容器網(wǎng)卡都可以接入這個中間設備,并通過mac地址/IP地址來區(qū)分packet應該轉(zhuǎn)發(fā)給具體的容器設備。

(三)硬件交換(Hardware switching):為每個Pod分配一個虛擬網(wǎng)卡,這樣一來Pod與Pod之間的連接關系就會變的非常清晰,因為近乎物理機之間的通信基礎。如今大多數(shù)網(wǎng)卡都支持SR-IOV功能,該功能將單一的物理網(wǎng)卡虛擬成多個VF接口,每個VF接口都有單獨的虛擬PCIe通道,這些虛擬的PCIe通道共用物理網(wǎng)卡的PCIe通道。

對于Kubernetes網(wǎng)絡,網(wǎng)絡策略也是非常重要的能力;網(wǎng)絡策略能力比較依賴CNI插件的具體實現(xiàn),比如Flannel插件,根本不執(zhí)行策略;但大多數(shù)插件都會強制執(zhí)行策略,為Pod的入口流量和Pod的出口流量設置策略,Kubernetes網(wǎng)絡策略是屬于命名空間范圍的。

2、Calico容器網(wǎng)絡插件

Calico是Tigera開源,基于Apache 2.0協(xié)議的網(wǎng)絡與網(wǎng)絡安全解決方案,適用于容器、虛擬機、以及物理機等場景。Calico支持包含Kubernetes、OpenShift以及OpenStack等主流平臺。在Kubernetes云原生容器網(wǎng)絡方面,Calico完全遵循CNI的標準,F(xiàn)lannel的簡單成為初始用戶的首選,Calico則是以性能及靈活性成為另一個不錯的選擇。當前Flannel與Calico兩大插件占據(jù)容器網(wǎng)絡插件90%以上的份額。相比Flannel插件,Calico的功能更為全面,不僅提供主機和Pod之間的網(wǎng)絡連接,還涉及網(wǎng)絡安全和管理。從Calico 3.x版本開始,Calico默認的模式從BGP調(diào)整為IPIP,一種更加高效的Overlay模式。Calico特點如下:

一、高效的可視化管理:Calico提供完善的可視化管理,包括原生Linux eBPF管理、標準Linux 網(wǎng)絡管理、以及Windows HNS管理。Calico通過將基礎網(wǎng)絡、網(wǎng)絡策略和IP地址等功能抽象統(tǒng)一,提供簡單易用且操作一致的管理平面。

二、網(wǎng)絡安全策略:Calico提供豐富的網(wǎng)絡策略模型,可以輕松的實現(xiàn)網(wǎng)絡流量治理,同時結(jié)合內(nèi)置的Wireguard加密功能,可以快速實現(xiàn)Pod間的數(shù)據(jù)傳輸。還有Calico策略引擎可以在主機網(wǎng)絡及服務網(wǎng)絡執(zhí)行相同的策略模型,實現(xiàn)基礎設施與上層服務的網(wǎng)絡數(shù)據(jù)風險隔離。

三、高性能及可擴展性:Calico采用前沿的eBPF技術(shù),以及深度調(diào)優(yōu)操作系統(tǒng)內(nèi)核網(wǎng)絡管道,以此來提高網(wǎng)絡性能。Calico支持網(wǎng)絡配置較多,大部分場景可以不使用Overlay,避免數(shù)據(jù)包封裝/解封的大開銷操作。同時Calico遵守云原生設計模式,底層都是采用標準的網(wǎng)絡協(xié)議,具備出色可擴展性。

四、大規(guī)模生產(chǎn)運行實踐:Calico有大規(guī)模生產(chǎn)環(huán)境運行實踐,包括SaaS提供商、金融服務公司和制造商;在公有云方面,包含Amazon EKS、Azure AKS、Google GKE 和 IBM IKS,都有集成開箱即用的Calico網(wǎng)絡安全能力。

3、Calico核心組件

Calico靈活的網(wǎng)絡模塊化架構(gòu),包括CNI網(wǎng)絡插件,CNI IPAM插件,網(wǎng)絡模式,網(wǎng)絡策略四個方面:

(一)CNI網(wǎng)絡插件:Calico CNI網(wǎng)絡插件通過一對虛擬以太網(wǎng)設備(vethpair),將Pod連接到主機網(wǎng)絡命名空間的三層路由上,避免了許多其他Kubernetes網(wǎng)絡解決方案中的二層網(wǎng)橋的性能開銷。

(二)CNI IPAM插件:Calico CNI IPAM插件從一個或多個可配置的IP地址范圍內(nèi)為Pod分配IP地址,并根據(jù)需要為每個節(jié)點動態(tài)分配小塊IP。與其他CNI IPAM插件相比,Calico CNI IPAM的IP地址空間使用效率更高。

(三)網(wǎng)絡模式:Calico支持的網(wǎng)絡模式分為Overlay與Non-overlay兩種:

Overlay模式,Calico提供VXLAN或IP-in-IP網(wǎng)絡模式,包括限制跨子網(wǎng)模式(cross-subnet)。

Non-overlay模式,Calico提供在L2網(wǎng)絡或L3網(wǎng)絡之上運行的Non-overlay網(wǎng)絡。

(四)網(wǎng)絡策略:Calico的網(wǎng)絡策略執(zhí)行引擎實現(xiàn)了Kubernetes網(wǎng)絡策略的全部功能,并且增加額外的擴展功能。

Calico最優(yōu)先的網(wǎng)絡設置是使用BGP與物理網(wǎng)絡對等的Non-overlay網(wǎng)絡模式,實現(xiàn)Pod IP可在集群外部路由。如果無法將BGP對等連接到物理網(wǎng)絡,但集群位于獨立的L2網(wǎng)絡中,也可以運行Non-overlay模式,只是在集群中的節(jié)點之間對等BGP,應用外部缺少Pod IP的路由,無法在集群外路由?;蛘咴O置為Overlay模式下的VXLAN或IP-in-IP,并使用跨子網(wǎng)Overlay模式來優(yōu)化L2子網(wǎng)內(nèi)的性能。

?上圖是一個完整Calico網(wǎng)絡及策略架構(gòu)圖,包含了必選與可選的所有組件,包含Calico API server、Felix、BIRD、confd、Dikastes、CNI plugin、Datastore plugin、IPAM plugin、kube-controllers、Typha、calicoctl:

Calico API server:支持通過kubectl管理Calico資源。

Felix:以守護進程的方式運行在集群的每個節(jié)點上,主要提供四個關鍵能力:接口管理(Interface management)、編程式路由(Route programming),編程式權(quán)限(ACL programming),狀態(tài)報告(State reporting)。

BIRD:從Felix獲取路由并分發(fā)給網(wǎng)絡上的BGP對端,用于主機間路由。與Felix一樣都是運行在集群的每個節(jié)點。主要提供兩個關鍵能力:路由分發(fā)(Route distribution)、路由映射配置(BGP route reflector configuration)

Confd:開源、輕量級的配置管理工具,存儲BGP配置和全局默認值,監(jiān)聽數(shù)據(jù)變化動態(tài)生成BIRD配置文件,會觸發(fā)BIRD重新加載配置信息。

CNI plugin:為 Kubernetes集群提供Calico網(wǎng)絡能力。

IPAM plugin:是Calico CNI插件之一,使用Calico的IP池資源,來控制IP地址分配給集群內(nèi)的Pod。

kube-controllers:Kubernetes的控制器,包含Policy controller、Namespace controller、Serviceaccount controller、Workloadendpoint controller、Node controller。

calicoctl創(chuàng)建、讀取、更新和刪除Calico對象的命令行界面。

Datastore plugin:通過減少每個節(jié)點對數(shù)據(jù)存儲的影響來增加規(guī)模,是Calico CNI插件之一。

Typha:通過減少每個節(jié)點對數(shù)據(jù)存儲的影響來擴大規(guī)模。在數(shù)據(jù)存儲和Felix實例之間作為守護進程運行。

Dikastes:增強Istio服務網(wǎng)格的網(wǎng)絡策略,作為Istio Envoy的sidecar代理方式運行。

4、總結(jié)

Kubernetes容器網(wǎng)絡比較復雜,需要與底層基礎設施及上層業(yè)務來確定容器網(wǎng)絡方案,同時很多網(wǎng)絡插件又支持多種模式,需要大量的網(wǎng)絡的基礎知識支撐才能了解清楚。選擇合適的CNI插件,需要綜合考慮底層網(wǎng)絡網(wǎng)絡拓撲,結(jié)合應用需要的網(wǎng)絡功能,以及網(wǎng)絡路由協(xié)議的需求。Calico是比較成熟的容器網(wǎng)絡插件,功能上比較豐富,性能上也在不斷優(yōu)化。所以將Calico網(wǎng)絡插件規(guī)劃成一系列文章,從網(wǎng)絡網(wǎng)絡基礎,Calico架構(gòu)原理,到Calico實戰(zhàn)操作總共八篇,抽絲剝繭,將Calico網(wǎng)絡插件做深入的理解,從而徹底掌握容器網(wǎng)絡相關知識。

本文轉(zhuǎn)載自微信公眾號「巨子嘉」,可以通過以下二維碼關注。轉(zhuǎn)載本文請聯(lián)系巨子嘉公眾號。


本文名稱:Kubernetes網(wǎng)絡插件詳解-Calico篇-概述
當前路徑:http://m.5511xx.com/article/ccsohed.html