Kubernetes集群架构与组件
Kubernetes集群架构图:
简化版架构图:
-
kube-apiserver:集群的统一入口,各组件协调者,以RESTful API提供接口服务,所有对象资源的增删改查和监听都交给aipserver处理后在提交给etcd存储。
-
kube-controller-manager:作为集群内部的管理控制中心,负责集群内的Node、Pod副本、服务端点(Endpoint)、命名空间(Namespace)、服务账号(ServiceAccount)、资源定额(ResourceQuota)的管理,当某个Node意外宕机时,Controller Manager会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态。
-
kube-scheduler:负责k8s集群中pod的调度的 , scheduler通过与apiserver交互监听到创建Pod副本的信息后,它会检索所有符合该Pod要求的工作节点列表,开始执行Pod调度逻辑。调度成功后将Pod绑定到目标节点上,相当于“调度室”。
-
etcd:分布式键值存储系统,用于保存集群状态数据,比如:Pod、Service等对象信息。
-
kubectl:管理k8s的命令行工具,可以操作k8s中的资源对象,如增删改查等
-
Cordns:CoreDNS 其实就是一个 DNS 服务,而 DNS 作为一种常见的服务发现手段,很多开源项目以及工程师都会使用 CoreDNS 为集群提供服务发现的功能,Kubernetes 就在集群中使用 CoreDNS 解决服务发现的问题。
-
Calico: 是一套开源的网络和网络安全方案,用于容器、虚拟机、宿主机之前的网络连接,可以用在kubernetes、OpenShift、DockerEE、OpenStrack等PaaS或IaaS平台上。
-
kubelet:kubelet是Master'在Node上的Agent,管理本机运行容器的生命周期,比如创建容器、Pod挂载数据卷、获取容器和节点状态等工作,kubelet将每个Pod转换成一组容器。
-
kube-proxy:在Node节点上实现Pod网络代理,维护网络规则和四层负载均衡工作。
-
Docker:容器运行时,负责启动容器的,在k8s1.20版本之后建议废弃docker,使用container作为容器运行