kubernetes pods 在 CPU 使用受政策限制时使用多少个内核?
How many cores do kubernetes pods use when it's CPU usage is limited by policy?
Kubernetes 允许限制 pod 资源使用。
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 200m # which is 20% of 1 core
memory: 256Mi
假设我的 kubernetes 节点有 2 个核心。我 运行 这个节点的限制为 CPU: 200m。在这种情况下,我的 pod 会使用它的底层节点的 1Core 的 200m 还是 2Core 的 100m+100m?
我的 gunicorn worker's number formula 或 nginx worker 的编号等需要此计算。
在 gunicorn 文档中它说
Generally we recommend (2 x $num_cores) + 1 as the number of workers
to start off with.
那么我应该使用 5 个工人吗? (我的节点有 2 个核心)。还是因为我的 pod 只分配了 200m cpu 并且我应该认为我的 pod 有 1 个核心?
TLDR: 当 cpu 的使用受到 kubernetes 限制时,pods 使用多少个内核?如果我 运行 top
inside pod,我会看到 2 个核心可用。但是我不确定我的应用程序是使用这个 2 核的 10%+10% 还是 1 核的 20%..
它将限制为一个核心的20%,即200m。此外,limit
意味着一个 pod 最多可以触及那么多 CPU,不能再多了。所以 pod CPU 利用率不会总是达到极限。
集群的总 CPU 限制是集群中存在的所有节点使用的内核总数。
如果你有一个 2 节点集群,第一个节点有 2 个核心,第二个节点有 1 个核心,K8s CPU 容量将为 3 个核心(2 个核心 + 1 个核心)。如果您有一个请求 1.5 个核心的 pod,那么它不会被调度到第二个节点,因为该节点的容量只有 1 个核心。它将被安排到第一个节点,因为它有 2 个核心。
CPU 以称为毫核的单位进行测量。集群中的每个节点都会检查操作系统以确定节点上的 CPU 个内核数量,然后将该值乘以 1000 以表示其总容量。例如,如果一个节点有 2 个核心,则该节点的 CPU 容量将表示为 2000m。如果要使用单核的 1/10,则表示为 100m。
因此,如果您在集群中提供了 200m
毫核,那么它将坚持使用一个核心并占据该核心的 20%。现在,如果您提供另一个 pod 1.5m
,那么只有它会占用多个核心。
Kubernetes 允许限制 pod 资源使用。
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 200m # which is 20% of 1 core
memory: 256Mi
假设我的 kubernetes 节点有 2 个核心。我 运行 这个节点的限制为 CPU: 200m。在这种情况下,我的 pod 会使用它的底层节点的 1Core 的 200m 还是 2Core 的 100m+100m?
我的 gunicorn worker's number formula 或 nginx worker 的编号等需要此计算。 在 gunicorn 文档中它说
Generally we recommend (2 x $num_cores) + 1 as the number of workers to start off with.
那么我应该使用 5 个工人吗? (我的节点有 2 个核心)。还是因为我的 pod 只分配了 200m cpu 并且我应该认为我的 pod 有 1 个核心?
TLDR: 当 cpu 的使用受到 kubernetes 限制时,pods 使用多少个内核?如果我 运行 top
inside pod,我会看到 2 个核心可用。但是我不确定我的应用程序是使用这个 2 核的 10%+10% 还是 1 核的 20%..
它将限制为一个核心的20%,即200m。此外,limit
意味着一个 pod 最多可以触及那么多 CPU,不能再多了。所以 pod CPU 利用率不会总是达到极限。
集群的总 CPU 限制是集群中存在的所有节点使用的内核总数。
如果你有一个 2 节点集群,第一个节点有 2 个核心,第二个节点有 1 个核心,K8s CPU 容量将为 3 个核心(2 个核心 + 1 个核心)。如果您有一个请求 1.5 个核心的 pod,那么它不会被调度到第二个节点,因为该节点的容量只有 1 个核心。它将被安排到第一个节点,因为它有 2 个核心。
CPU 以称为毫核的单位进行测量。集群中的每个节点都会检查操作系统以确定节点上的 CPU 个内核数量,然后将该值乘以 1000 以表示其总容量。例如,如果一个节点有 2 个核心,则该节点的 CPU 容量将表示为 2000m。如果要使用单核的 1/10,则表示为 100m。
因此,如果您在集群中提供了 200m
毫核,那么它将坚持使用一个核心并占据该核心的 20%。现在,如果您提供另一个 pod 1.5m
,那么只有它会占用多个核心。