Pod的请求的资源和限制,指的是CPU和内存,目前在k8s上仅有的受支持的两种类型。

CPU属于可压缩(compressible)型资源,即资源额度可按需收缩。

内存则是不可压缩型资源,对其执行收缩操作可能会导致某种程度的问题。

资源隔离尚且属于容器级别,CPU和内存资源的配置需要在Pod中的容器上运行;

requests 定义其请求的确保可用值,即容器运行可能用不到这些额度的资源,但用到时必须要确保有如此多的资源可用;

limits 用于限制资源可用的最大值,即硬限制。
 

容器资源需求(requests)及资源限制(limits)示意图

资源请求和限制的单位
在Kubernets系统上,1个单位的CPU相当于虚拟机上的一颗虚拟CPU(vCPU)或物理机上的一个超线程(Hyperthread,或称为一个逻辑CPU),它支持分数计量方式,一个核心(1 core)相当于1000个微核心(millicores),因此500m相当于是0.5个核心,即二分之一个核心。
内存的计量方式与日常使用方式相同,默认单位是字节,也可以使用十进制E、P、T、G、M和K作为单位后缀,或二进制Ei、Pi、Ti、Gi、Mi和Ki形式的单位后缀。

十进制和二进制的对比:

1 KB(KiloByte) = 1000Bytes = 8000 Bits

1 KiB(KibiByte)= 2的10次方Bytes = 1024 Bytes = 8192 Bits。

举个栗子:

apiVersion: v1

kind: Pod

metadata:

  name: frontend

spec:

  containers:

  - name: db

    image: mysql

    resources:

      requests:

        memory: "64Mi"

        cpu: "250m"

      limits:

        memory: "128Mi"

        cpu: "500m"

  - name: wp

    image: wordpress

    resources:

      requests:

        memeory: "64Mi"

        cpu: "250m"

      limits:

        memory: "128Mi"

        cpu: "500m"

 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