kubernetes基础概念

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:

    周期性任务控制器,不需要持续后台运行。

原文地址:https://www.cnblogs.com/liuyam/p/13499689.html