广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Kubernetes资源配额怎么用
  • 536
分享到

Kubernetes资源配额怎么用

2024-04-02 19:04:59 536人浏览 薄情痞子
摘要

这篇文章给大家分享的是有关kubernetes资源配额怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。当 Kubernetes 集群运行过一段时间或者在被开发者大量使用后,K

这篇文章给大家分享的是有关kubernetes资源配额怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

当 Kubernetes 集群运行过一段时间或者在被开发者大量使用后,Kubernetes 资源(例如 CPU  和内存)的控制的问题就会显现出来。而在大多情况下只有集群出问题后,我们才会意识到资源控制的重要性。

Kubernetes 部署过程如果没有能充分考虑到将来的扩展性,资源类问题将会非常常见,此类问题与集群的管理和部署团队的经验有关。

如果不加以合理控制,一个暴力的应用或者开发者可能影响到共享该集群的所有业务,大家因此会相互埋怨、指责并保护性地抢占资源。这对于集群管理和开发人员都是非常难以处理的场景。

在 Kubernetes  环境中控制应用的计算资源使用有多种方式。大部分情况下,我们可以使用“资源控制”和“限制范围”。注意存储管理不在我们讨论范围之内,存储管理可以通过持久卷Persistent  Volume 件,以实现针对不同的存储控制需求。

资源配额是一种控制 Kubernetes 计算资源的方法。本文告诉你如何使用该功能来管理开发人员行为并控制应用的资源使用。

什么是资源配额

简而言之,资源配额  提供了限制每个命名空间资源消耗的约束条件,它们只能在命名空间级别上应用,这意味着它们可以应用于计算资源,并限制命名空间内的对象数量。

Kubernetes资源配额通过 ResourceQuota 对象来为每个命名空间设置资源配额,对以下对象类型的 CPU 和内存进行限制:

  • 吊舱Pod

  • 服务Service

  • 机密信息Secret

  • 持久卷断言Persistent Volume Claim(PVC)

  • 配置映射ConfigMap

Kubernetes 通过 request 和 limit 两个参数对 CPU 和内存进行限制(参考 LimitRange  文档)。前者表示容器最小被保证资源,后者表示容器最大可用资源。实际上最大可用资源还受限于其它容器的实际使用情况。

下一张图片解释了配额中 request 和 limit 的区别:

Kubernetes资源配额怎么用

Requests and limits in Kubernetes resource  quotas下面我们就通过一个例子来说明如何设置资源配额来创建约束,将应用程序限制在某些资源上,它还展示了实现资源配额以获得对 Kubernetes  的控制的有用性。

准备环境

首先你需要一个 Kubernetes 环境。以下是我使用 Kubernetes 环境:

如果你想在 linux 机器上通过 Minikube 搭建 Kubernetes 测试环境,可以参考 Bryant Son 的《Minikube 入门》  一文。Window 或者 MacOS 用户可以参考这篇文章。

设置资源配额

这里我们仅展示 CPU 配额设置步骤,配置内存配额或两者的组合与之类似。

在生产环境中,CPU 是最需要被控制的资源,尤其是在多应用的场景下特别需要注意防止某些应用消耗太多 CPU 而影响到其它应用。

首先我们创建一个命名空间,在其中设置 CPU 配额:

$ kubectl create namespace quota-test namespace/quota-test created

准备 cpu-quota.yaml 文件,内容如下:

apiVersion: v1 kind: ResourceQuota metadata:   name: test-cpu-quota spec:   hard:     requests.cpu: "100m"       limits.cpu: "200m"

应用 CPU 配额到 Kubernetes 集群:

$ kubectl apply -f cpu-qouta.yaml resourcequota/test-cpu-quota created

使用 kubectl describe 检查配额配置情况:

$ kubectl describe resourcequota/test-cpu-quota --namespace quota-test Name:         test-cpu-quota Namespace:    quota-test Resource      Used  Hard --------      ----  ---- limits.cpu    0     200m requests.cpu  0     100m

在 Used resources 列中显示了当前情况,该列值会随着吊舱Pod的部署而变化。

下面是我们来验证限额管理的场景。我们将在同一命名空间下部署三个不同的吊舱,为它们配置以不同的资源限制如下:

  • PodA:第一个被实例化,使用 50% 可用 CPU 资源

  • PodB:第二个被实例化,使用其余 50% 可用 CPU 资源

  • PodC:没有可用 CPU 资源,因此不会被部署

