问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

kubelet 的工作流程

发布网友 发布时间:2022-10-25 21:38

我来回答

1个回答

热心网友 时间:2023-09-12 03:51

kubernetes 是一个分布式的集群管理系统,在每个节点(node)上都要运行一个 worker 对容器进行生命周期的管理,这个 worker 程序就是 kubelet。

简单地说,kubelet 的主要功能就是定时从某个地方获取节点上 pod/container 的期望状态(运行什么容器、运行的副本数量、网络或者存储如何配置等等),并调用对应的容器平台接口达到这个状态。

kubelet 除了这个最核心的功能之外,还有很多其他特性:

    * 定时汇报当前节点的状态给 apiserver,以供调度的时候使用

    * 镜像和容器的清理工作,保证节点上镜像不会占满磁盘空间,退出的容器不会占用太多资源

    * 运行 HTTP Server,对外提供节点和 pod 信息,如果在 debug 模式下,还包括调试信息

    * 等等……

集群状态下,kubelet 会从 master 上读取信息,但其实 kubelet 还可以从其他地方获取节点的 pod 信息。目前 kubelet 支持三种数据源:

    * 本地文件

    * 通过 url 从网络上某个地址来获取信息

    * API Server:从 kubernetes master 节点获取信息

从管理的对象来说,kubelet 目前支持 docker 和 rkt ,默认情况下使用的 docker。

Pod 管理

在 kubernetes 的设计中,最基本的管理单位是 pod,而不是 container。pod 是 kubernetes 在容器上的一层封装,由一组运行在同一主机的一个或者多个容器组成。如果把容器比喻成传统机器上的一个进程(它可以执行任务,对外提供某种功能),那么 pod 可以类比为传统的主机:它包含了多个容器,为它们提供共享的一些资源。

之所以费功夫提供这一层封装,主要是因为容器推荐的用法是里面只运行一个进程,而一般情况下某个应用都由多个组件构成的。

pod 中所有的容器最大的特性也是最大的好处就是共享了很多资源,比如网络空间。pod 下所有容器共享网络和端口空间,也就是它们之间可以通过 localhost 访问和通信,对外的通信方式也是一样的,省去了很多容器通信的麻烦。

除了网络之外,定义在 pod 里的 volume 也可以 mount 到多个容器里,以实现共享的目的。

最后,定义在 pod 的资源*(比如 CPU 和 Memory) 也是所有容器共享的。

容器健康检查

创建了容器之后,kubelet 还要查看容器是否正常运行,如果容器运行出错,就要根据设置的重启策略进行处理。检查容器是否健康主要有三种方式:执行命令,http Get,和tcp连接。

不管用什么方式,如果检测到容器不健康,kubelet 会删除该容器,并根据容器的重启策略进行处理(比如重启,或者什么都不做)。

容器监控

kubelet 还有一个重要的责任,就是监控所在节点的资源使用情况,并定时向 master 报告。知道整个集群所有节点的资源情况,对于 pod 的调度和正常运行至关重要。

kubelet 使用  cAdvisor  进行资源使用率的监控。cAdvisor 是 google 开源的分析容器资源使用和性能特性的工具,在 kubernetes 项目中被集成到 kubelet 里,无需额外配置。默认情况下,你可以在 localhost:4194 地址看到 cAdvisor 的管理界面。

除了系统使用的 CPU,Memory,存储和网络之外,cAdvisor 还记录了每个容器使用的上述资源情况。

入口程序

cmd/kublet/kubelet.go  -->  main 方法

1. 创建kubeletFlags数据结构(对应kubelet命令行参数);

2. 创建kubeletConfigration数据结构;

3. 创建kubeletServer数据结构,此数据结构包括kubeletFlags、kubeletConfigration;

4. 启动kubelet Configuration controller,此功能开始配置和状态的循环同步;

5. 创建kubeletDeps数据结构;

启动程序

cmd/kubelet/app/server.go   -->  Run 方法

1. 判断kubelet是否以standalone模式运行;

2. 创建对象kubeClient、evnetClient,用来和 apiserver 通信。 heartbeatClient、externalkubeClient、ContainerManager;并设置OOM。

3. 调用RunKubelet。 运行 kubelet,这个函数会启动 goroutine 一直运行,是 kubelet 核心功能执行的地方。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
深圳公共营养师怎么申请补贴 深圳公共营养师补贴怎么领 深圳营养师工资待遇怎么样 ...出道16年一直不露额头,当他撩起刘海,效果堪比「 ”整容”_百度... ...刘海的鹿晗,重回颜值巅峰!换个发型堪比“整容”都有哪些?_百度... ...整容”叫尹正剪头,仅仅换个发型而已,为何会变化那么大呢?_百度... 会计考高级有什么要求 报考高级会计需要什么条件呢? 工程项目融资、建设、管理、运营等过程中各模式的英文简称及专业分析... 200平米别墅装修多少钱别墅装修需要注意些什么 卡丝面膜好用吗 搞笑谜语及答案经典 上海海运学院的蒋生元 战火熔炉:抗美援朝中,志愿军三十多人俘获六十余美军是真的吗? 盐城市凯瑞泽电器贸易有限公司怎么样? 掰豆角还是摘豆角 什么属相家里适合摆放老虎 虎摆件适合哪些属相 东风3型火车机车,是内燃机车,还是电力机车 东风3型内燃机车是怎样造的 当年东风3出口沙特,射程不受*吗?好像有一个国际条约规定出口武器射程不能超过300公里 安全生产风控平台已注册如何改单位 平时下的雨会腐蚀东西吗 雨水有腐蚀性吗 什么样的雨水有腐蚀性呢 爆香是香料与需要炒的肉类调匀后同炒的意思吗?(做法很简单 鸡腿洗净切块 葱姜蒜爆香)这里爆香不懂哦! 中国在巴基斯坦租43年的港口,与历史上英国占香港100年性质一样吗?也是租界吗? 瓜达尔港的战略意义 大熊猫的交友啊对你撒娇 关于android 图标的问题 哪个软件添加w的可以语音 小乌龟的头中间发烂怎么办 运维调试:Istio 用非主流语言写“单纯的世界,只有欺骗” 接力go怎么退出账号 索爱手机如何退出go桌面 htcg11 怎么退出go桌面 限号2022年10月最新限号 苹果6上怎么挂两个 苹果6可以同时上两个吗?怎样才能有两个? 苹果6怎么登两个? 商标侵权赔偿涉及哪些法律依据? Unity Shader - 深度图基础及应用 笔记本改装成台式机 甘肃股权托管卡怎么在网上查询信息 甘肃永靖营业执照代办电话? 阳台安洗衣机洗手盆上面还有立式太阳能热水器怎么改水 植物龙铁怎么养殖 植物龙铁如何养殖 从入门到精通,《饥饿龙》30秒秒上手 闭上眼睛作文 不愉快的中秋节作文 随身玩伴多罗猫的介绍