我正在Google kubernetes引擎上设置一个说 test-pod 的广告连播。当我部署Pod并使用Google控制台查看工作负载时,默认情况下可以看到100m CPU
已分配给Pod,但是看不到Pod消耗了多少内存。内存请求部分始终在此处显示0
。我知道我们可以在部署YAML中限制内存限制和初始分配。但是我想知道当通过YAML未指定任何值时,pod会分配多少默认内存,以及它可以使用的最大限制是什么?
答案 0 :(得分:3)
如果您的Pod上没有资源请求,则可以将其调度在任何地方,甚至是群集中最繁忙的节点,就好像您请求0个内存和0个CPU一样。如果没有资源限制,并且可以消耗其节点上的所有可用内存和CPU。
(如果不明显,那么现实的资源请求和限制是最佳实践!)
答案 1 :(得分:1)
使用metrics-server服务和kubectl top pod
命令可以看到Kubernetes容器的CPU和内存使用情况:
$ kubectl top --help
...
Available Commands:
...
pod Display Resource (CPU/Memory/Storage) usage of pods
...
下面的Minikube示例:
minikube addons enable metrics-server
# wait 5 minutes for metrics-server to be up and running
$ kubectl top pod -n=kube-system
NAME CPU(cores) MEMORY(bytes)
coredns-fb8b8dccf-6t5k8 6m 10Mi
coredns-fb8b8dccf-sjkvc 5m 10Mi
etcd-minikube 37m 60Mi
kube-addon-manager-minikube 17m 20Mi
kube-apiserver-minikube 55m 201Mi
kube-controller-manager-minikube 30m 46Mi
kube-proxy-bsddk 1m 11Mi
kube-scheduler-minikube 2m 12Mi
metrics-server-77fddcc57b-x2jx6 1m 12Mi
storage-provisioner 0m 15Mi
tiller-deploy-66b7dd976-d8hbk 0m 13Mi
This link有更多信息。
答案 2 :(得分:1)
您可以为单个吊舱设置限制
如果没有,则可以对整个名称空间设置限制
默认值,无限制
但是有一些滴答声:
这是一个非常不错的视图:
https://blog.balthazar-rouberol.com/allocating-unbounded-resources-to-a-kubernetes-pod
在Kubernetes集群中部署Pod时,通常有2个 资源分配方面的选择:
在pod级别定义CPU /内存资源请求和限制
在名称空间级别定义默认的CPU /内存请求和限制 使用LimitRange
从Docker文档中(假设您正在使用docker runtime):
默认情况下,容器没有资源限制,可以用作 主机内核调度程序允许的大部分给定资源
https://docs.docker.com/v17.09/engine/admin/resource_constraints/
答案 3 :(得分:0)
在许多情况下,真正的问题不是节点太小,而是我们没有为Pod准确指定资源限制。
使用containerSpec的resources属性在每个容器的基础上设置资源限制,containerSpec是类型为ResourceRequirements的v1 api对象。每个对象都为资源类型指定“ 限制”和“ 请求”。
如果您没有为容器指定内存限制,则适用以下情况之一:
容器在其使用的内存量上没有上限。容器可以使用运行节点上的所有可用内存,从而可以调用OOM Killer。此外,如果发生OOM Kill,那么没有资源限制的容器将有更大的机会被杀死。
容器在具有默认内存限制的命名空间中运行,并且自动为容器分配了默认限制。群集管理员可以使用 LimitRange 指定内存限制的默认值。
当您设置限制而不是请求时,kubernetes会将请求默认为限制。如果您从调度程序的角度考虑它,那是有道理的。
设置正确的资源请求很重要,将资源请求设置得太低会导致节点过载。太高会使节点陷入空闲状态。
有用的文章:memory-limits。
答案 4 :(得分:0)
Kubernetes不提供默认的默认资源限制。这意味着,除非您明确定义限制,否则容器将消耗无限的CPU和内存。
https://medium.com/@reuvenharrison/kubernetes-resource-limits-defaults-and-limitranges-f1eed8655474
答案 5 :(得分:0)
Kubernetes不提供默认的默认资源限制。这意味着除非您明确定义限制,否则您的容器将消耗无限的CPU和内存。
此处有更多详细信息:https://medium.com/@reuvenharrison/kubernetes-resource-limits-defaults-and-limitranges-f1eed8655474