kubernetes-組件介紹

master節點組件

kubernetes-組件介紹

 kube-apiserver  
 用於暴露kubernetes  API,不管是kubectl 還是HTTP 調用來操作kubernets 集羣各種資源,都是通過kube-apiserver 提供的接口進行操作的,Node 節點與Master之間的通信也是主要依賴於kube-apiserver,例如pod調度: kube-scheduler 將調度結果寫入etcd,kubelet 監聽etcd 獲取到調度任務。

 ETCD 
 一款用於共享配置和服務發現的高效KV存儲系統,具有分佈式、強一致性等特點,在kubernetes 環境中主要用於存儲所有需要持久化的數據

 kube-controller-manager 
 管理負責整個kubernetes的管理工作,保障集羣中各種資源處於期望狀態,當監控到某個資源狀態不正常時,管理控制器會觸發對應的調度操作,主要由以下幾個部分組成: 
 節點控制器(Node Controller)
 副本控制器(Replication  Controller)
 端點控制器(Endpoints Controller)
 命名空間控制器(Namespace Controller)
 身份認證控制器(Serviceaccounts  Controller)

 kube-scheduler 
 調度器,接收來自於管理控制器(kube-controller-manager)觸發的調度操作請求,然後根據請求規格、調度約束、整體資源情況等因素進行調度計算,最後將任務寫到etcd,目標節點的kubelet 組件監聽到由其負責的資源創建工作,然後執行具體調度任務。 

 DNS

 能夠爲kubernetes services 提供DNS記錄

Node節點組件

kubernetes-組件介紹

 Node節點組件是指運行在Node節點上,負責具體POD 運行時環境的組件

 kubelet 
 kubelet是node的 agent,當scheduler 確定在某個Node上運行pod後,會將pod 的具體配置信息(image、volume 等)發送給該節點的kubelet,kubelet 根據這些信息創建和運行容器,並向master 報告運行狀態。 

 kube-proxy 
 service 在邏輯上代表了後端多個pod,外界通過service 訪問pod。service 接收到的請求是如何轉發到pod的,這個就是kube-proxy 要完成的工作,
 每個node 都會運行kube-proxy服務,它負責將訪問service的TCP/UDP 數據流轉發到後端的容器,如果有多個副本,kube-proxy 會實現負載均衡,

flannel原理

kubernetes-組件介紹

 數據從源容器發出後,經由所在主機的docker0 虛擬機網卡轉發到flannel0 虛擬機網卡,這是個p2p的虛擬網卡,(flannel通過etcd 服務維護一張節點間的路由表)

 源主機的flannel 服務將原本的數據內容UDP 封裝後根據自己的路由表投遞給目的節點的flannel 服務,數據到達目的的flannel0 虛擬網卡,然後轉發到目的主機的docker0 虛擬機網卡

 最後容器通信一下的docker0 的路由到達目標容器,這樣整個數據包的傳遞就完成了

calico 原理

 calico 包括如下重要組件: felix, etcd, BGP client, BGP Route Reflector 

 felix: 主要負責路由配置以及ACLS規則的配置以及下發,它存儲在每個node 節點上
 etcd: 分佈式鍵值存儲,主要負責網絡元數據一致性,確保calico 網絡狀態的準確性 

 BGPClient(BIRD): 主要負責把felix 寫入kernel的路由信息分發到當前calico 網絡,確保workload 間通信的有效性

 BGPRouter Reflector(BIRD): 大規模部署時候使用,摒棄所有節點互聯的mesh 模式,通過一個或者多個BGPRouter  Reflector 來完成集中式的路由分發;

  calico 利用linux 內核本地的理由和iptables防火牆功能.來自於單個容器,虛擬機和主機的所有流量在路由到其目標之前會遍歷這些內核中的規則,

  key/value存儲: 保存calico 的策略和網絡配置狀態

  calico/node:  每個主機上運行,從鍵/值存儲中讀取相關的策略和網絡配置信息,並在linux 內核中實現
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章