当 CPU 使用率受策略限制时,kubernetes pod 使用多少个内核?

Shi*_*r G 12 gunicorn kubernetes google-kubernetes-engine

Kubernetes 允许限制 pod 资源的使用。

requests:
  cpu: 100m
  memory: 128Mi
limits:
  cpu: 200m   # which is 20% of 1 core
  memory: 256Mi
Run Code Online (Sandbox Code Playgroud)

比方说,我kubernetes节点有2个核心。我在此节点上以 CPU 限制运行此 pod:200m。在这种情况下,我的 pod 会使用它的底层节点的1Core 的 200m还是2Core 的 100m+100m

我的gunicorn 工人的编号公式或 nginx 工人的编号等需要此计算。在 gunicorn 文档中它说

通常我们建议 (2 x $num_cores) + 1 作为开始的工作人员数量。

那么我应该使用 5 个工人吗?(我的节点有 2 个内核)。或者这甚至无关紧要,因为我的 pod 只分配了 200m cpu,我应该考虑我的 pod 有 1 个核心?

TLDR:当 Pod 的 CPU 使用率受 Kubernetes 限制时,Pod 使用多少个内核?如果我top在 pod 内运行,我会看到 2 个可用内核。但我不确定我的应用程序是使用这个 2 核的 10%+10% 还是 1core 的 20%..

Raj*_*nde 7

它将限制为一个核心的 20%,即 200m。此外,limit意味着一个 pod 最多可以接触那么多 CPU,仅此而已。因此 pod CPU 利用率不会总是达到极限。

集群的总 CPU 限制是集群中存在的所有节点使用的内核总数。

如果你有一个 2 节点集群,第一个节点有 2 个核心,第二个节点有 1 个核心,那么 K8s CPU 容量将是 3 个核心(2 核心 + 1 核心)。如果您有一个请求 1.5 个内核的 pod,那么它不会被调度到第二个节点,因为该节点的容量只有 1 个内核。它将被安排到第一个节点,因为它有 2 个核心。