雲計算:Kubernetes網絡模型

雲計算的核心是虛擬化技術,網絡虛擬化技術又是其最重要的組成部分,用於在物理

網絡上虛擬多個相互隔離的虛擬網絡,實現網絡資源切片,提高網絡資源利用率,實現彈性

化網絡。Kubernetes 作為容器雲技術戰中的容器編排組件,必然需要在多租戶(名稱空間)

的基礎上實現彈性網絡管理,這也是“基礎設施即代碼”的要求之一。

雲計算:Kubernetes網絡模型

網絡模型概述

Kubernetes 的網絡中主要存在四種類型的通信: 同- Pod 內的容器間通信、各Pod彼此之間的通信、Pod 與Service 間的通信以及集群外部的流量同Service 之間的通信。

Kub ernetes 為Pod 和Service 資源對象分別使用了各自的專用網絡, Pod 網絡由Kubernetes的網絡插件配置實現,而Service 的網絡則由Kubernetes 集群予以指定。為了提供更靈活的解決方式, Kubernetes 的網絡模型需要藉助於外部插件實現,它要求任何實現機制都必須滿足以下需求。

  • 所有Pod 間均可不經NAT 機制而直接通信。
  • 所有節點均可不經NAT 機制而直接與所有容器通信。
  • 容器自己使用的IP 也是其他容器或節點直接看到的地址。換句話講,所有Pod 對象都位於同一平面網絡中,而且可以使用Pod 自身的地址直接通信。

Kubemetes 使用的網絡插件必須能為Pod 提供滿足以上要求的網絡,它需要為每個Pod

配置至少一個特定的地址,即Pod IP 。Pod IP 地址實際存在於某個網卡(可以是虛擬設備)

上,而Service 的地址卻是一個虛擬IP 地址,沒有任何網絡接口配置此地址,它由kubeproxy

藉助iptables 規則或ipvs 規則重新定向到本地端口,再將其調度至後端Pod 對象。

Service 的IP 地址是集群提供服務的接口,也稱為Cluster IP 。

Pod 網絡及其IP 由Kubernetes 的網絡插件負責配置和管理,具體使用的網絡地址可在

管理配置網絡插件時指定,如10.244.0.0/16 網絡。而Cluster 網絡和IP 則是由Kubernetes

集群負責配置和管理,如10.96.0.0112 網絡。

總結起來, Kubernetes 集群至少應該包含三個網絡,如圖1 - 13 中的網絡環境所示。一個

是各主機( Mast町、Node 和etcd 等)自身所屬的網絡,其地址配置於主機的網絡接口,用於

各主機之間的通信,例如, Master 與各Node 之間的通信。此地址配置於Kubernetes 集群構

建之前,它並不能由Kubernetes 管理,管理員需要於集群構建之前自行確定其地址配置及管

理方式。第二個是Kubernetes 集群上專用於Pod 資源對象的網絡,它是一個虛擬網絡,用於

為各Pod 對象設定IP 地址等網絡參數,其地址配置於Pod 中容器的網絡接口之上。Pod 網絡

需要藉助kubenet 插件或CNI 插件實現,該插件可獨立部署於Kubernetes 集群之外,亦可託管於Kubernetes 之上,它需要在構建Kubernetes 集群時由管理員進行定義,而後在創建Pod

對象時由其自動完成各網絡參數的動態配置。第三個是專用於Service 資源對象的網絡,它

也是一個虛擬網絡,用於為Kubernetes 集群之中的S巳rvice 配置IP 地址,但此地址並不配

置於任何主機或容器的網絡接口之上,而是通過Node 之上的kube”proxy 配置為iptables 或

ipvs 規則,從而將發往此地址的所有流量調度至其後端的各Pod 對象之上。Service 網絡在

Kubernetes 集群創建時予以指定,而各Service 的地址則在用戶創建Service 時予以動態配置。


分享到:


相關文章: