当前位置: 首页 > 科技观察

Kubernetes资源配额使用指南

时间:2023-03-12 07:24:15 科技观察

当一个Kubernetes集群运行一段时间或被开发者大量使用时,就会出现控制Kubernetes资源(如CPU和内存)的问题。大多数情况下,直到集群出现问题,我们才会意识到资源控制的重要性。如果Kubernetes的部署过程没有充分考虑到未来的可扩展性,资源问题将会非常普遍。此类问题与集群管理部署团队的经验有关。如果控制不当,一个暴力的应用程序或开发者可能会影响共享集群的所有服务,因此每个人都会以保护的方式抱怨、指责和抢占资源。这对于集群管理和开发者来说都是一个非常困难的场景。有几种方法可以控制Kubernetes环境中应用程序的计算资源使用情况。大多数情况下,我们可以使用“资源控制”和“限制范围”。请注意,存储管理超出了我们的讨论范围。存储管理可以使用PersistentVolume组件来满足不同的存储控制需求。资源配额是一种控制Kubernetes计算资源的方法。本文将向您展示如何使用此功能来管理开发者行为并控制您的应用程序的资源使用情况。什么是资源配额简而言之,资源配额提供限制每个名称空间的资源消耗的约束。它们只能应用于命名空间级别,这意味着它们可以应用于计算资源并限制对象的数量。Kubernetes资源配额通过ResourceQuota对象为每个命名空间设置资源配额,并限制以下对象类型的CPU和内存:podPodservice服务机密信息SecretpersistentvolumeassertionPersistentVolumeClaim(PVC)配置映射ConfigMapKubernetes通过request和limit。两个参数限制CPU和内存(参考LimitRange文档)。前者代表容器的最小保证资源,后者代表容器的最大可用资源。事实上,最大可用资源也受到其他容器实际使用量的限制。下图解释了配额中请求和限制的区别:Kubernetes资源配额中的请求和限制下面我们用一个例子来说明如何设置资源配额来创建限制应用程序对某些资源的约束。它还显示了实施资源配额以获得对Kubernetes的控制的有用性。准备环境首先你需要一个Kubernetes环境。下面是我的Kubernetes环境:Minikubev1.14.2Fedora33操作系统上网如果想在Linux机器上通过Minikube搭建Kubernetes测试环境,可以参考BryantSon的《Minikube 入门》文章。Window或macOS用户可以参考这篇文章。设置资源配额这里我们只展示CPU配额的设置步骤,配置内存配额或者两者的结合是类似的。在生产环境中,CPU是最需要控制的资源。尤其是在多应用场景下,要特别注意防止某些应用占用过多的CPU而影响其他应用。首先,我们创建一个命名空间并在其中设置CPU配额:$kubectlcreatenamespacequota-testnamespace/quota-testcreated准备cpu-quota.yaml文件,内容如下:apiVersion:v1kind:ResourceQuotametadata:name:test-cpu-quotaspec:hard:要求。cpu:"100m"limits.cpu:"200m"将CPU配额应用到Kubernetes集群:$kubectlapply-fcpu-qouta.yamlresourcequota/test-cpu-quotacreated使用kubectldescribe查看配额配置:$kubectldescriberesourcequota/test-cpu-quota--namespacequota-testName:test-cpu-quotaNamespace:quota-testResourceUsedHard----------------limits.cpu0200mrequests.cpu0100m在Usedresources栏显示当前情况,并且随着podpod的部署,此列的值将随着Varies的变化而变化。下面是我们验证配额管理的场景。我们将在同一个命名空间下部署三个不同的Pod,为它们配置不同的资源限制,如下所示:PodA:第一个使用50%的可用CPU资源实例化PodB:第二个使用剩余的50%可用CPU实例化resourcesPodC:没有可用的CPU资源,所以不会被部署DeploypodPodA:$kubectlcreate-nquota-test-f-<