kubernetes架构有管理节点和工作节点以及一个键值存储系统组成。
一、管理节点的主要组件
管理节点是kubernetes集群的控制中心,负责监控整个集群的状态、资源调度和响应集群事件等。
- kube-apiserver:提供kubernetes api服务,负责处理外部和内部组件的请求,并将这些操作存储到etcd中。
- etcd:一个分布式键值存储系统,用于存储kubernetes集群的数据,etcd是由coreos开源的,它并不属于kubernetes集群本身,因此etcd可以独立于集群部署。
- kube-controller-manager:负责管理多个控制器的程序,这些控制器包括但不限于以下控制器:
- node controller(节点控制器):负责监控节点状态,并在节点出现故障时进行响应。
- replication controller(副本控制器) :负责确保在集群中运行特定数量的pod副本。
- job controller(任务控制器):负责监控job对象,并生成相应的pod来执行任务。
- endpoint controller(端点控制器):负责管理与service相应的endpoint对象,确保endpoint关联正确的pod ip地址。
- kube-scheduler:根据预定的算法,将来指定节点的pod分配到合适的节点上。
二、工作节点的主要组件
工作节点是kubernetes集群的工作节点,它提供运行容器所需的资源和环境。
- kubelet:运行在每个节点上,负责管理pod和容器的生命周期,如容器启动、挂载数据卷、获取容器状态以及向管理节点汇报等。
- kube-proxy:也是运行在每个节点上,负责实现集群内部的网络代理和负载均衡器功能。
- container-runtime:实际运行和管理容器的服务。