资源管理

资源管理

* 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。

posted @   立勋  阅读(13)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示