Kubernetes 網絡模型概述

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

爲了提供更靈活的
解決方式, Kubernetes 的網絡模型需要藉助於外部插件實現,它要求任何實現機制都必須滿
足以下需求。
口所有Pod 間均可不經NAT 機制而直接通信。
僅供|七商業用途式交流學習攸用
14 •!• Kubernetes i韭階實戰
口所有節點均可不經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 時予以動態配置。

 

 

本章介紹了Kubernetes 的歷史、功用、特性及其相關的核心概述和術語, 並簡單描述
了其架構及其各關鍵組件,以及集羣網絡中的常見通信方式, 具體如下。
口Kubernetes 集羣主要由Master 和Node 兩類節點組成。
口Master 主要包含API Server 、controller-manager 、Scheduler 和etcd 幾個組件,其中
API Server 是整個集羣的網關。
DNode 主要由kubelet 、kube-proxy 和容器引擎等組件構成, kubelet 是Kubernetes 集
羣的工作於節點之上的代理組件。
口完整的Kubemetes 集羣還需要部署有CoreDNS (或KubeDNS )、Prometheus (或HeapSter )、
Dashboard 和Ingress Controller 幾個附加組件。
口Kubernetes 的網絡中主要存在四種類型的通信:同- Pod 內的容器間通信、各Pod
間的通信、Pod 與Service 間的通信, 以及集羣外部的流量同Service 之間的通信。

 

完整參考: k8s進價實戰

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章