首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >k8s源码分析-----kubelet(6)statusManager

k8s源码分析-----kubelet(6)statusManager

作者头像
月牙寂道长
修改于 2018-04-03 03:48:00
修改于 2018-04-03 03:48:00
1.2K0
举报
文章被收录于专栏:月牙寂月牙寂

说明:此文章为腾讯云机器自动从本人csdn博客搬迁过来。是本人授权操作。

申明:无本人授权,不可转载本文。如有转载,本人保留追究其法律责任的权利。

龚浩华,QQ 29185807,月牙寂 道长

第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang

2.5、statusManager

1、构建与启动

代码在k8s.io\kubernetes\pkg\kubelet\kubelet.go中

func NewMainKubelet(

很简单,参数就是kubeclient,与apiserver连接的接口,就不再详细分析了。

我们再看下启动

// Run starts the kubelet reacting to config updates

func (kl *Kubelet) Run(updates <-chan PodUpdate) {

在Run中启动的

2、具体工作流程

代码在k8s.io\kubernetes\pkg\kubelet\status下

先NewManager

我们看看结构体

podStatuses:用于保存podstatus

podStatusChannel:用于模块间通信用

再看看对外暴露的接口

下面我们一个一个来进行解析

2.1 Start

// Start the API server status sync loop.

开启与api server的同步任务

开启了一个定时任务syncBatch

继续跟踪

从podStatusChannel中获取到请求请求任务

然后通过kubeclient获取最新的状态

获取到最新状态之后,进行更新,并判断是否terminated,再判断是否正在运行,没有这删除

最后,如果操作失败,则删除,等待下次操作。

2.2 GetPodStatus

// GetPodStatus returns the cached status for the provided pod UID,

    //as well as whether it was a cache hit.

这个很简单,直接从map中查找,返回结果

2.3 SetPodStatus

    // SetPodStatus caches updates the cached status for the given pod,

    //and triggers a status update.

更新caches,并触发状态更新

从caches(map)中查找,查找不到,则赋值启动时间

然后放入到caches(map)中,并通过podStatusChannel发布一个任务请求。这个将在start启动的同步任中获取到

2.4 TerminatePods

    // TerminatePods resets the container status for the provided pods

    //to terminated and triggers

    // a status update. This function may not enqueue all the provided pods,

    //in which case it will

    // return false

终止一个pod,并触发一个终止任务

设置pod的Terminated状态。然后通过podStatusChannel触发任务。如果发送失败则返回false,可以通过下次再一次尝试

2.5 DeletePodStatus

// DeletePodStatus simply removes the given pod from the status cache.

删除一个podstatus,主要是从caches(map)中删除

2.6 RemoveOrphanedStatuses

    // RemoveOrphanedStatuses scans the status cache and removes any entries

    //for pods not included in

    // the provided podUIDs.

也是一个删除操作,从caches(map)中删除

2.7 小结

statusManager功能单一,逻辑清晰,通过暴露接口向外提供操作。是典型的golang设计模式。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年04月12日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
kubelet statusManager 源码分析
本篇文章没有接上篇继续更新 kube-controller-manager,kube-controller-manager 的源码阅读笔记也会继续更新,笔者会同时阅读多个组件的源码,阅读笔记也会按组件进行交叉更新,交叉更新的目的一是为了加深印象避免阅读完后又很快忘记,二是某些代码的功能难以理解,避免死磕,但整体目标是将每个组件的核心代码阅读完。
田飞雨
2019/12/26
1.8K0
k8s源码分析-----kubelet(7)containerRuntime
第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang
月牙寂道长
2018/03/06
1.5K0
k8s源码分析-----kubelet(7)containerRuntime
Kubelet PLEG源码分析
A: 同其他Manager类似,PLEG在kubelet调用NewMainKubelet进行初始化时创建的。
Walton
2018/10/29
3.5K0
Kubelet PLEG源码分析
k8s源码分析------kube-apiserver分析(1)
第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang
月牙寂道长
2018/03/06
1.7K0
k8s源码分析------kube-apiserver分析(1)
Kubelet 中的 “PLEG is not healthy” 到底是个什么鬼?
在 Kubernetes 社区中,PLEG is not healthy 成名已久,只要出现这个报错,就有很大概率造成 Node 状态变成 NotReady。社区相关的 issue 也有一大把,先列几个给你们看看:
米开朗基杨
2019/12/06
12.6K2
Kubelet 中的 “PLEG is not healthy” 到底是个什么鬼?
k8s源码分析-----EndpointController
第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang
月牙寂道长
2018/03/06
1.4K0
k8s源码分析-----EndpointController
k8s源码分析-----kubelet(9)podWorkers
第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang
月牙寂道长
2018/03/06
1.4K0
k8s源码分析-----kubelet(9)podWorkers
k8s源码分析-----kubelet(8)pod管理
第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang
月牙寂道长
2018/03/06
1.2K0
k8s源码分析-----kubelet(8)pod管理
k8s源码分析-----kubelet(3)ContainerGC
第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang
月牙寂道长
2018/03/06
1K0
k8s源码分析-----kubelet(3)ContainerGC
k8s源码分析-----kubelet(2)dockerClient
第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang
月牙寂道长
2018/03/06
8290
k8s源码分析-----kubelet(2)dockerClient
k8s源码分析-----kubelet(5)diskSpaceManager
第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang
月牙寂道长
2018/03/06
6720
k8s源码分析-----kubelet(5)diskSpaceManager
k8s源码分析-----kubelet(1)主要流程
第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang
月牙寂道长
2018/03/06
1.3K0
k8s源码分析-----kubelet(1)主要流程
k8s源码分析-----kubectl(2)Factory
第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang
月牙寂道长
2018/03/06
2.7K0
k8s源码分析-----kubectl(2)Factory
k8s源码分析-----kube-scheduler
第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang
月牙寂道长
2018/03/06
1.1K0
k8s源码分析-----kube-scheduler
k8s源码分析-----kubelet(4)imageManager
第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang
月牙寂道长
2018/03/06
1.3K0
k8s源码分析-----kubelet(4)imageManager
k8s源码分析-----kube-proxy(1)Config
第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang
月牙寂道长
2018/03/06
8260
k8s源码分析-----kube-proxy(1)Config
Kubernetes PodGC Controller源码分析
Author: xidianwangtao@gmail.com PodGC Controller配置 关于PodGC Controller的相关配置(kube-controller-manager配置),一共只有两个: flagdefault valuecomments --controllers stringSlice*这里配置需要enable的controlllers列表,podgc当然也可以在这里设置是都要enable or disable,默认podgc是在enable列表中的。 --
Walton
2018/04/16
2.1K0
《一起读 kubernetes 源码》probe 监控 pod 状态
当我们知道了 pod 的生命周期,那么 k8s 如何知道一个 pod 的健康状态呢?就是通过今天要说的 Probe 也就是探针来检查 pod 的状态。一方面可以监控 pod 的健康状态,重启不健康的 pod;另一方面还可以监控 pod 的服务状态,当 pod 能提供服务时才会将流量打进来。
LinkinStar
2023/12/30
5040
k8s源码分析----apiserver之APIGroupVersion
第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang
月牙寂道长
2018/03/06
1.8K0
k8s源码分析----apiserver之APIGroupVersion
k8s源码分析------kube-apiserver分析(2)
第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang
月牙寂道长
2018/03/06
1.1K0
k8s源码分析------kube-apiserver分析(2)
相关推荐
kubelet statusManager 源码分析
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档