k8s的设计架构
Kubernetes主要由以下幾個核心組件組成:
1、etcd是一個分布式鍵值對存儲系統,保存集群所有的網絡配置和對象的狀態信息,保存了整個集群的狀態;
2、apiserver提供了資源操作的唯一入口,無論是集群內部還是外部的組件都必須通過APIServer來訪問數據,實現解耦合,并提供認證、授權、訪問控制、API注冊和發現等機制;
3、controller manager是集群內部的管理控制中心,包括集群內的Node、Pod副本數量、服務端點(Endpoint)、命名空間(NameSpace)、服務賬號(ServiceAccount)、資源定額(ResourceQuota)等的管理,并當node以外宕機時執行自動修復流程,確保集群處于預期的工作狀態。
4、scheduler負責對資源進行調度,分配某個pod到某個合適的節點上,并將綁定信息寫入etcd,調度策略主要分為全局調度與運行時調度2種;
5、Container runtime負責鏡像管理以及Pod和容器的真正運行(CRI);
6、kubelet負責維護容器的生命周期,同時也負責Volume(CVI)和網絡(CNI)的管理,主要完成以下使命:?
監視分配給該Node節點的pods、掛載pod所需要的volumes 、下載pod的secret、通過docker/rkt來運行pod中的容器、周期的執行pod中為容器定義的liveness探針、上報pod的狀態給系統的其他組件、上報Node的狀態(資源使用情況);
7、kube-proxy負責為Service提供cluster內部的服務發現和負載均衡。在k8s中,提供相同服務的一組pod可以抽象成一個service,由于Pod存在生命周期,有銷毀,有重建,無法提供一個固定的訪問接口(ip)給客戶端,就通過service提供的統一入口對外提供服務,每個service都有一個虛擬IP地址(VIP)和端口號供客戶端訪問。?
kube-proxy存在于各個node節點上,主要用于Service功能的實現,具體來說,將集群外的主機通過NodePort等方式對Service的訪問轉發到后端的多個Pod實例上,為pod上的服務提供訪問的代理。?(kube-proxy默認使用的是iptables模式,通過node節點上的iptables映射規則來實現service的負載均衡,但是隨著service數量的增大,iptables模式由于線性查找匹配、全量更新等特點,其性能會顯著下降。從k8s的1.8版本開始,kube-proxy引入了IPVS模式,IPVS模式與iptables同樣基于Netfilter,但是采用的hash表,因此當service數量達到一定規模時,hash查表的速度優勢就會顯現出來,從而提高service的服務性能。);
master包含apiserver、scheduler、controller manager、etcd
node包括kubelet、kube-proxy
總結
- 上一篇: 律师坚称技术无罪:“钉钉打卡神器”开发者
- 下一篇: 阿里神器Arthas 3.1.2版本发布