数智资源网
首页 首页 大数据 查看内容

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

木马童年 2021-2-21 13:00 46 0

在Kubernetes中分配和管理CPU和内存资源可能很棘手,但也很容易。本文,我将向你展示什么是Kubernetes资源和限制以及如何管理它们。本文的目标是简单–如何帮助你快速调整项目中的Kubernetes资源信息,主要通过三种 ...

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

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

本文的目标是简单–如何帮助你快速调整项目中的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

更详细的信息和代码段:

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

将CPU资源分配给容器和Pod

Kubernetes较佳实践资源要求和限制

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

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

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

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

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

更详细的信息和代码段。

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

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

Kubernetes中的 Limit Range

工具:管理Kubernetes的CPU和内存

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

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

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

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

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

总结

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

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

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

监视持久卷使用情况。

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

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

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

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

声明:文章收集于网络,版权归原作者所有,为传播信息而发,如有侵权,请联系小编删除,谢谢!

欢迎加入本站公开兴趣群

软件开发技术群

兴趣范围包括:Java,C/C++,Python,PHP,Ruby,shell等各种语言开发经验交流,各种框架使用,外包项目机会,学习、培训、跳槽等交流

QQ群:26931708

应用程序 计算资源 框架
0
为您推荐
HIVE数据仓库完美实战课程,资源教程下载

HIVE数据仓库完美实战课程,资源教程下载

课程名称【快速掌握HIVE视频教程】HIVE数据仓库完美实战课程课程目录├第一周:hive基…...

尚硅谷大数据Flink技术与实战,资源教程下载

尚硅谷大数据Flink技术与实战,资源教程下载

课程名称尚硅谷大数据Flink技术与实战课程目录理论_Flink基础 001__Flink理论_Flink…...

廖雪峰-2019大数据分析精品资料价值1980元,资源教程下载

廖雪峰-2019大数据分析精品资料价值1980元,资源教程

课程介绍:廖雪峰大神历时3个月打磨出来的《数据分析必备技能》的视频学习资料,由浅…...

尚硅谷-大数据项目之电商数仓教程下载

尚硅谷-大数据项目之电商数仓教程下载

课程介绍:本课程以国内电商巨头实际业务应用场景为依托,对电商数仓的常见实战指标以…...

小码哥李明杰Java版《恋上数据结构与算法》 ,资源教程下载

小码哥李明杰Java版《恋上数据结构与算法》 ,资源教

课程目录01-学前须知01-为什么要学习数据结构与算法02-编程语言的选择03-课程大纲04-…...

阿里云大数据分析师ACP认证视频教程下载

阿里云大数据分析师ACP认证视频教程下载

课程介绍阿里云大数据行业认证-大数据分析师认证(ACP-Alibaba Cloud Certified Prof…...

恋上数据结构与算法(第二季),视频教程下载

恋上数据结构与算法(第二季),视频教程下载

课程介绍:课程由MJ老师和名企算法大咖共同研发,在保证易懂的同时确保课程的系统全面…...

社交网络分析与挖掘,视频教程下载

社交网络分析与挖掘,视频教程下载

课程介绍:社交网络和数据挖掘是计算机学科相关研究中的热点,其具体研究涵盖理论、关…...