【问题标题】:100m vs 1CPU in Kubernetes statefulset deployment difference100m vs 1CPU in Kubernetes statefulset 部署差异
【发布时间】:2022-02-22 03:22:59
【问题描述】:

我正在 Azure Kubernetes 服务中部署一些 pod。当我使用 100m 的 CPU 请求部署 pod 时,我可以看到 5 个 pod 正在运行。现在在这种状态下,我运行了一些性能测试并对我的结果进行基准测试。 现在我用 1 个 CPU 的 CPU 请求重新部署 pod 并再次运行相同的测试。我可以看到在这两种情况下都成功创建了 Pod,并且处于运行状态。 我不应该看到更好的性能结果吗?有人可以解释一下。下面是部署文件。第一次测试的CPU请求是100m,第二次是1。如果没有预期的性能差异,如何提高性能?

resources:
         limits:
            cpu: 3096m
            memory: 2Gi
         requests:
            cpu: 100m
            memory: 1Gi

【问题讨论】:

标签: docker kubernetes azure-aks


【解决方案1】:

CPU requestskube-scheduler 识别适合放置 pod 的最佳节点更为重要。如果您为每个工作负载设置CPU requests = 1,那么很快将没有更多容量来安排新的 Pod。

此外,为 pod 分配更多 CPU requests 并不意味着容器/应用程序会自动使用它。

另一方面,CPU limits 可以负责 Kubernetes 中的 CPU 节流,因为它们限制了 Pod 消耗 CPU 的时间。

Here 是一篇很棒的文章。

基本上有很多关于不限制 CPU 以避免内核节流的文章,但根据我的经验,节流 pod 比 pod 发疯并消耗节点的整个 CPU 更无害。所以我建议不要过度使用资源并设置 requests=limits。

您还可以查看节点的容量和分配的资源:

kubectl describe node <node>:

Capacity:
  cpu:                            4
  ephemeral-storage:              203070420Ki
  memory:                         16393308Ki
Allocatable:
  cpu:                            3860m
  ephemeral-storage:              187149698763
  memory:                         12899420Ki


Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  Resource                       Requests      Limits
  --------                       --------      ------
  cpu                            1080m (27%)   5200m (134%)
  memory                         1452Mi (11%)  6796Mi (53%)

【讨论】:

  • @Phlip Welz 谢谢。你能解释一下并行编程在这种情况下是如何工作的吗?
  • 这不是我的专长,但也许你会在这里找到一些东西:stackoverflow.com/questions/66185495/…
猜你喜欢
  • 2017-05-25
  • 1970-01-01
  • 2021-10-13
  • 2018-09-28
  • 1970-01-01
  • 2020-05-28
  • 2020-12-02
  • 2020-10-25
  • 2019-10-28
相关资源
最近更新 更多