简介

在编排容器的时候,需要分配资源的使用。

默认pod资源是没有限制的,这样子会导致节点的资源可能被耗尽,引起多个pod出现问题。

手动分配好pod的资源使用,可以更好地利用机器的资源,也可以让hpa有一个标准,来动态扩容pod。

资源分配

在编排pod的时候,可以使用sepc.resources中配置资源限制。

一般限制的是CPU和内存的使用,也支持存储等其他资源。

资源限制有两种:

  • request:即运行Pod的节点必须满足运行Pod的最基本需求才能运行Pod。
  • limits:即运行Pod期间,可能内存使用量会增加,那最多能使用多少内存,这就是资源限额。

request可以保证pod运行的时候,有最基础的资源保证;limit限制了pod最大能使用的资源,如果是内存超过limit就会出现OOM。

中央处理器资源单元

对 CPU 资源的限制和请求以 CPU 单元为单位进行度量。

在 Kubernetes 中,1 个 CPU 单元相当于 1 个物理 CPU 核心或 1 个虚拟核心。

1 CPU = 1000 mCPU

mCPU不支持小数,只能是整数。

内存资源单位

单位必须是整数,可以使用单位是:E、P、T、G、M、k,可以用 2 的幂数:Ei、Pi、Ti、Gi、Mi、Ki。

设置资源

        resources:
          requests:
            memory: 200Mi
            cpu: 100m
          limits:
            memory: 300Mi
            cpu: 150m

limit和request设置多少合适呢?

设置多少可以根据不同的应用类型进行设置。

request可以保证基础的资源,集群调度pod的时候会更加合理。

limit可以略大于request,可以防止突增请求,hpa在扩容的时候需要有一个标准,这个标准就是limit。

所以在设置limit之后,也可以设置hpa动态扩容pod,来防止业务短时增长导致请求处理不过来。