怎么调整Kubernetes的CPU和内存

发布时间:2021-07-20 00:17:46 作者:chen
来源:亿速云 阅读:449

本篇内容介绍了“怎么调整Kubernetes的CPU和内存”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

在Kubernetes中分配和管理CPU和内存资源可能很棘手,但也很容易。本文,我将向你展示什么是Kubernetes资源和限制以及如何管理它们。  
本文的目标是简单–如何帮助你快速调整项目中的Kubernetes资源信息,主要通过三种方式:  
1、为容器和 Pod 分配CPU和内存资源  
2、Resources Quota: 限制namespace的资源消耗  
3、Limit Ranges:配置默认的CPU请求和限制  

为容器和 Pod 分配CPU和内存资源

下图,解释了Kubernetes资源的度量单位,资源状态工作流以及如何使用资源限制。  

怎么调整Kubernetes的CPU和内存

CPU和内存单位

怎么调整Kubernetes的CPU和内存

Kubernetes 中的一个 cpu 等于:  
1、1 AWS vCPU  
2、1 GCP Core  
3、1 Azure vCore  
4、1 Hyperthread 在带有超线程的裸机 Intel 处理器上  
以下,Deployment使用了内存资源和CPU资源的请求和限制  
将CPU和内存 请求 (request)和内存 限制 (limit)分配给一个容器。  
我们保障容器拥有它请求数量的内存,但不允许使用超过限制数量的CPU和内存 。  
    
    apiVersion: apps/v1 
     
     kind: Deployment 
     
     metadata: 
     
     name: aks-application  
     
     spec: 
     
     replicas: 1 
     
     selector: 
     
     matchLabels: 
     
     app: aks-application 
     
     template: 
     
     metadata: 
     
     labels: 
     
     app: aks-application 
     
     spec: 
     
     containers: 
     
     - name: aks-application 
     
     image: hubname/aks-application-image:1.0.0  
     
     resources: 
     
     requests: 
     
     cpu: 100m  
     
     memory: 128Mi 
     
     limits: 
     
     cpu: 250m  
     
     memory: 256Mi
 
更详细的信息和代码段:  

Resources Quota: 限制namespace的资源消耗

资源配额,通过 ResourceQuota 对象来定义,对每个namespace的资源消耗总量提供限制。它可以限制namespace中某种类型的对象的总数目上限,也可以限制命令空间中的 Pod 可以使用的计算资源的总上限。  

怎么调整Kubernetes的CPU和内存

资源配额的工作方式如下:  
1、不同的团队可以在不同的namespace下工作,目前这是非约束性的,在未来的版本中可能会通过 ACL (Access Control List 访问控制列表) 来实现强制性约束。  
2、集群管理员可以为每个namespace创建一个或多个 ResourceQuota 对象。  
3、当用户在namespace下创建资源(如 Pod、Service 等)时,Kubernetes 的配额系统会 跟踪集群的资源使用情况,以确保使用的资源用量不超过 ResourceQuota 中定义的硬性资源限额。  
4、如果资源创建或者更新请求违反了配额约束,那么该请求会报错(HTTP 403 FORBIDDEN), 并在消息中给出有可能违反的约束。  
5、如果namespace下的计算资源 (如 cpu 和 memory)的配额被启用,则用户必须为 这些资源设定请求值(request)和约束值(limit),否则配额系统将拒绝 Pod 的创建。提示: 可使用 LimitRanger 准入控制器来为没有设置计算资源需求的 Pod 设置默认值。  

 
以下,是对持久卷声明和namespace资源的配额定义。  
    
    apiVersion: v1 
     
     kind: ResourceQuota 
     
     metadata: 
     
     name: backend-storage-quota 
     
     spec: 
     
     hard: 
     
     persistentvolumeclaims: "2" 
     
     requests.storage: "1Gi"    
     
     -- 
     
     apiVersion: v1 
     
     kind: ResourceQuota 
     
     metadata: 
     
     name: backend-namespace-quota 
     
     spec: 
     
     hard: 
     
     request.cpu: 400m 
     
     request.memory: 9600Mi 
     
     limits.cpu: 1200m 
     
     limits.memory: 11600Mi
 
你可以使用该kubectl apply命令来设置namespace的配额限制。  
    
    kubectl apply -f resource-quota.yaml — namespace backend
 
如何使用配额的详细说明,请参考
 

Limit Ranges:配置默认的CPU请求和限制

如果你的namespace有资源配额,那么默认内存限制是很有帮助的。  

怎么调整Kubernetes的CPU和内存

将 LimitRange 添加到namespace,不仅会限制cpu和内存,还会为存储请求大小强制设置最小值和最大值。存储是通过 PersistentVolumeClaim 来发起请求的。执行限制范围控制的准入控制器会拒绝任何高于或低于管理员所设阈值的 PVC。  
    
    apiVersion: v1 
     
     kind: LimitRange 
     
     metadata: 
     
     name: backend-limit-range 
     
     spec: 
     
     limits: 
     
     - default: 
     
     memory: 110Mi 
     
     cpu: 500m 
     
     defaultRequest: 
     
     memory: 20Mi 
     
     cpu: 100m 
     
     type: Container 
     
     -- 
     
     apiVersion: v1 
     
     kind: LimitRange 
     
     metadata: 
     
     name: backend-storage-limits 
     
     spec: 
     
     limits: 
     
     - type: PersistentVolumeClaim 
     
     max: 
     
     storage: 5Gi 
     
     min: 
     
     storage: 2Gi
 
更详细的信息和代码段。  

工具:管理Kubernetes的CPU和内存

你还可以将这些工具与 Datadog, Grafana + Prometeus,Azure Monitor结合使用,以改善资源并限制监视。  

总结

  1. 设置资源请求:获取有关特定应用程序/容器的CPU和内存使用情况的信息。
  2. 设置资源限制:运行负载测试以检测高负载下容器的CPU和内存。
  3. 监视容器的CPU和内存使用情况。
  4. 监视持久卷使用情况。
  5. 检查是否可以使用Limit Range应用资源限制
  6. 使用配额(不建议在生产环境中应用配额)

“怎么调整Kubernetes的CPU和内存”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

推荐阅读:
  1. 内存与CPU的关系
  2. CPU缓存和内存屏障

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

kubernetes

上一篇:Spark UDF的性能的特点是什么

下一篇:React中的任务饥饿行为是什么意思

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》