调整Kubernetes的CPU和内存

知识库容器技术kubernetes实战kubernetes大约 3 分钟

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

  • 为容器和 Pod 分配 CPU 和内存资源
  • Resources Quota: 限制 namespace 的资源消耗
  • Limit Ranges:配置默认的 CPU 请求和限制

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

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

CPU 和内存单位

Kubernetes 中的一个 cpu 等于:

  • 1 AWS vCPU
  • 1 GCP Core
  • 1 Azure vCore
  • 1 Hyperthread 在带有超线程的裸机 Intel 处理器上

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 设置默认值。

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

工具:管理 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.htmlopen in new window