![](/img/trans.png)
[英]How to get usage metrics for Kubernetes pods on GKE from external node.js script
[英]GKE Insufficient CPU for small Node.js app pods
所以在GKE上我有一個Node.js app
,每個pod使用的: CPU(cores): 5m, MEMORY: 100Mi
但是我只能為每個節點部署一個pod。 我使用的是GKE n1-standard-1
集群,每個節點有1 vCPU, 3.75 GB
。
因此,為了獲得2個app
總數= CPU(cores): 10m, MEMORY: 200Mi
,它需要另外整個+1節點= 2個節點= 2 vCPU, 7.5 GB
才能使其工作。 如果我嘗試在同一個節點上部署這兩個pod,我的insufficient CPU
錯誤就會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>
部署后,使用kubectl describe nodes
檢查節點容量。 例如:在答案底部的代碼示例中:
可分配的CPU:1800米
已經被kube-system命名空間中的pod使用:100m + 260m + + 100m + 200m + 20m = 680m
這意味着1800m - 680m = 1120m留給您使用
因此,如果您的pod或pod請求超過1120m cpu,它們將不適合此節點
因此,為了獲得2個應用程序總數= CPU(核心):10米,MEMORY:200Mi,它需要另外整個+1節點= 2個節點= 2個vCPU,7.5 GB才能使其工作。 如果我嘗試在同一個節點上部署這兩個pod,我的CPU錯誤就會不足。
如果您進行上述練習,您將找到答案。 如果你的pod有足夠的CPU使用,你仍然沒有足夠的CPU錯誤,檢查你是否正在設置cpu請求並正確限制params。 看到這里
如果你做了以上所有,仍然是一個問題。 然后,我認為在你的情況下,可能發生的是你為你的節點應用程序分配5-10m cpu,這是太少的CPU分配。 嘗試增加可能是50米CPU。
我有一種感覺,我實際上應該能夠在f1-micro(1個vCPU,0.6 GB)或f1-small(1個vCPU,1.7 GB)的1個節點上運行一些pod復制品(如3個復制品和更多復制品),並且我在這里過度供應,浪費我的錢。
再次,做上面描述的練習得出結論
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%)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.