Kubernetes 的节点可以按照 Capacity 调度。默认情况下 pod 能够使用节点全部可用容量。 这是个问题,因为节点自己通常运行了不少驱动 OS 和 Kubernetes 的系统守护进程。 除非为这些系统守护进程留出资源,否则它们将与 pod 争夺资源并导致节点资源短缺问题,从而导致系统无响应。
kubelet 公开了一个名为 ‘Node Allocatable’ 的特性,有助于为系统守护进程预留计算资源。 Kubernetes 推荐集群管理员按照每个节点上的工作负载密度配置 “Node Allocatable”。
节点可分配

Kubernetes 节点上的 ‘Allocatable’ 被定义为 pod 可用计算资源量。 调度器不会超额申请 ‘Allocatable’。 目前支持 ‘CPU’、‘memory’ 和 ‘ephemeral-storage’ 这几个参数。
可分配的节点暴露为 API 中 v1.Node 对象的一部分,也是 CLI 中 kubectl describe node 的一部分。
在 kubelet 中,可以为两类系统守护进程预留资源。
什么是cgroup
cgroup(control group)是一个内核特性,用于限制、统计、隔离一组进程的资源(CPU、内存、磁盘、网络等),首字母不要大写。
““cgroup” stands for “control group” and is never capitalized.
- 单数形式(cgroup)指所有特性,也可以作为“cgroup controllers”的修饰。
- 复数形式(cgroups)指多个 cgroup

本文详细介绍了如何在 Kubernetes 集群中管理节点资源,确保系统守护进程的稳定运行。通过启用 Node Allocatable 特性,设置 cgroup 驱动,预留 kube 和系统资源,以及配置驱逐阈值,可以有效避免因资源竞争导致的节点无响应。此外,文章还提供了实际操作步骤,帮助管理员实施节点资源约束。
最低0.47元/天 解锁文章
2450

被折叠的 条评论
为什么被折叠?



