轻松快速地调整Kubernetes的CPU和内存

在Kubernetes中分配和管理CPU和内存资源可能很棘手,但也很容易。本文,我将向你展示什么是Kubernetes资源和限制以及如何管理它们。

本文的目标是简单–如何帮助你快速调整项目中的Kubernetes资源信息,主要通过三种方式:

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

2、Resources Quota: 限制namespace的资源消耗

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

为容器和 Pod 分配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/v1kind: Deploymentmetadata:name: aks-application spec:replicas: 1selector:matchLabels:app: aks-applicationtemplate:metadata:labels:app: aks-applicationspec:containers:- name: aks-applicationimage: hubname/aks-application-image:1.0.0 resources:requests:cpu: 100m memory: 128Milimits:cpu: 250m memory: 256Mi

更详细的信息和代码段:

  • 将内存资源分配给容器和Pod

  • 将CPU资源分配给容器和Pod

  • Kubernetes最佳实践资源要求和限制

  • 应用程序开发人员在Azure Kubernetes Service(AKS)中管理资源的最佳实践

Resources Quota: 限制namespace的资源消耗

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

资源配额的工作方式如下:

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: v1kind: ResourceQuotametadata:name: backend-storage-quotaspec:hard:persistentvolumeclaims: "2"requests.storage: "1Gi"   --apiVersion: v1kind: ResourceQuotametadata:name: backend-namespace-quotaspec:hard:request.cpu: 400mrequest.memory: 9600Milimits.cpu: 1200mlimits.memory: 11600Mi

你可以使用该kubectl apply命令来设置namespace的配额限制。

kubectl apply -f resource-quota.yaml — namespace backend

如何使用配额的详细说明,请参考

  • https://kubernetes.io/docs/concepts/policy/resource-quotas/

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

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

将 LimitRange 添加到namespace,不仅会限制cpu和内存,还会为存储请求大小强制设置最小值和最大值。存储是通过 PersistentVolumeClaim 来发起请求的。执行限制范围控制的准入控制器会拒绝任何高于或低于管理员所设阈值的 PVC。

apiVersion: v1kind: LimitRangemetadata:name: backend-limit-rangespec:limits:- default:memory: 110Micpu: 500mdefaultRequest:memory: 20Micpu: 100mtype: Container--apiVersion: v1kind: LimitRangemetadata:name: backend-storage-limitsspec:limits:- type: PersistentVolumeClaimmax:storage: 5Gimin:storage: 2Gi

更详细的信息和代码段。

  • 为namespace配置默认的 CPU 请求和限制

  • 限制名称空间的存储使用量

  • Kubernetes中的 Limit Range

工具:管理Kubernetes的CPU和内存

  • Popeye 会扫描集群中是否存在与配置,资源和网络漏洞有关的问题,并生成有关所有问题的详细报告。

  • Goldilocks 扫描Pod中的资源限制,并使用建议的资源创建报告。

  • Kube-advisor 来自Azure团队的工具,可扫描容器中缺少的资源并限制请求。

  • K9s+benchmark 提供了一个命令行界面(CLI),使你可以轻松地管理,监视甚至对 你喜欢的终端软件中的集群进行基准测试

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

总结

  1. 设置资源请求:获取有关特定应用程序/容器的CPU和内存使用情况的信息。

  2. 设置资源限制:运行负载测试以检测高负载下容器的CPU和内存。

  3. 监视容器的CPU和内存使用情况。

  4. 监视持久卷使用情况。

  5. 检查是否可以使用Limit Range应用资源限制

  6. 使用配额(不建议在生产环境中应用配额)

文中更详细代码片段,参考链接:

https://www.kubernetes.org.cn/8858.html

END

精彩文章推荐

安装kubernetes集群-灵活安装k8s各个版本高可用集群

Prometheus+Grafana+Alertmanager搭建全方位的监控告警系统-超详细文档

linux架构师成长路线图:如何从月薪3千涨到月薪3万

k8s+SpringCloud+DevOps全栈技术解读

基于Jenkins共享库实践之自定义通知器

Kubernetes将弃用Docker,不必恐慌

手把手教你使用 Jenkins 配合 Github hook 持续集成

5个维度对 Kubernetes 集群优化

Docker+k8s+DevOps企业级架构师成长路线图

开源API网关Kong基本介绍和安装验证

Red Hat通过整合Ansible来提升Kubernetes集群管理能力

K8s自动扩缩容工具KEDA发布2.0版本,全面升级应用扩展能力

应该监控哪些Kubernetes健康指标?

技术交流

为了大家更快速的学习知识,掌握技术,随时沟通交流问题,特组建了技术交流群,大家在群里可以分享自己的技术栈,抛出日常问题,群里会有很多大佬及时解答的,这样我们就会结识很多志同道合的人,长按或者扫描下图二维码可加我微信,备注运维或者k8s或者devops即可进群,让我们共同的努力,向着美好的未来出发吧~~~,想要免费获取linux、k8s、DevOps、Openstack、Openshift、运维、开发、测试、架构师、Python、Go、面试文档、容器、岗位内推等资料也可进群获取哈~~    

微信: luckylucky421302

好课推荐

kubernetes/k8s+SpringCloud全栈技术:基于世界500强的企业实战课程


微信公众号



点击阅读原文即可了解更多信息

       

       

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值