Kubernetes中设置 CPU 的 requests 和 limits详解

在Kubernetes中,CPURequests用于设定资源保证和调度依据,而Limits则设定资源上限以防止过度消耗。应始终设置Requests以优化调度,而对于Limits的设置则视应用需求,以确保稳定性和性能。可以基于应用监控数据或使用VerticalPodAutoscaler来确定合适的值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、概 述

在 Kubernetes 中,我应该如何设置 CPU 的 requests 和 limits?

热门答案包括:

  • 始终使用 limits !

  • 永远不要使用 limits,只使用 requests !

  • 都不用;可以吗?

2、让我们深入研究它

在 Kubernetes 中,您有两种方法来指定一个 pod 可以使用多少 CPU:

  1. Requests 通常用于确定平均消耗。

  2. Limits 设置允许的最大资源数。

Kubernetes 调度器使用 requests 来确定 pod 应该分配到集群中的哪个节点。

由于调度器并不知道实际消耗(pod 尚未启动),它需要一个提示。

但它并没有就此结束。

CPU requests 还用于将同一个节点上的 CPU 资源如何分配给不同的容器。

3、让我们看一个例子:

  • 一个节点只有一个 CPU。

  • 容器 A requests 0.1 个 vCPU。

  • 容器 B requests 0.2 个 vCPU。

当两个容器都尝试使用 100% 的可用 CPU 时会发生什么?

图2 :两个容器的 CPU 使用率

由于 CPU 请求不限制消耗,因此两个容器都将使用所有可用的 CPU。

但是,由于容器 B 的请求与另一个相比增加了一倍,因此最终的 CPU 分配是:容器 1 使用 0.3vCPU,另一个使用 0.6vCPU(双倍数量)

4、Requests 适用于:

  • 设置基准(给我至少 X 数量的 CPU)。

  • 设置 pod 之间的关系(这个 pod A 使用的 CPU 是另一个的两倍)。

但不影响硬性限制。

为此,您需要 CPU limits。

5、设置 CPU limits 其实是定义了 period 周期和 quota 配额

例如:

  • 周期:100000 微秒 (0.1s)。

  • 配额:10000 微秒 (0.01s)。

我只能每 0.1 秒使用 CPU 0.01 秒。

这也缩写为“100m”。

6、如果你的容器有硬限制并且想要更多的 CPU,它必须等待下一个周期。

您的进程受到限制。

那么您应该在 Pod 中如何设置 CPU requests 和 limits?

一种简单(但不准确)的方法是将最小的 CPU 单元计算为:

REQUEST = NODE_CORES * 1000 / MAX_NUM_PODS_PER_NODE

对于 1 个 vCPU 节点和 10 个 Pod ,最小单元就是 1 * 1000 / 10 = 100Mi

7、将最小单位或其乘数分配给您的容器。

将 CPU 请求分配给 Pod 和容器

例如,如果您不知道 Pod A 需要多少 CPU,但您确定它是 Pod B 的两倍,您可以设置:

  • Request A:1 个单元

  • Request B:2 个单位

如果容器使用 100% CPU,它们将根据它们的权重 (1:2) 重新分配 CPU。

8、更好的方法是监控应用程序并得出平均 CPU 利用率。

您可以使用现有的监控基础设施来完成此操作,或者使用 Vertical Pod Autoscaler 来监视并报告平均请求值。

你应该如何设置 limits?

  1. 您的应用可能已经有“硬性”限制。(例如单线程的应用即使分配了 2 个核,也最多只使用 1 个核)。

  2. 你可以设置:limit = 99th 分位数 + 30–50%。

您应该分析应用程序(或使用 VPA)以获得更详细的答案。

9、您应该始终设置 CPU requests 吗?

绝对没错。

这是 Kubernetes 中的标准良好实践,可帮助调度器更有效地分配 pod。

您应该始终设置 CPU limits 吗?

这有点争议,我是这么认为的。

你可以进行更深入的了解:https://dnastacio.medium.com/why-you-should-keep-using-cpu-limits-on-kubernetes-60c4e50dfc61

智能网联汽车的安全员高级考试涉及多个方面的专业知识,包括但不限于自动驾驶技术原理、车辆传感器融合、网络安全防护以及法律法规等内容。以下是针对该主题的一些核心知识解析: ### 关于智能网联车安全员高级考试的核心内容 #### 1. 自动驾驶分级标准 国际自动机工程师学会(SAE International)定义了六个级别的自动驾驶等级,从L0到L5[^1]。其中,L3及以上级别需要安全员具备更高的应急处理能力。 #### 2. 车辆感知系统的组成与功能 智能网联车通常配备多种传感器,如激光雷达、毫米波雷达、摄像头和超声波传感器等。这些设备协同工作以实现环境感知、障碍物检测等功能[^2]。 #### 3. 数据通信与网络安全 智能网联车依赖V2X(Vehicle-to-Everything)技术进行数据交换,在此过程中需防范潜在的网络攻击风险,例如中间人攻击或恶意软件入侵[^3]。 #### 4. 法律法规要求 不同国家和地区对于无人驾驶测试及运营有着严格的规定,考生应熟悉当地交通法典中有关自动化驾驶部分的具体条款[^4]。 ```python # 示例代码:模拟简单决策逻辑 def decide_action(sensor_data): if sensor_data['obstacle'] and not sensor_data['emergency']: return 'slow_down' elif sensor_data['pedestrian_crossing']: return 'stop_and_yield' else: return 'continue_driving' example_input = {'obstacle': True, 'emergency': False, 'pedestrian_crossing': False} action = decide_action(example_input) print(f"Action to take: {action}") ``` 需要注意的是,“同学”作为特定平台上的学习资源名称,并不提供官方认证的标准答案集;建议通过正规渠道获取教材并参加培训课程来准备此类资格认证考试
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

力哥讲技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值