我有 6 个单核 google 节点,kube-system pod 占用了太多 CPU。
default scylla-2 200m (21%) 500m (53%) 1Gi (38%) 1Gi (38%)
kube-system fluentd-gcp-v2.0.9-p9pvs 100m (10%) 0 (0%) 200Mi (7%) 300Mi (11%)
kube-system heapster-v1.4.3-dcd99c9f8-n6wb2 138m (14%) 138m (14%) 301856Ki (11%) 301856Ki (11%)
kube-system kube-dns-778977457c-gctgs 260m (27%) 0 (0%) 110Mi (4%) 170Mi (6%)
kube-system kube-dns-autoscaler-7db47cb9b7-l9jhv 20m (2%) 0 (0%) 10Mi (0%) 0 (0%)
kube-system kube-proxy-gke-scylla-default-pool-f500679a-7dhh 100m (10%) 0 (0%) 0 (0%) 0 (0%)
kube-system kubernetes-dashboard-6bb875b5bc-n4xsm 100m (10%) 100m (10%) 100Mi (3%) 300Mi (11%)
kube-system l7-default-backend-6497bcdb4d-cncr4 10m (1%) 10m (1%) 20Mi (0%) 20Mi (0%)
kube-system tiller-deploy-dccdb6fd9-7hd2s 0 (0%) 0 (0%) 0 (0%) 0 (0%)
是否有简单的方法可以将所有 kube-system pod 的 CPU 请求/限制降低 10 倍?
我知道内存需要正常运行,但 CPU 可以降低,而在开发环境中不会出现任何重大问题。如果 DNS 的运行速度慢 10 倍会发生什么?对于单系统 dns pod 来说 27% 的节点太多了。
作为同级 文档 要指定容器的 CPU 请求,请在容器的资源清单中包含 resources:requests 字段。要指定 CPU 限制,请包含 resources:limits 请参阅下面的示例:
apiVersion: v1
kind: Pod
metadata:
name: cpu-demo
namespace: cpu-example
spec:
containers:
- name: cpu-demo-ctr
image: vish/stress
resources:
limits:
cpu: "1"
requests:
cpu: "0.5"
args:
- -cpus
- "2"
在 GCP Kubernetes 中,一个 cpu 相当于:1 个 GCP Core。 Pod 的 CPU 限制是 Pod 中所有容器的 CPU 限制之和。
Pod 调度是基于请求的。仅当节点有足够的可用 CPU 资源来满足 Pod 的 CPU 请求时,Pod 才会被安排在节点上运行。
您可以创建默认的 cpu-request-limit 清单并将其应用到 kube-system 命名空间:
现在,如果在 kube-system 命名空间中创建了一个容器,并且该容器没有指定自己的 CPU 请求和 CPU 限制值,则该容器将获得默认的 CPU 请求 0.5 和默认的 CPU 限制 1。
如果像我一样,您被困在一个 CPU 请求已经达到最大的节点上,并且没有足够的资源来部署垂直自动扩展,一种方法是部署一个具有缩减的 CPU 请求的自定义 kube-dns。 https://cloud.google.com/kubernetes-engine/docs/how-to/custom-kube-dns#scaling_down_kube-dns