资源管理
* Pod的两个重要参数:CPU Request与Memory Request。
为了避免系统挂掉,该Node会选择“清理”一些Pod来释放资源,Kubernetes中该保障机制的核心如下。
* 通过资源限额来确保不同的Pod只能占用指定的资源。
* 允许集群的资源被超额分配,以提高集群的资源利用率。
* 为Pod划分等级,确保不同等级的Pod有不同的服务质量(QoS),资源不足时,低等级的Pod会被清理,以确保高等级的Pod稳定运行。
对应到Kubernetes的Pod容器上,就是下面这4个参数:
* spec.container[].resources.requests.cpu
* spec.container[].resources.limits.cpu
* spec.container[].resources.requests.memory
* spec.container[].resources.limits.memory
limits对应资源量的上限
CPU资源是可压缩的,进程无论如何也不可能突破上限,因此设置起来比较容易
Memory资源是不可压缩的,如果设置得小了,当进程在业务繁忙期试图请求超过Limit限制的Memory时,此进程就会被Kubernetes杀掉。因此,Memory的Request与Limit的值需要结合进程的实际需求谨慎设置。
Kubernetes提供了两个对象:LimitRange及ResourceQuota,前者解决request与limit参数的默认值和合法取值范围等问题,后者则解决约束租户的资源配额问题。
Requests和Limits只能被设置到容器上,Kubernetes的计算资源单位是大小写敏感的
* CPU的Requests和Limits是通过CPU数(cpus)来度量的
* Memory的Requests和Limits计量单位是字节数。国际单位制包括十进制的E、P、T、G、M、K、m,或二进制的Ei、Pi、Ti、Gi、Mi、Ki。KiB与MiB是以二进制表示的字节单位,常见的KB与MB则是以十进制表示的字节单位,比如:
* 1 KB(KiloByte)= 1000 Bytes = 8000 Bits;
* 1 KiB(KibiByte)= 2^10 Bytes = 1024 Bytes = 8192 Bits。
标签:Kubernetes,spec,资源管理,Memory,Pod,CPU,资源
From: https://www.cnblogs.com/lixunblogs/p/18167071