kubernetes集群中,每个Node节点工作节点上都会启动一个kubelet服务进程。用于处理master节点下发到本节点的任务,管理pod和pod中的容器。每个kubelet进程都会在API Server上注册节点自身信息,定期汇报节点资源使用情况,通过cAdvisor监控容器和节点资源。

1.1 节点管理

节点通过设置kubelet启动参数“--register-node”来决定是否向API Server注册自己。

kubelet默认10秒报告一次节点状态。

1.2 pod管理

kubelet通过以下几种方式获取自身NOde所有运行的pod清单。

(1)文件

kubelet启动参数--config指定配置文件目录下的文件(默认是/etc/kubernetes/manifests/)通过--file-check-frequency设置检查该文件目录的时间间隔。默认为20s

(2)HTTP端点(URL)

通过--manifest-url参数设置。通过--http-check-frequency设置检查该HTTP端点数据的时间间隔。默认为20s

(3)API Server

通过API Server监听etcd目录,同步pod列表

如果kubelet读取监听到的信息是创建和修改pod任务做如下处理

1、为该pod创建一个数据目录

2、从API Server读取该pod清单

3、为该pod挂在外部卷

4、下载pod用到的Secret

5、检查已经运行在节点中的pod,如果pod没有容器或pause容器没有启动,则会停止pod里所有容器的进程。如果在pod中有需要删除的容器,删除这些容器

6、用kubernetes/pause镜像为每个pod创建一个容器。该pause容器用于接管pod中所有其他容器的网络。每创建一个新pod,先创建一个pause容器,然后创建其他容器。

7、为pod中每个容器做如下处理

计算hash值,用容器名字查询对应docker容器hash之,如果找到容器,hash值不同,则停止docker中容器进程,并停止与之关联的pause容器的进程。若相同,不做处理。

如果容器被终止了,没有指定restartPolicy,不做任何处理

调用docker client下载容器经,调用docker client运行容器。

1、3 容器健康检查

通过两类探针来检查容器健康状态。

一个是LivenessProbe探针,用于判断容器是否健康。如果不健康kubelet删除该容器,并根据重启策略做相应处理。如果没有设置livenessProbe,认为返回的值用为是Success

一个是ReadnessProbe探针,用于判断容器是否启动完成,且准备接受请求。如果检查失败,pod状态将被修改。

LivenessProbe包含三种实现方式

1、ExecAction:在容器内部执行一个命令,如果该命令退出状态码为0,表示健康

2、TCPSocketAction:通过容器的IP地址和端口号指定TCP检查,如果端口能被访问,表示健康。

3、HTTPGetAction: 通过容器的IP地址和端口号以及路径调用HTTP Get方法,如果响应码大于等于200且小于等于400,表示健康。

1.4 cAdvisor资源监控

kubernetes之kubelet运行机制分析的更多相关文章

  1. kubernetes之kube-proxy运行机制分析

    在kubernetes集群的每个node都会运行一个kube-proxy服务进程,这个进程可用看作Service的透明代理兼负载均衡器.其核心功能是将到某个Service的访问请求转发到后端的多个po ...

  2. 《Kubernetes权威指南》——Kubelet运行机制与安全机制

    1 Kubelet运行机制 Kubenetes集群中的每个Node节点都会启动一个Kubelet服务进程用于处理Master下发到该节点的任务,管理Pod及其中的容器 Kubelet进程在API Se ...

  3. abp运行机制分析

    abp运行流程 由于公司现在大量向abp框架+react前后端分离架构转型,所以有必要分析abp框架是如何在iis运行的,所以才有这篇文章 public class MvcApplication : ...

  4. kube-proxy运行机制分析【转载】

    转自:http://blog.itpub.net/28624388/viewspace-2155433/ 1.Service在很多情况下只是一个概念,而真正将Service的作用实现的是kube-pr ...

  5. ActiveSupport::Concern 和 gem 'name_of_person'(300✨) 的内部运行机制分析

    理解ActiveRecord::Concern: 参考:include和extend的区别: https://www.cnblogs.com/chentianwei/p/9408963.html 传统 ...

  6. kubernetes/k8s CRI分析-kubelet创建pod分析

    先来简单回顾上一篇博客<kubernetes/k8s CRI 分析-容器运行时接口分析>的内容. 上篇博文先对 CRI 做了介绍,然后对 kubelet CRI 相关源码包括 kubele ...

  7. kubernetes/k8s CRI分析-kubelet删除pod分析

    关联博客<kubernetes/k8s CRI 分析-容器运行时接口分析> <kubernetes/k8s CRI分析-kubelet创建pod分析> 之前的博文先对 CRI ...

  8. ASP.NET MVC的运行机制--url的全局分析

    全局 首先我们来看一副图片       首先,用户通过Web浏览器向服务器发送一条url请求,这里请求的url不再是xxx.aspx格式,而是http://HostName/ControllerNam ...

  9. .net core系列之《从源码对Configuration的底层运行机制进行分析》

    通过对Configuration源代码的分析从而来自定义一个配置数据源 1.用反编译工具来看看AddJsonFile()这个方法究竟干了什么,源代码如下: public static IConfigu ...

随机推荐

  1. js动画--透明度变化

    对于设置元素的透明度的变化.主要思想也是通过一个定时器来控制的. 此外对于透明度有一点要说明一下,就是在IE中我们在css中设置透明度的方式filter:alpha(opacity:value)其中v ...

  2. P4281 [AHOI2008]紧急集合 / 聚会[LCA]

    解析 蒟蒻用的办法比较蠢,不如上面的各位大佬,直接化成一个式子了,我还是分类讨论做的. 下面正文. 猜想:最优集合点一定是三点任意两对点对应的路径的交点. 不妨这样想,如果任意两个人经过同一条路径,那 ...

  3. python应用-输入分数 输出最高分数对应的名字

    def main(): names = ['刘备', '张飞', '曹操', '袁绍', '关羽', '赵云', '周瑜'] scores=[] num=0 m=0 for name in names ...

  4. JVM 性能调优工具

    jdk自带的工具,在macOs系统中的目录位置(jdk具体版本位置要替换):/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Ho ...

  5. 如何移除woocommerce的tabs【wordpress技巧】

    我们在用woocommerce建站时有时不想让产品的review显示出来,以使单个产品页面简单而令人印象深刻,那么要如何移除tab呢?可以在主题的function.php文件定义移除tabs函数,代码 ...

  6. 跑起来JEE论坛、商城和网站的经验总结

    前言:昨天我们老大给我分配了几个任务,让我把几个公司的项目运行起来跑一下,几个项目都是JEE上开源的,三个项目,一个网站内容系统.一个BBS论坛.一个jspgou商城,这三个都是开源的,倒腾了两天,今 ...

  7. 非阻塞IO的实现方式

    1.状态轮询: 2.状态订阅: 3.完成回掉:

  8. 我的首次AK记

    哈哈哈!本蒟蒻终于在今天中午机房测试中AK全场了(其实没啥技术含量,只有5个水题,对,全都很水)

  9. MongoDB索引存储BTree与LSM树(转载)

    1.为什么 MongoDB 使用B-树,而不是B+树 MongoDB 是一种 nosql,也存储在磁盘上,被设计用在数据模型简单,性能要求高的场合.性能要求高,我们看B-树与B+树的区别: B+树内节 ...

  10. SQL盲注学习-时间型

    本次对时间型盲注进行学习,还是的使用sqli-labs环境. 首先看一下时间型盲注需要用到的: 1.if()函数   if(a,b,c) 如果a为真则执行b,否则执行c.如图,由于1=1为真所以执行第 ...