【原创】k8s源码分析-----kubelet(5)diskSpaceManager

K8S-APIServer源码分析组件构成、原理、程序流程 文章目录一、组件构成二、组件实现原理三、程序流程源码分析 一、组件构成 apiserver 由 3 个组件构成(AggregatorServer、APIServer、APIExtensionServer) AggregatorServer:实现请求的代理转发,将来自用户的请求拦截转发给其他服务器,并且负责整个 APIServer 的服务发现功能 APIServer:负责对内建资源对象请求的一些处理... 阅读详情

 

本文qq空间链接:http://user.qzone.qq.com/29185807/blog/1460448039

本文csdn博客链接:http://blog.youkuaiyun.com/screscent/article/details/51134293

源码为k8s v1.1.1稳定版本

2.4、diskSpaceManager

1、参数

代码在k8s.io\kubernetes\cmd\kubelet\app中

 

结构体变量

type KubeletServer struct {

...

LowDiskSpaceThresholdMB        int

...

}

 

默认参数

func NewKubeletServer() *KubeletServer {

    return &KubeletServer{

...

LowDiskSpaceThresholdMB:     256,

...

}

}

flag参数

func (s *KubeletServer) AddFlags(fs *pflag.FlagSet) {

...

    fs.IntVar(&s.LowDiskSpaceThresholdMB, "low-diskspace-threshold-mb", s.LowDiskSpaceThresholdMB, "The absolute free disk space, in MB, to maintain. When disk space falls below this threshold, new pods would be rejected. Default: 256")

    ...

}

 

LowDiskSpaceThresholdMB: 创建pod所需要的最低磁盘空间。当低于这个大小的时候,将拒绝创建pod。

2、传递参数

代码依旧在k8s.io\kubernetes\cmd\kubelet\app 中

在func (s *KubeletServer) KubeletConfig() (*KubeletConfig, error) {

...

    imageGCPolicy := kubelet.ImageGCPolicy{

        HighThresholdPercent: s.ImageGCHighThresholdPercent,

        LowThresholdPercent:  s.ImageGCLowThresholdPercent,

    }

...

return &KubeletConfig{

...

DiskSpacePolicy:           diskSpacePolicy,

...

}

}

 

构建了一个KubeletConfig

在func createAndInitKubelet(kc *KubeletConfig) (k KubeletBootstrap, pc *config.PodConfig, err error) {

...

k, err = kubelet.NewMainKubelet(

...       kc.DiskSpacePolicy,

...

}

...

}

 

diskSpaceManager比较简单,就只有一个空间大小设定的参数

 

 

3、diskSpaceManager具体工作

1、构建

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

