Kubernetes中设置 CPU 的 requests 和 limits详解

这篇具有很好参考价值的文章主要介绍了Kubernetes中设置 CPU 的 requests 和 limits详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

k8s requests,k8s,云原生,kubernetes,java,运维

1、概 述

在 Kubernetes 中,我应该如何设置 CPU 的 requests 和 limits?

热门答案包括:

  • 始终使用 limits !

  • 永远不要使用 limits,只使用 requests !

  • 都不用;可以吗?

2、让我们深入研究它

在 Kubernetes 中,您有两种方法来指定一个 pod 可以使用多少 CPU:

  1. Requests 通常用于确定平均消耗。

  2. Limits 设置允许的最大资源数。

Kubernetes 调度器使用 requests 来确定 pod 应该分配到集群中的哪个节点。

由于调度器并不知道实际消耗(pod 尚未启动),它需要一个提示。

但它并没有就此结束。

k8s requests,k8s,云原生,kubernetes,java,运维

CPU requests 还用于将同一个节点上的 CPU 资源如何分配给不同的容器。

3、让我们看一个例子:

  • 一个节点只有一个 CPU。

  • 容器 A requests 0.1 个 vCPU。

  • 容器 B requests 0.2 个 vCPU。

当两个容器都尝试使用 100% 的可用 CPU 时会发生什么?

k8s requests,k8s,云原生,kubernetes,java,运维

图2 :两个容器的 CPU 使用率

由于 CPU 请求不限制消耗,因此两个容器都将使用所有可用的 CPU。

但是,由于容器 B 的请求与另一个相比增加了一倍,因此最终的 CPU 分配是:容器 1 使用 0.3vCPU,另一个使用 0.6vCPU(双倍数量)

k8s requests,k8s,云原生,kubernetes,java,运维

4、Requests 适用于:

  • 设置基准(给我至少 X 数量的 CPU)。

  • 设置 pod 之间的关系(这个 pod A 使用的 CPU 是另一个的两倍)。

但不影响硬性限制。

为此,您需要 CPU limits。

5、设置 CPU limits 其实是定义了 period 周期和 quota 配额

例如:

  • 周期:100000 微秒 (0.1s)。

  • 配额:10000 微秒 (0.01s)。

我只能每 0.1 秒使用 CPU 0.01 秒。

这也缩写为“100m”。

k8s requests,k8s,云原生,kubernetes,java,运维

6、如果你的容器有硬限制并且想要更多的 CPU,它必须等待下一个周期。

您的进程受到限制。

k8s requests,k8s,云原生,kubernetes,java,运维

那么您应该在 Pod 中如何设置 CPU requests 和 limits?

一种简单(但不准确)的方法是将最小的 CPU 单元计算为:

REQUEST = NODE_CORES * 1000 / MAX_NUM_PODS_PER_NODE

对于 1 个 vCPU 节点和 10 个 Pod ,最小单元就是 1 * 1000 / 10 = 100Mi

7、将最小单位或其乘数分配给您的容器。

k8s requests,k8s,云原生,kubernetes,java,运维

将 CPU 请求分配给 Pod 和容器

例如,如果您不知道 Pod A 需要多少 CPU,但您确定它是 Pod B 的两倍,您可以设置:

  • Request A:1 个单元

  • Request B:2 个单位

如果容器使用 100% CPU,它们将根据它们的权重 (1:2) 重新分配 CPU。

k8s requests,k8s,云原生,kubernetes,java,运维

8、更好的方法是监控应用程序并得出平均 CPU 利用率。

您可以使用现有的监控基础设施来完成此操作,或者使用 Vertical Pod Autoscaler 来监视并报告平均请求值。

你应该如何设置 limits?

  1. 您的应用可能已经有“硬性”限制。(例如单线程的应用即使分配了 2 个核,也最多只使用 1 个核)。

  2. 你可以设置:limit = 99th 分位数 + 30–50%。

您应该分析应用程序(或使用 VPA)以获得更详细的答案。

k8s requests,k8s,云原生,kubernetes,java,运维

9、您应该始终设置 CPU requests 吗?

绝对没错。

这是 Kubernetes 中的标准良好实践,可帮助调度器更有效地分配 pod。

您应该始终设置 CPU limits 吗?

这有点争议,我是这么认为的。

你可以进行更深入的了解:https://dnastacio.medium.com/why-you-should-keep-using-cpu-limits-on-kubernetes-60c4e50dfc61文章来源地址https://www.toymoban.com/news/detail-587793.html

