Kubelet 状态上报 节点资源管理 驱逐
2023-09-14 09:15:17 时间
节点资源管理
计算节点除CPU、内存和存储等硬件相关资源外,还有操作系统资源,例如进程上限、磁盘I/O 等。
在Kubernetes 集群中,同一节点上会运行多个不同应用的容器进程。不可避免地,这些进程会共享节点资源,并可能发生资源竞争(request limit)。合理的节点资源管理能提高节点资源利用率,避免相邻进程彼此干扰,保证系统服务正常运行(驱逐条件)。Kubernetes 计算节点资源管理方案已渐趋成熟:具体体现在状态汇报、资源预留、防止节点资源耗尽的防御机制驱逐及容器和系统资源的配置。
状态上报
kubelet 是部署在每个Kubernetes 节点上、负责Pod 生命周期及节点状态上报的组件。
它周期性地向
API Server
进行汇报,并
更新节点的相关健康
和
资源使用信息
,以供
Kubernetes 的控制平面模块对节点和节点上的
Pod
进行管理和决策。上报信息如下:
- 节点基础信息,包括IP 地址、操作系统、内核、运行时、kubelet、kube-proxy 版本信息。部分信息直接从节点获取,而部分信息需要调用云提供商的API 获取。
- 节点资源信息包括CPU、内存、Hugepage、临时存储、GPU 等注册设备,以及这些资源中可以分配给容器使用的部分。
- 调度器在为Pod 选择节点时会将机器的状态信息作为依据。表2-6 展示了节点状态及其代表的意义。比如Ready 状态反映了节点是否就绪,True 表示节点健康;False 表示节点不健康;Unknown 表示节点控制器在最近40s 内没有收到节点的消息。调度器在调度Pod 时会过滤掉所有Ready 状态为非True 的节点。
表
2-6
节点的状态及其意义
资源预留
计算节点除用户容器外,还存在很多支撑系统运行的基础服务,譬如 systemd、journald、sshd、dockerd、Containerd、kubelet 等。如果这些服务的运行受到影响,系统将变得不稳定,进而影响用户的容器进程。为了使服务进程能够正常运行,要确保它们在任何时候都可以获取足够的系统资源,所以我们要为这些系统进程预留资源。
kubelet
可以通过众多启动参数为系统预留
CPU
、 内存、
PID
等资源, 比如
SystemReserved、
KubeReserved
等。如下代码所示,在节点对象状态中可以看到当前节点的
CPU 、memory
、
emphermal-storage
等资源信息,其中每一项资源分为系统的可分配资源(
Allocatable)和节点的容量(
Capacity
)资源。
容量资源(
Capacity
)是指
kubelet
获取的计算节点当前的资源信息。
CPU
是从
/proc/cpuinfo 文件中获取的节点
CPU
核数;
memory
是从
/proc/memoryinfo
中获取的节点内存大小;ephemeral-storage
是指节点根分区的大小。
资源可分配额(
Allocatable
)是用户
Pod
可用的资源,是资源容量减去分配给系统的资源的剩余部分,两者的关系如表2-7
所示。
表
2-7
节点的资源容量和可分配资源
![](https://img-blog.csdnimg.cn/c80a5eca06294e88aed1f840dfcd1c9a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5a-M5aOr5bq36LSo5qOA5ZGY5byg5YWo6JuL,size_20,color_FFFFFF,t_70,g_se,x_16)
节点的预留资源由kubelet 设置到对应的容器或者系统进程的Cgroup 中,以确保系统服务的健康运行。
相关文章
- Centos7安装部署openstack--dashboard服务(计算节点)
- 【状态估计】基于二进制粒子群优化 (BPSO) 求解最佳 PMU优化配置研究【IEEE30、39、57、118节点】(Matlab代码实现)
- 云图说|DDS读写两步走,带您领略只读节点的风采
- 面试题 04.03. 特定深度节点链表-二叉树中序遍历反转
- 2374. 边积分最高的节点
- ROS学习(六)—— 理解ROS节点
- ElasticStack----使用Docker方式安装单节点的8.1.3版本的ElasticSearch
- Command (Start this RegionServer (64250)) has failed CDH hbase 节点重启失败报错
- 获取当前点击li的元素的节点下标
- IEEE69节点数据(Matlab)