func NewMainKubelet(

这里就很简单了,cadvisorInterface前面的文章里面已经介绍过了。还有一个就是磁盘空间限度。

我们往下继续看

 

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

很简单的构建结构体

下面是接口

我们再看具体的结构体

从上面的成员来看,英文解释很清楚。

cachedInfo:用于保存文件系统信息

policy:就是传进来的磁盘限制大小

frozen:标志位,用于标识磁盘空间是否够用

 

我们看看暴露的接口

两个目录的查询“docker”和“root”

 

具体实现在下:

 从上面两张图来看,先获取到文件信息。通过上面传递的

docker 对应的是dm.cadvisor.DockerImagesFsInfo

root对应的是dm.cadvisor.RootFsInfo

然后进行判断。

 

还有一个接口

这个接口就很简单了。设置了标识位

 

我们看看kubelet是怎么用它的

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

 

查询两个目录,“docker”和“root”目录,是否都有足够的空间

 

 

龚浩华

QQ 月牙寂 道长 29185807

2016年4月12日

(版权声明:本文为作者原创,如需转载请通知本人,并标明出处和作者。擅自转载的,保留追究其侵权的权利。)

 

如果你觉得本文对你有帮助,可以转到你的朋友圈,让更多人一起学习。

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

 

 

K8s源码分析 前言 · 《k8s-1.13版本源码分析》 阅读详情

相关推荐

k8s 认证机制源码分析

k8s认证机制源码分析

fengcai_ke的博客 1218

K8S容器空间不足问题分析和解决

k8s容器出现Free disk space below threshold. Available: 3223552 bytes (threshold: 10485760B)错误的问题分析和解决办法。

TradingAgents-CN专栏 2671

esp32 python开发环境搭建_eclipse esp32开发环境搭建

安装方法基本是按照官网提供的方法来操作https://github.com/espressif/idf-eclipse-plugin#GettingStarted但是官网的方法安装之后还是不能编译成功的,第一次编译会出现一下问题问题1:Building in: E:\eclipse-workspace\helloworlk\buildcmake -G Ninja -DCMAKE_TOOLCHAIN...

weixin_39978276的博客 1263

Kubernetes源码分析(一)

Kubernetes源码分析,目前还在学习中,全部学习完会重新发布一次

weixin_46253576的博客 2333

AMSR-2数据下载实战:从JAXA到LPRM的算法选择与效率优化

本文详细介绍了AMSR-2数据的下载实战,重点对比了JAXA与LPRM算法的差异及适用场景,并提供了高效下载方案和网络优化策略。通过实际案例和代码示例,帮助用户快速获取和处理AMSR-2数据,提升研究效率。

rl6adventurer的博客 691

UVM环境复位--stop_sequences()

在UVM验证环境中, stop_sequences是一个用于强制终止所有正在运行的 Sequence 的方法,通常用于动态控制激励生成流程。1.通过uvm_config_db传递事件和严格的同步机制,此方案符适用于复杂复位场景和动态测试控制。组件耦合:Driver 和 Sequence 不再直接依赖env,通过标准接口通信。竞争条件:确保 Driver 完成清理后再终止 Sequence。代码健壮性:使用非阻塞操作和事件监听,避免死锁。

qq_42779035的博客 3014

简单易学的Kubernetes(k8s):架构和源码解读

1▲点击上方"DevOps和k8s全栈技术"关注公众号Kubernetes(K8s)为云原生应用提供了强大的管理和编排能力。本文将深入探讨Kubernetes的架构,解剖其核心组件,以帮助读者更好地理解这个复杂而强大的系统。第一部分:K8S基本概念和架构介绍1. Kubernetes基本概念Pods: 是Kubernetes的最小调度单元,可以包含一个或多个容器。Nodes: 是物理或虚拟机器,...

weixin_38320674的博客 3274

Kali实战:构建安卓远程监控工具,实现拍照、定位与信息获取

本文详细介绍了如何使用Kali Linux构建安卓远程监控工具,实现拍照、定位与信息获取功能。通过Metasploit框架生成安卓载荷,部署到目标设备并建立连接,执行远程监控操作如获取位置信息、拍照和读取通讯录。文章还提供了进阶技巧与问题排查方法,强调法律与道德考量。

weixin_28716443的博客 239

Kubelet源码分析之diskSpaceManager

kubernetes版本v1.5.0 diskSpaceManager在结构体kubelet// Kubelet is the main kubelet implementation. type Kubelet struct { ... // Diskspace manager. diskSpaceManager diskSpaceManager // Cached

纵横四海的博客 664

基于GIS的生态安全网络格局构建(附练习数据下载)

基于GIS的生态安全网络格局构建(附练习数据下载)

qq_43173805的博客 3124

【保姆级教程】基于UNet++&MobileNetv2的语义分割模型从训练到RK3588部署:让边缘AI落地效率提升300%

通过SMP库一键构建encoder_name="mobilenet_v2", # 选择MobileNetv2作为骨干encoder_weights="imagenet", # 加载预训练权重加速收敛in_channels=3, # 输入图像通道数(RGB)classes=29, # Cityscapes数据集类别数activation=None # 输出无激活,便于后续损失计算本教程从“模型设计-训练-转换-边缘部署”全链路拆解了。

FJN110的博客 210

Kubelet源码分析(四) diskSpaceManager

源码版本kubernetes version: v1.3.0简介前一节介绍了Garbage Collection,涉及到的策略基本与磁盘资源有关。对于k8s集群如何高效的利用各种资源,也非常值得我们涉猎学习。管理好资源才能更好的创建服务,所以这节继续学习kubelet的diskSpaceManager。 diskSpaceManager顾名思义就是管理磁盘空间的,实际它的实现较为简单,就是给kub

Robinly的专栏 751

手把手教你学simulink(26.8)--控制算法场景示例:基于强化学习的无人机姿态稳定控制系统

首先,我们需要定义无人机的姿态稳定控制环境。环境包括无人机的状态(姿态角、角速度等)和动作(电机转速)。我们还需要定义奖励函数,用于评估控制器的表现。matlab深色版本% 定义环境% 定义状态空间% 12个状态变量% 定义动作空间% 电机转速范围奖励函数用于评估控制器的表现。我们可以根据无人机的姿态误差、角速度误差以及控制输入的变化率来设计奖励函数。具体来说,当无人机的姿态接近设定值时,给予正奖励;当姿态误差较大或控制输入变化剧烈时,给予负奖励。matlab深色版本。

MHD0815的博客 496

K8s源代码解读--plugin

总的来说,该文件为节点权限认证操作提供了度量指标,可帮助系统管理员监控和分析节点的权限认证性能。文件中的代码实现了节点图谱的填充逻辑,通过监听资源的事件,将各个资源(如Pod、PersistentVolume等)添加到图谱中,并在资源发生变化时更新图谱的信息。通过这些结构体,可以在Kubernetes中定义和配置Pod Toleration Restriction的规则,从而限制在特定的Namespace中哪些Pod可以使用特定的Toleration,从而增强了对集群中Pod的调度和部署的控制能力。

techdashen的博客 366

从零搭建 SAP ALE/IDoc:自定义 IDoc 结构、Outbound 发送、Inbound 入库与排错全流程

本文介绍了SAP系统中ALE和IDoc技术的应用,用于解决分布式系统集成中的数据传递问题。主要内容包括: ALE/IDoc技术概述 ALE通过消息驱动方式实现业务数据传递 IDoc作为标准化数据信封,包含控制信息、业务数据和状态记录 支持SAP与非SAP系统间集成 核心概念 ALE的价值在于业务消息传递而非远程调用 IDoc由控制记录、数据记录和状态记录三部分组成 WE60工具用于查看IDoc文档结构 实践案例 演示如何将自定义业务表数据打包为IDoc 详细说明IDoc结构定义步骤(段、基本类型、消息类型)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 318

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【kubernetes/k8s源码分析】kube-scheduler 源码分析

kubernetes 1.12.1版本 前言 在 kubernetes 体系中,scheduler 是以 plugin 形式存在的模块,这种可插拔的设计方便用户自定义所需要的调度算法,所以源码路径为 plugin 目录下的 cmd 以及 pkg/scheduler Scheduler 负责安排 Pod 到具体的Node,通过监听API server提供的wat...

zhonglinzhang 9101

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

K8s源码分析(一)-K8s调度框架及调度器初始化介绍

对K8s调度框架进行了介绍,还介绍了Cobra,并分析了K8s调度器的初始化代码

slipegg的博客 1838

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

K8S容器源码分析和设计

在 Kubernetes 中,Service 是一种抽象,用于定义一组逻辑上的 Pod 以及访问它们的策略。Service 提供了稳定的网络入口,使得客户端可以通过统一的方式访问动态变化的 Pod 集群。调度器负责将新创建的 Pod 分配到合适的节点上。调度过程涉及资源过滤、优先级打分和绑定等步骤。持久卷(Persistent Volume, PV)和持久卷声明(Persistent Volume Claim, PVC)提供了抽象层,使得存储资源可以独立于 Pod 生命周期进行管理。

远方雪的专栏 1650

k8s详解

Kubernetes(简称 k8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序。本篇详解将介绍 k8s 的核心概念、架构和使用方法,帮助读者深入理解 k8s 并掌握其基本操作。

AI时代光年 1712

K8S node磁盘清理

K8S的部署形式相比传统非容器部署,会消耗更多的磁盘,在运行时可能会把磁盘占满。这里以使用containerd运行时的K8S node为例,说明磁盘会用到那里了和如何清理磁盘。

qq_40406649的博客 7693

K8s 源码剖析及debug实战(二):debug K8s 源码

本文主要介绍如何 debug K8s 源码。本专栏主要从 K8s 源码出发,深入理解 K8s 一些组件底层的代码逻辑。

日常学习与专研的记录 2000

k8s 源码分析 informer篇

k8s 源码分析 informer篇 informer 是 client-go 中的核心工具包,informer 其实就是一个带有本地缓存和索引机制的,可以注册 EventHandler 的 client 本地缓存被称为 Store,索引被称为 Index。使用 informer 的目的是为了减轻 apiserver 数据交互的压力而抽象出来的一个 cache 层,客户端对 apiserver 数据的 读取和监听操作都通过本地 informer进行。

qq_35679620的博客 2208

kubernetes(k8s) 知识总结(第1期)

容器必知必会

yspg_217的博客 1084

K8s 源码剖析及debug实战(一):Minikube 安装及源码准备

本文介绍实战前的准备工作,包含 Minikube 安装以及源码准备。本专栏主要从 K8s 源码出发,深入理解 K8s 一些组件底层的代码逻辑。

日常学习与专研的记录 1821

【原创】k8s源码分析-----kube-scheduler

  本文转自本人空间:http://user.qzone.qq.com/29185807/blog/1459831332 源码为k8s v1.1.1稳定版本 一、主要流程 1、main入口 源码在k8s.io/kubernetes/plugin/cmd/kube-scheduler 这种封装是k8s里面一贯的封装风格,就不再多说了 源码在k8s.io/kubernetes/plu...

月牙寂 6198
上一篇: 【原创】k8s源码分析-----kubelet(4)imageManager
下一篇: 【原创】k8s源码分析-----kubelet(6)statusManager
月牙寂
博客等级 码龄18年 171粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值