kubernetes集群中,每一个Node节点工做节点上都会启动一个kubelet服务进程。用于处理master节点下发到本节点的任务,管理pod和pod中的容器。每一个kubelet进程都会在API Server上注册节点自身信息,按期汇报节点资源使用状况,经过cAdvisor监控容器和节点资源。node
1.1 节点管理docker
节点经过设置kubelet启动参数“--register-node”来决定是否向API Server注册本身。网络
kubelet默认10秒报告一次节点状态。url
1.2 pod管理rest
kubelet经过如下几种方式获取自身NOde全部运行的pod清单。进程
(1)文件资源
kubelet启动参数--config指定配置文件目录下的文件(默认是/etc/kubernetes/manifests/)经过--file-check-frequency设置检查该文件目录的时间间隔。默认为20s同步
(2)HTTP端点(URL)kubernetes
经过--manifest-url参数设置。经过--http-check-frequency设置检查该HTTP端点数据的时间间隔。默认为20shash
(3)API Server
经过API Server监听etcd目录,同步pod列表
若是kubelet读取监听到的信息是建立和修改pod任务作以下处理
一、为该pod建立一个数据目录
二、从API Server读取该pod清单
三、为该pod挂在外部卷
四、下载pod用到的Secret
五、检查已经运行在节点中的pod,若是pod没有容器或pause容器没有启动,则会中止pod里全部容器的进程。若是在pod中有须要删除的容器,删除这些容器
六、用kubernetes/pause镜像为每一个pod建立一个容器。该pause容器用于接管pod中全部其余容器的网络。每建立一个新pod,先建立一个pause容器,而后建立其余容器。
七、为pod中每一个容器作以下处理
计算hash值,用容器名字查询对应docker容器hash之,若是找到容器,hash值不一样,则中止docker中容器进程,并中止与之关联的pause容器的进程。若相同,不作处理。
若是容器被终止了,没有指定restartPolicy,不作任何处理
调用docker client下载容器经,调用docker client运行容器。
一、3 容器健康检查
经过两类探针来检查容器健康状态。
一个是LivenessProbe探针,用于判断容器是否健康。若是不健康kubelet删除该容器,并根据重启策略作相应处理。若是没有设置livenessProbe,认为返回的值用为是Success
一个是ReadnessProbe探针,用于判断容器是否启动完成,且准备接受请求。若是检查失败,pod状态将被修改。
LivenessProbe包含三种实现方式
一、ExecAction:在容器内部执行一个命令,若是该命令退出状态码为0,表示健康
二、TCPSocketAction:经过容器的IP地址和端口号指定TCP检查,若是端口能被访问,表示健康。
三、HTTPGetAction: 经过容器的IP地址和端口号以及路径调用HTTP Get方法,若是响应码大于等于200且小于等于400,表示健康。
1.4 cAdvisor资源监控