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. Linux查看打日志文件

    1.如果文件比较小的话,使用vim直接查看,如果文件比较大的话,使用vim会直接卡主 2.如果想要查看正在滚动的日志文件.这个命令可以查看大文件. tail -f file Ctrl+c 终止tail ...

  2. 使用adb/Linux获取网关ip

    ip route list table

  3. python基础知识-列表的排序问题

    def main(): f=['orange','zoo','apple','internationalization','blueberry'] #python 内置的排序方式默认为升序(从小到大) ...

  4. c#接口interface学习

    好久没学习C#了,上次已经学习到了接口这块,感觉有点不太好理解,因此重新学习,在vs上面运行了,本来不想写博客的,但是正好看到网上有人说,写博客可以加深印象,因此,写吧. 下面是菜鸟教程的实例 usi ...

  5. imm自动发现有问题,监控项不再支持

    IPMI是计算机系统的远程"关闭"或"带外"管理的标准接口.它可以独立于操作系统直接从所谓的"带外"管理卡监视硬件状态.华为的服务器叫做BM ...

  6. 【题解】 洛谷 P2649 游戏预言

    题目: P2649 游戏预言 题意: John和他的好朋基友们在van纸牌游戏.共有\(m\)个人.纸牌有\(n \times m\)张,从\(1--n \times m\)编号.每人有\(n\)张. ...

  7. 在交互环境下使用 Pyspark 提交任务给 Spark 解决 : java.sql.SQLException: No suitable driver

    在 jupyter 上启用 local 交互环境和 spark 进行交互使用 imapla 来帮助 spark 取数据却失败了 from pyspark.sql import SparkSession ...

  8. Spark 部署即提交模式意义解析

    Spark 的官方从 Cluster Mode Overview 中,官方向我们介绍了 cluster 模式的部署方式. Spark 作为独立进程在集群上运行,他们通过 SparkContext 进行 ...

  9. nginx 访问控制之 document_uri

    这就用到了变量$document_uri,根据前面所学内容,该变量等价于$uri,其实也等价于location匹配. 示例1: if ($document_uri ~ "/admin/&qu ...

  10. pandas批量读取带有日期的文件夹简单操作

    工作中碰到了这样一个数据处理的问题,想让你把某个文件夹下的子文件夹中的excel表级联成为1张表,用excel来做会很浪费时间并且很劳累,这时候我们就可以用pandas来加大工作效率,只需要半个小时就 ...