27. Cgroups, 深入了解Kubernetes 的资源管理

时间: 2023-12-16 admin 维修知识

27. Cgroups, 深入了解Kubernetes 的资源管理

27. Cgroups, 深入了解Kubernetes 的资源管理

注意:这是中文翻译稿,借助星火大模型直接翻译。参考价值还是有的,所以翻译出来供参考。

在本文中,我们将深入探讨 cgroups 是什么、Kubernetes 如何使用它们来管理 Node 资源,以及我们如何在 Pod 上设置资源请求和限制之外利用它们。

什么是Cgroups

首先是最重要的 - Cgroups 到底是什么? - Cgroups,或简称为 cgroups,是 Linux 内核的一个功能,负责资源分配(CPU 时间、内存、网络带宽、I/O)、优先级和计费(即容器使用了多少)。此外,除了是 Linux 的基本功能之外,Cgroups 还是容器的基础构建块,因此没有 Cgroups 就不会有容器。

正如其名称所示 - Cgroups 是组,所以它们将进程分组在父-子层次结构中,形成一棵树。例如,如果一个父级 cgroup 被分配了 128Mi 的 RAM,那么其所有子进程的总 RAM 使用量不能超过 128Mi。

这个层次结构存在于 /sys/fs/cgroup/ 目录下,它是 cgroupfs 文件系统。在那里你可以找到所有 Linux 进程的子树。在这里我们关注的是 Cgroups 如何影响调度以及分配给我们的 Kubernetes Pods 的资源,因此我们关心的是 kubepods.slice/:

/sys/fs/cgroup/
└── kubepods.slice/├── kubepods-besteffort.slice/│   └── ...├── kubepods-guaranteed.slice/│   └── ...└── kubepods-burstable.slice/└─