master组件:
1、apiserver:唯一管理入口,各组件的协调者,所有对象资源的增删改查和监听操作都交给apipserver处理后再提交给etcd存储。
2、controller-manager:控制器管理器,处理集群中常规后台任务,一个资源对应一个控制器,而controller-manager就是负责管理这些控制器的。
3、scheduler:核心功能就是监听apiserver来获取podaec.nodename为空的pod,然后为这样的pod创建一个binding指示pod应该调度到哪个节点上,掌管pods到nodes的调度,如下:
1)创建pod
2)scheduler发现新创建的pod没有分配node
3)schedule为pod分配node
node组件:
1、kubelet:是master在node节点上的agent,管理本机运行容器的生命周期,如,创建容器,pod挂载数据卷,下载secret,获取容器和节点状态等,kubelet降每个pod转换成一组容器。
2、proxy:node节点上实现pod网络代理,维护网络规则和四层负载均衡工作。
3、docker:容器引擎,负责运行容器。
pod控制器:
pod控制器是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试进行重启,当根据重启策略无效,则会重新新建pod资源。
1、ReplicationController:简称RC,主要作用是确保pod以你指定的副本数运行,如果有容器异常退出,会自动创建新的pod来代替,而异常多出来的容器也会自动回收。
2、ReplicaSet:简称RS,来取代 ReplicationController,没有本质的不同,只是名字不一样,并且 ReplicaSet 支持集合式的 selector(ReplicationController 仅支持等式),虽然也 ReplicaSet 可以独立使用,但建议使用 Deployment 来自动管理 ReplicaSet,这样就无需担心跟其他机制的不兼容问题(比如 ReplicaSet 不支持 rolling-update 但 Deployment 支持),并且Deployment还支持版本记录、回滚、暂停升级等高级特性。
帮助用户管理无状态的pod资源,精确反应用户定义的目标数量,但是ReplicaSet不是直接使用的控制器,而是使用Deployment。
主要三个组件组成:
1)用户期望的pod副本数量
2)标签选择器,判断哪个pod归自己管理
3)当现存的pod数量不足,会根据pod资源模板进行新建
3、Deployment:
管理无状态应用,支持滚动更新和回滚功能,还提供声明配置
4、statefulset:
管理有状态的
5、daemonset:
用于确保集群中的每一个节点,只运行特定的pod副本,通常用于实现系统级后台任务比如elk
6、job:
只要完成就退出,不需要持续后台运行
7、cronjob:
周期性任务控制器,不需要持续后台运行。