到了这里,关于Kubernetes中设置 CPU 的 requests 和 limits详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在Kubernetes(K8s)中,CPU和内存的单位

    在Kubernetes(K8s)中,CPU和内存的单位有一些特定的表示法,它们是: CPU单位 - millicores (m): m 表示 millicores,即千分之一的 CPU 核心。 例如, 100m 表示 0.1 个 CPU 核心,而 500m 表示 0.5 个 CPU 核心。 这种表示法用于将 CPU 资源分配为相对小的单位,使得可以更精确地定义容器对

    2024年01月24日
    浏览(42)
  • 【云原生 • Kubernetes】认识 k8s 网络、外部网络访问 k8s 内部服务

    目录 一、认识 Kubernetes 网络 二、外部网络如何访问 k8s 内部服务 1. NodePort 2. Load Balancer 3. Ingress Kubernetes 最底层的网络为节点网络,用来保证 k8s 集群的节点(master 和 worker、worker 节点之间)能够做正常的 IP 寻址和通讯。 Kubernetes 第二层网络就是 Pod 网络,构建于节点网络之上

    2024年01月16日
    浏览(72)
  • 云原生Kubernetes:K8S存储卷

    目录 一、理论 1.存储卷 2.emptyDir 存储卷 3.hostPath卷 4.NFS共享存储 5.PVC 和 PV 6.静态创建PV 7.动态创建PV 二、实验  1.emptyDir 存储卷 2.hostPath卷 3.NFS共享存储 4.静态创建PV 5.动态创建PV 三、问题 1.生成pod一直pending 2.shoumount -e未显示共享目录 3.静态创建pv 报错 4.使用 Deployment 来创建

    2024年02月07日
    浏览(74)
  • 云原生Kubernetes:K8S安全机制

    目录 一、理论 1.K8S安全机制 2.Authentication认证 3.Authorization授权 4.Admission Control准入控制 5.User访问案例 6.ServiceAccount访问案例 二、实验 1.Admission Control准入控制 2.User访问案例 3.ServiceAccount访问案例 三、问题 1.生成资源报错 2.镜像拉取失败 四、总结 (1)概念 Kubernetes 作为一个分

    2024年02月07日
    浏览(70)
  • 【云原生K8S】Kubernetes之探针

    目录 一、探针是什么 二、探针类型  Ⅰ、livenessProbe 容器重启策略  Ⅱ、readinessProbe Ⅲ、startupProbe 执行顺序: 字段详情 三、探测机制 Ⅰ、HTTP GET探针 Ⅱ、TCP套接字探针 Ⅲ、Exec探针 探针:是由 kubelet 对容器执行的定期诊断 要执行诊断,则需kubelet 调用由容器实现的 Handler。

    2024年02月09日
    浏览(69)
  • 云原生_kubernetes(k8s)介绍

    目录 一、应用部署方式演变 二、k8s介绍 三、k8s的组件 四、k8s中的概念 五、k8s资源管理方式 1、命令式对象管理 2、命令式对象配置 3、声明式对象配置 在部署应用程序的方式上,主要经历了三个时代: 1 、物理机部署: 互联网早期,会直接将应用程序部署在物理机上 优点

    2023年04月13日
    浏览(60)
  • 云原生Kubernetes:K8S常用服务端口

    目录 一、理论 1.K8S常用服务端口号 (1)K8S集群 表1 K8S集群端口 协议 端口号 K8S集群 TCP 22 使用主机驱动通过SSH进行节点配置 TCP 53 集群DNS服务 UDP 53 集群DNS服务 TCP 2376 主机驱动与Docker守护进程通信的TLS端口 TCP 2379 etcd客户端请求 TCP 2380 etcd节点通信 UDP 8472 Canal/Flannel VXLAN ove

    2024年02月10日
    浏览(71)
  • 云原生Kubernetes:K8S配置资源管理

    目录 一、理论 1.Secret 2.Secret创建 3.Secret使用 4.Configmap 5.Configmap创建 6.Configmap使用 二、实验 1.Secret创建 2.Secret使用 3.Configmap创建 4.Configmap使用 三、问题 1.变量引用生成资源报错 2.查看pod日志失败 3.创建configmap报错 4.YAML创建configmap报错 5. 生成资源报错 6.文件挂载pod报错Error 四

    2024年02月07日
    浏览(68)
  • 【云原生K8s】初识Kubernetes的理论基础

      K8S由google的Borg系统(博格系统,google内部使用的大规模容器编排工具)作为原型,后经GO语言延用Borg的思路重写并捐献给CNCF基金会开源。 云原生基金会(CNCF)于2015年12月成立,隶属于Linux基金会。CNCF孵化的第一个项目就是Kubernetes, 随着容器的广泛使用,Kubernetes已经成为容

    2024年02月14日
    浏览(62)
  • 【云原生、k8s】管理Kubernetes应用搭建与部署

    官方提供Kubernetes部署3种方式 (一)minikube Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用。不能用于生产环境。 官方文档:https://kubernetes.io/docs/setup/minikube/ (二)二进制包 从官方下载发行版的二进制包,手动部署每个组件,

    2024年01月21日
    浏览(78)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包