1)kubernetes api server : 提供kubernetes各類資源對象(如pod, rc, service等)的增刪改查以及watch丶list等http rest接口,
2)kubernetes controller manager: 通過api server提供的rest接口實時監控集群中特定資源的狀態變化, 確保集群始終處於預期的工作狀態
1.Replication controller: 確保在任何時候集群中某個RC關聯的pod副本數量都保持預設值, 注意前提條件是RestartPolicy=Always; pod的擴容縮容,滾動更新
2.Node controller: 通過api server實時獲取node的相關信息, 實現管理和監控集群中各個NODE的相關控制功能
3.ResourceQuota controller: 確保指定對象在任何時候都不會超量占用系統物理資源,對容器丶pod丶namespace級別, 分別可以限制資源配額,
kubernetes的配額管理是通過admission control准入控制來控制的, 提供兩種方式實現配額約束, 分別是limitranger和resourcequota, limitranger作用域pod和container, ResourceQuota作用於namespace里的各類資源
4.Namespace controller: 定時通過api server讀取namespace信息, 實現對namespace里的資源管理和控制
5.Service controller 和Endpoints controller
Endpoints 表示一個service對應所有pod副本的訪問地址; 負責監控維護service和對應的pod副本的變化,
kube-proxy 需要獲取每個service的endpoints, 實現services的負載均衡
3)kubernetes scheduler: 將待調度的pod按照特定的算法和調度策略綁定到集群中某個合適的node上,並將綁定信息寫入到etcd中,
4)kubernetes kubelet
每個node節點都會安裝一個kubelet進程, 用於處理master下發到本節點的任務(通過api 監聽etcd資源), 管理pod(容器健康檢查, 通過livenessprobe探針和readinessProbe探針),會向api server注冊節點信息, 定時向master匯報節點資源的使用情況, 通過cadvisor(后面采用metric server)監控容器和節點資源
1.metrics server 提供核心指標, 包括node和pod的cpu和內存使用數據
2.custom metrics 自定義指標由prometheus采集和存儲
5)kubernetes kube-proxy: 實現service功能, 通過iptables的nat轉換規則實現
1. kubernetes1.2版本開始,將iptables作為kube-proxy的默認模式, 通過api server的watch接口實時跟蹤service和endpoint的變更信息, 並更新對應的iptables規則, client的請求流量則通過iptables的NAT機制直接路由到目標pod
2. iptables缺陷: service和pod數量過多, 對導致iptables規則過多, 導致性能下降
3. kubernetes1.8版本引入ipvs, ipvs無法完全取代iptables, 在service工作在nodeport模式下