searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

kubenetes节点(Node)状态设置的源码级分析

2023-08-22 11:00:51
10
0

问题描述

业务使用的kubenetes集群,需要收集k8s各节点的硬件资源使用情况,  因此需要分析Node的系统资源是如何设置的。

通过跟踪源码, 先分享一下capacity和allocatable这两个指标的获取路径

 

环境说明

kubenetes版本: v1.23.3

linux版本:  CentOS 7.6

 

总体说明

node的状态由节点上的kubelet进行设置, capacity与allocatable的含义如下:

capacity:     容量, 节点的系统资源上限

allocatable:  可分配的, kubelet可分配的系统资源上限,  注意: 非当前实时可用的系统资源

 

源码级分析

状态设置入口函数- defaultNodeStatusFuncs

 

状态设置控制逻辑:MachineInfo

 

容量设置

kubelet通过cadvisor库获取系统资源: CPU和内存

 

【容量】CPU

所用测试机器是16核 与node.status.capacity.cpu结果一致

【容量】内存

所用测试机器总内存32778604 kB(32G) 与node.status.capacity.memory 一致

【容量】Pods

kubelet从配置中获取最大节点数量

所用测试机器的kubelet未配置【最大Pod数量】-maxPods,  maxPods的默认配置是110

 

【容量】临时存储-ephemeral-storage

所用测试机器kubelet的root-dir是: /dcos/data/docker/kubelet,  所在的磁盘分区是根分区

所用测试机器根分区的磁盘大小是206291924K 与 node.status.capacity.ephemeral-storage一致

 

可分配设置

控制逻辑

可分配容量 = 总容量 - 保留容量

kubelet保留容量配置

所用测试机器的kubelet配置文件如下:

所用测试机器配置的kubelet保留资源量

内存: 总容量:-32778604Ki * (1-5%)  = 31887025971 与 node.status.allocatable.memory  相当

临时存储: 总容量-206291924Ki * (1-5%) = 200680783667  与 node.status.allocatable.ephemeral-storage  相当

 

0条评论
0 / 1000
smallstone
1文章数
0粉丝数
smallstone
1 文章 | 0 粉丝
smallstone
1文章数
0粉丝数
smallstone
1 文章 | 0 粉丝
原创

kubenetes节点(Node)状态设置的源码级分析

2023-08-22 11:00:51
10
0

问题描述

业务使用的kubenetes集群,需要收集k8s各节点的硬件资源使用情况,  因此需要分析Node的系统资源是如何设置的。

通过跟踪源码, 先分享一下capacity和allocatable这两个指标的获取路径

 

环境说明

kubenetes版本: v1.23.3

linux版本:  CentOS 7.6

 

总体说明

node的状态由节点上的kubelet进行设置, capacity与allocatable的含义如下:

capacity:     容量, 节点的系统资源上限

allocatable:  可分配的, kubelet可分配的系统资源上限,  注意: 非当前实时可用的系统资源

 

源码级分析

状态设置入口函数- defaultNodeStatusFuncs

 

状态设置控制逻辑:MachineInfo

 

容量设置

kubelet通过cadvisor库获取系统资源: CPU和内存

 

【容量】CPU

所用测试机器是16核 与node.status.capacity.cpu结果一致

【容量】内存

所用测试机器总内存32778604 kB(32G) 与node.status.capacity.memory 一致

【容量】Pods

kubelet从配置中获取最大节点数量

所用测试机器的kubelet未配置【最大Pod数量】-maxPods,  maxPods的默认配置是110

 

【容量】临时存储-ephemeral-storage

所用测试机器kubelet的root-dir是: /dcos/data/docker/kubelet,  所在的磁盘分区是根分区

所用测试机器根分区的磁盘大小是206291924K 与 node.status.capacity.ephemeral-storage一致

 

可分配设置

控制逻辑

可分配容量 = 总容量 - 保留容量

kubelet保留容量配置

所用测试机器的kubelet配置文件如下:

所用测试机器配置的kubelet保留资源量

内存: 总容量:-32778604Ki * (1-5%)  = 31887025971 与 node.status.allocatable.memory  相当

临时存储: 总容量-206291924Ki * (1-5%) = 200680783667  与 node.status.allocatable.ephemeral-storage  相当

 

文章来自个人专栏
容器小白
1 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0