master:K8S集群主节点,负责调度服务分发和集群管理
node:K8S集群工作节点,真正干活的
pod:k8s集群最进本的操作单元,可包含多个容器,一个pod里面的容器在同一个网络中
etcd:可信赖的键值对存储数据库,并持久化到磁盘上,API Server提供了操作etcd的封装接口API
echeduler:调度器,负责Pod在集群节点中的调度分配
api server:提供了资源对象的唯一操作入口,其他所有组件都必须通过它提供的API来操作资源数据
Controller Manager:集群内部的管理控制中心,其主要目的是实现Kubernetes集群的故障检测和恢复的自动化工作,比如根据RC的定义完成Pod的复制或移除,以确保Pod实例数符合RC副本的定义;根据Service与Pod的管理关系,完成服务的Endpoints对象的创建和更新;其他诸如Node的发现、管理和状态监控、死亡容器所占磁盘空间及本地缓存的镜像文件的清理等工作也是由Controller Manager完成的
kubelet:负责本Node节点上的Pod的创建、修改、监控、删除等全生命周期管理,同时Kubelet定时“上报”本Node的状态信息到API Server里
Proxy:负责写入规则至IPTABLES、IPVS实现服务映射访问,实现了Service的代理与软件模式的负载均衡器
coredns:可以为集群中的SVC创建一个域名IP的对应关系解析(A记录)
igress:官方只能实现四层代理,igress可以实现七层代理
控制器:
deployment:适合无状态的服务部署
StatefullSet:适合有状态的服务部署
DaemonSet:一次部署,所有的node节点都会部署,例如一些典型的应用场景:
- 运行集群存储 daemon,例如在每个Node上运行 glusterd、ceph
- 在每个Node上运行日志收集 daemon,例如 fluentd、 logstash
- 在每个Node上运行监控 daemon,例如 Prometheus Node Exporter
Job:一次性的执行任务
Cronjob:周期性的执行任务