Kubernetes未指定resources时默认CPU/内存分配规则及查询方法
Kubernetes未指定资源配置的分配规则及查询方法
一、默认分配规则
Kubernetes本身没有全局统一的默认资源分配值,具体分配逻辑和Pod所在Namespace的配置有关:
- 如果Pod所在Namespace没有配置LimitRange:你给出的这个未指定
resources的Pod,不会被设置任何CPU、内存的requests(请求资源)和limits(上限资源)。调度阶段调度器不会统计该Pod的资源占用,启动后容器可以使用所在节点的全部可用CPU和内存资源,很容易出现节点资源耗尽、Pod被OOMKill的问题。 - 如果Pod所在Namespace配置了LimitRange:Kubernetes会自动为该Pod的容器注入LimitRange中定义的默认requests和limits值,不同Namespace可以配置不同的默认值。
二、查询Pod已分配资源的kubectl命令
1. 查看Pod配置的requests和limits
最常用的是describe命令,输出的Containers区块会明确显示资源配置:
kubectl describe pod static-web
如果只想单独提取资源配置,也可以用jsonpath直接输出:
kubectl get pod static-web -o jsonpath='{.spec.containers[*].resources}'
2. 查看Pod实际使用的资源
如果集群部署了metrics-server,可以用top命令查询实时资源占用:
kubectl top pod static-web
内容的提问来源于stack exchange,提问作者One Developer
相关产品推荐
相关产品推荐

