Kubernetes硬件资源定义及资源分配解析:1000m CPU与1024Mi内存含义
Kubernetes 硬件资源定义、分配逻辑详解
Hey there! Let's break down how Kubernetes handles CPU and memory resources—no overly technical jargon, just plain, relatable explanations.
一、资源的定义方式
在Kubernetes里,我们通过Pod配置中的resources字段来定义容器的CPU和内存需求,核心分为两个参数:requests(资源请求)和limits(资源限制)。
看个实际的Pod配置片段,一目了然:
apiVersion: v1 kind: Pod metadata: name: my-app-pod spec: containers: - name: main-app image: my-app-image resources: requests: cpu: "1000m" memory: "1024Mi" limits: cpu: "2000m" memory: "2048Mi"
简单解释:
requests:容器运行时必须保证能拿到的最小资源量,是Kubernetes调度Pod时的核心判断依据。limits:容器运行时绝对不能超过的资源上限,用来防止单个容器占用过多资源,影响集群里其他服务。
二、资源分配的通俗逻辑
把Kubernetes想象成公司的行政管理员,集群里的每个节点就是一间办公室,CPU是办公室里的办公工位,内存是每个人的储物柜:
- 当你提交Pod请求时,
requests就像你跟管理员说:“我至少需要1个工位和1个储物柜才能干活”。管理员会挨个检查办公室,找到还有空余工位和储物柜的房间,把你安排进去——这就是Kubernetes的调度过程,保证你有基础资源可用。 limits则是你和管理员的约定:“我最多用2个工位和2个储物柜”。就算办公室还有空工位,你也不能占更多;要是你东西太多把储物柜塞满了(内存超限),管理员会直接请你离开(触发OOM Kill);要是你占用工位太频繁(CPU超限),管理员会限制你使用工位的频率,不让你影响其他人办公。
三、具体单位含义:1000m CPU 和 1024Mi 内存
1000m CPU是什么意思?
Kubernetes里的CPU单位是毫核(m),1个物理CPU核心等于1000毫核。所以1000m就代表1个完整的CPU核心的计算能力:
- 如果是
requests: cpu: 1000m:意味着Kubernetes会为这个容器预留1核的算力,确保它随时能拿到这么多计算资源,不会被其他容器挤走。 - 如果是
limits: cpu: 1000m:这个容器最多只能使用1核的算力,就算节点还有空闲CPU,它也无法占用更多,防止过度消耗资源。
另外,你也可以用小数表示,比如0.5核就是500m,方便精细化分配小资源。
1024Mi内存是什么意思?
内存这里要注意Kubernetes用的是二进制单位,Mi是Mebibyte(兆二进制字节),和我们常说的MB(兆十进制字节)不一样:
1 Mi = 1024 × 1024 字节 = 1,048,576 字节
而1 MB = 1000 × 1000 字节 = 1,000,000 字节
所以1024Mi就等于1 Gi(Gibibyte),也就是我们日常说的“1G内存”(严格意义上的二进制1G):
- 如果是
requests: memory: 1024Mi:表示这个容器至少需要1Gi内存才能启动和运行,Kubernetes只会把它调度到有足够剩余内存的节点上。 - 如果是
limits: memory: 1024Mi:容器使用的内存一旦超过1Gi,Kubernetes就会触发OOM(内存溢出)机制,直接终止这个容器,避免它耗尽节点内存影响其他服务。
内容的提问来源于stack exchange,提问作者Amir Mehler
相关产品推荐
相关产品推荐