部署吊舱

PodA:

$ kubectl create -n quota-test -f - << EOF apiVersion: v1 kind: Pod metadata:   name: poda spec:   containers:   - name: quota-test     image: busybox     imagePullPolicy: IfNotPresent     command: ['sh', '-c', 'echo Pod is Running ; sleep 5000']     resources:       requests:         cpu: "50m"       limits:         cpu: "100m"   restartPolicy: Never EOF

部署 PodA 后,再次查看配额描述信息中的 Used CPU 信息:

$ kubectl describe resourcequota/test-cpu-quota --namespace quota-test Name:         test-cpu-quota Namespace:    quota-test Resource      Used  Hard --------      ----  ---- limits.cpu    100m  200m requests.cpu  50m   100m

PodB:

$ kubectl create -n quota-test -f - << EOF apiVersion: v1 kind: Pod metadata:   name: podb spec:   containers:   - name: quota-test     image: busybox     imagePullPolicy: IfNotPresent     command: ['sh', '-c', 'echo Pod is Running ; sleep 5000']     resources:       requests:         cpu: "50m"       limits:         cpu: "100m"   restartPolicy: Never EOF

再次查看 CPU 资源使用,此时 PodB 启动后 CPU 限制已经达到上限:

$ kubectl describe resourcequota/test-cpu-quota --namespace quota-test Name:         test-cpu-quota Namespace:    quota-test Resource      Used  Hard --------      ----  ---- limits.cpu    200m  200m requests.cpu  100m  100m

PodC:

试着创建 PodC,此时 CPU 配额已经被 PodA 和 PodB 用尽:

$ kubectl create -n quota-test -f - << EOF apiVersion: v1 kind: Pod metadata:   name: podc spec:   containers:   - name: quota-test     image: busybox     imagePullPolicy: IfNotPresent     command: ['sh', '-c', 'echo Pod is Running ; sleep 5000']     resources:       requests:         cpu: "5m"       limits:         cpu: "10m"   restartPolicy: Never EOF

正我们期望,第三个 Pod 无法被启动,配额限制了吊舱的创建:

Error from server (Forbidden): error when creating "STDIN": pods "podc" is forbidden: exceeded quota: test-cpu-quota, requested: limits.cpu=10m,requests.cpu=5m, used: limits.cpu=200m,requests.cpu=100m, limited: limits.cpu=200m,requests.cpu=100m

如我们的例子所示,定义合理的资源配额限制开发者行为对 Kubernetes 管理十分重要。

清理

删除刚才创建的命名空间 quota-test:

$ kubectl delete -n quota-test

规划资源配额

Kubernetes 中提供多种方式来控制资源的抢占和使用,合理的规划和配置配额、限制范围和其它原生参数对保持集群的稳定性十分必要。

你应该十分谨慎地控制计算资源的资源配额,特别是关键业务的生产应用环境。

在规划资源配额时,开发人员的参与很重要,需要他们预估并给出最合理的资源使用值。

感谢各位的阅读!关于“Kubernetes资源配额怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: Kubernetes资源配额怎么用

