【问题标题】:GKE Insufficient CPU for small Node.js app pods小型 Node.js 应用程序 pod 的 GKE CPU 不足
【发布时间】:2019-10-05 02:08:48
【问题描述】:

所以在 GKE 上,我有一个 Node.js app,每个 pod 都使用它:CPU(cores): 5m, MEMORY: 100Mi

但是,我只能为每个节点部署 1 个 pod。我正在使用 GKE n1-standard-1 集群,每个节点都有 1 vCPU, 3.75 GB

因此,为了获得总共 2 个 app 的 pod = CPU(cores): 10m, MEMORY: 200Mi,它需要另一个完整的 +1 节点 = 2 个节点 = 2 vCPU, 7.5 GB 才能使其工作。如果我尝试将这 2 个 pod 部署在同一个节点上,我会收到 insufficient CPU 错误。

我觉得我实际上应该能够在 f1-micro(1 个 vCPU,0.6 GB)或 f1-small(1 个 vCPU,1.7 GB)的 1 个节点上运行少量 pod 副本(例如 3 个或更多) ),而且我在这里过度配置,浪费我的钱。

但我不知道为什么我似乎受到insufficient CPU 的限制。我需要更改一些配置吗?任何指导将不胜感激。


Allocatable:
 cpu:                940m
 ephemeral-storage:  47093746742
 hugepages-2Mi:      0
 memory:             2702216Ki
 pods:               110
Non-terminated Pods:         (7 in total)
  Namespace                  Name                                                CPU Requests  CPU Limits  Memory Requests  Memory Limits
  ---------                  ----                                                ------------  ----------  ---------------  -------------
  default                    mission-worker-5cf6654687-fwmk4                     100m (10%)    0 (0%)      0 (0%)           0 (0%)
  default                    mission-worker-5cf6654687-lnwkt                     100m (10%)    0 (0%)      0 (0%)           0 (0%)
  kube-system                fluentd-gcp-v3.1.1-5b6km                            100m (10%)    1 (106%)    200Mi (7%)       500Mi (18%)
  kube-system                kube-dns-76dbb796c5-jgljr                           260m (27%)    0 (0%)      110Mi (4%)       170Mi (6%)
  kube-system                kube-proxy-gke-test-cluster-pool-1-96c6d8b2-m15p    100m (10%)    0 (0%)      0 (0%)           0 (0%)
  kube-system                metadata-agent-nb4dp                                40m (4%)      0 (0%)      50Mi (1%)        0 (0%)
  kube-system                prometheus-to-sd-gwlkv                              1m (0%)       3m (0%)     20Mi (0%)        20Mi (0%)
Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  Resource  Requests     Limits
  --------  --------     ------
  cpu       701m (74%)   1003m (106%)
  memory    380Mi (14%)  690Mi (26%)
Events:     <none>

【问题讨论】:

标签: node.js kubernetes google-cloud-platform google-kubernetes-engine


【解决方案1】:

部署完成后,用kubectl describe nodes查看节点容量。例如:在答案底部的代码示例中:

可分配cpu:1800m

已被 kube-system 命名空间中的 pod 使用:100m + 260m + +100m + 200m + 20m = 680m

这意味着 1800m - 680m = 1120m 留给你使用

因此,如果您的一个或多个 pod 请求超过 1120m cpu,它们将不适合此节点

因此,为了获得 2 个应用程序 pod,总共 = CPU(核心):10m,内存: 200Mi,它需要另一个完整的 +1 节点 = 2 个节点 = 2 个 vCPU,7.5 GB 让它工作。如果我尝试将这 2 个 pod 部署在同一个 节点,出现 CPU 不足错误。

如果您进行上述练习,您将找到答案。如果有足够的 cpu 供您的 pod 使用,但仍然出现 CPU 不足错误,请检查您是否正确设置了 cpu 请求和限制参数。见here

如果您做了上述所有操作,但仍然是一个问题。然后,我认为在您的情况下,可能发生的情况是您为节点应用程序分配了 5-10m cpu,而分配的 cpu 太少了。尝试将 CPU 增加到 50m。

我觉得我实际上应该能够运行一些 pod f1-micro 的 1 个节点上的副本(例如 3 个或更多副本)(1 个 vCPU,0.6 GB) 或 f1-small (1 vCPU, 1.7 GB),而且我的配置太多了 在这里,浪费我的钱。

再次,做上述练习以得出结论

Name:            e2e-test-minion-group-4lw4
[ ... lines removed for clarity ...]
Capacity:
 cpu:                               2
 memory:                            7679792Ki
 pods:                              110
Allocatable:
 cpu:                               1800m
 memory:                            7474992Ki
 pods:                              110
[ ... lines removed for clarity ...]
Non-terminated Pods:        (5 in total)
  Namespace    Name                                  CPU Requests  CPU Limits  Memory Requests  Memory Limits
  ---------    ----                                  ------------  ----------  ---------------  -------------
  kube-system  fluentd-gcp-v1.38-28bv1               100m (5%)     0 (0%)      200Mi (2%)       200Mi (2%)
  kube-system  kube-dns-3297075139-61lj3             260m (13%)    0 (0%)      100Mi (1%)       170Mi (2%)
  kube-system  kube-proxy-e2e-test-...               100m (5%)     0 (0%)      0 (0%)           0 (0%)
  kube-system  monitoring-influxdb-grafana-v4-z1m12  200m (10%)    200m (10%)  600Mi (8%)       600Mi (8%)
  kube-system  node-problem-detector-v0.1-fj7m3      20m (1%)      200m (10%)  20Mi (0%)        100Mi (1%)
Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  CPU Requests    CPU Limits    Memory Requests    Memory Limits
  ------------    ----------    ---------------    -------------
  680m (34%)      400m (20%)    920Mi (12%)        1070Mi (14%)

【讨论】:

猜你喜欢
  • 2018-12-26
  • 2018-11-15
  • 1970-01-01
  • 2020-06-02
  • 2013-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-02
相关资源
最近更新 更多