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%..
它将限制为一个核心的 20%,即 200m。此外,limit意味着一个 pod 最多可以接触那么多 CPU,仅此而已。因此 pod CPU 利用率不会总是达到极限。
集群的总 CPU 限制是集群中存在的所有节点使用的内核总数。
如果你有一个 2 节点集群,第一个节点有 2 个核心,第二个节点有 1 个核心,那么 K8s CPU 容量将是 3 个核心(2 核心 + 1 核心)。如果您有一个请求 1.5 个内核的 pod,那么它不会被调度到第二个节点,因为该节点的容量只有 1 个内核。它将被安排到第一个节点,因为它有 2 个核心。