k8s中是如何计算pod的计算资源(cpu和内存)的requests和limits值的?

发布时间 2023-11-14 13:59:30作者: Zhai_David

1、结论

 

对于pod来说,cpu和内存的requests和limits的值,等于pod中所有容器的requests和limits的值的总和。

 

具体来说:

  • pod的requests的大小,等于所有的容器的requests的大小的和,如果某个容器没有设置requests,则这个值是0.
  • pod的limits的值的大小,等于所有容器的limits的值的大小的和,如果某个容器没有设置limits,则这个值是0.

 

2、实验验证

 

  • 查看某个pod的资源设置
kubectl get pod -n yonbip dev-am-manage-65c7497b7d-d8h7b -o yaml

 

此时,pod中只有一个容器。

 

  • 查看pod所在的主机

 

  • 然后,查看主机的资源情况
    kubectl describe nodes node-tr4lbi5hw7uwapyy 

     

通过这个查询结果,可以看到,pod中cpu和内存的requests和limits的设置:

  • cpu的requests:100m
  • cpu的limits:1
  • 内存的request:1Gi
  • 内存的limits:2Gi

 

  • 在这个pod中,增加一个容器,并且设置资源限制的参数

  • 待容器运行后,查看pod级别资源的设置

 

通过以上的查询结果,可以知道pod的requests和limits值的设置如下:

  • cpu requests:300m
  • cpu limits:2
  • memory requests:2Gi
  • memory limits:5Gi

 

得到的结果,正好是pod中两个容器对应的资源的和。

 

实验的验证结果和上面的结论是一致的。