本文链接: https://www.lsjlt.com/news/80303.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Kubernetes资源配额怎么用
    这篇文章给大家分享的是有关Kubernetes资源配额怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。当 Kubernetes 集群运行过一段时间或者在被开发者大量使用后,K...
    99+
    2022-10-19
  • Kubernetes中怎么创建资源
    这篇文章给大家分享的是有关Kubernetes中怎么创建资源的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在Kubernetes中所有操作的内容,我们都称为“资源对象”,是由AP...
    99+
    2022-10-19
  • 一文详解kubernetes 中资源分配的那些事
    目录概要一个nginx的配置我们进入nginx容器所在目录看下cpu.sharescpu.cpu.cfs_period_us、cpu.cfs_quota_us资源使用率数据来源下ku...
    99+
    2023-05-17
    kubernetes 资源分配 kubernetes 资源
  • kubernetes资源QOS机制实现原理是什么
    本篇内容主要讲解“kubernetes资源QOS机制实现原理是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“kubernetes资源QOS机制实现原理是什么”吧!QOS是k8s中一种资源保护...
    99+
    2023-06-19
  • 如何使用Kubernetes自定义资源(CRD)详解
    目录什么是CRDCRD使用小结总结什么是CRD CRD的全称为 CustomResourceDefinitions,即自定义资源。k8s拥有一些内置的资源,比如说Pod,D...
    99+
    2022-11-13
  • 怎么在python中利用互斥锁分配资源
    本篇文章为大家展示了怎么在python中利用互斥锁分配资源,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python的五大特点是什么python的五大特点:1.简单易学,开发程序时,专注的是解决问题...
    99+
    2023-06-14
  • nginx怎么配置代理多个前端资源
    这篇文章主要介绍了nginx怎么配置代理多个前端资源的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇nginx怎么配置代理多个前端资源文章都会有所收获,下面我们一起来看看吧。背景两套不同的前端使用同一个后端服务,...
    99+
    2023-07-06
  • github怎么拿资源
    GitHub是一个非常出名的开源平台,它不仅是一个代码托管平台,也是一个在线社交网站,开发者们可以在这里分享和获取资源、交流技术等。如何获取GitHub资源?注册账号首先,你需要注册一个GitHub账号。注册账户很简单,只需填写所需的信息,...
    99+
    2023-10-22
  • 利用Kubernetes名称空间来管理内存和CPU资源(二)
    女主宣言众所周知,Kubernetes是允许指定CPU和RAM的请求和限制的,这一特性对于单独的pod的资源消耗管理非常有用。在本系列文章中,我们将向大家展示集群资源的高效管理的三种策略。但是,如果你是Kubernetes集群管理员,你可能...
    99+
    2023-06-03
  • Linux中怎么设置磁盘配额
    这期内容当中小编将会给大家带来有关Linux中怎么设置磁盘配额,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。先决条件为了最有效地利用本系列中的文章,您应该具有基本的 Linux 知识,并需要准备一个 Li...
    99+
    2023-06-16
  • VB.NET资源文件LoadResData怎么用
    这篇文章给大家分享的是有关VB.NET资源文件LoadResData怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。VB.NET资源文件语法:LoadResData(index, format)VB...
    99+
    2023-06-17
  • Xamarin中资源分析怎么用
    小编给大家分享一下Xamarin中资源分析怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!资源分析在 Xamarin Studio 中,我最喜欢的功能是资源分析。这个功能以前只作为一个实验性的选项,但现在 Xamari...
    99+
    2023-06-27
  • java怎么释放资源
    在Java中,释放资源通常指的是关闭文件、数据库连接、网络连接等资源,以防止资源泄漏和提高系统性能。下面是一些常见的释放资源的方法:...
    99+
    2023-10-27
    java
  • Hadoop资源怎么管理
    这篇文章主要介绍“Hadoop资源怎么管理”,在日常操作中,相信很多人在Hadoop资源怎么管理问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Hadoop资源怎么管理”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-03
  • linux磁盘配额大小怎么设置
    这篇文章主要介绍“linux磁盘配额大小怎么设置”,在日常操作中,相信很多人在linux磁盘配额大小怎么设置问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux磁盘配额大小怎么设置”的疑惑有所帮助!接下来...
    99+
    2023-06-10
  • Docker资源限制Cgroup怎么使用
    这篇文章主要介绍“Docker资源限制Cgroup怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Docker资源限制Cgroup怎么使用”文章能帮助大家解决问题。1.Cgroup简介_cgr...
    99+
    2023-07-02
  • linux怎么查看资源占用率
    要查看Linux系统的资源占用率,可以使用以下命令:1. 使用top命令:在终端中输入top命令,会显示系统的实时资源占用情况,包括...
    99+
    2023-10-20
    linux
  • es6中怎么导入资源
    本篇内容介绍了“es6中怎么导入资源”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2022-10-19
  • 怎么删除cdn上资源
    删除cdn缓存的方法首先,在计算机中使用组合键“win+R”运行cmd,打开命令提示符窗口;进入到命令提示符窗口后,在命令行中执行ipconfig /displaydns命令查看dns缓存信息;最后,在命令行中执行ipconfig /flu...
    99+
    2022-10-24
  • Linux中怎么实现文件系统配额
    这篇文章给大家介绍Linux中怎么实现文件系统配额,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.配额又称为限额,针对的是分区,不是用户也不是文件,更不是整个硬盘; 2.内核版本必须...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作