Kubernetes最佳实践 设置查询和资源限制

Kubernetes最佳实践创建小型容器
Kubernetes最佳实践。具有Kubernetes
最佳实践命名空间的Kubernetes组织。使用就绪性和

活跃性测试检查Kubernetes的可行性对于每个Kubernetes资源,您可以配置两种类型的需求-请求和限制。第一个描述运行容器或炉床所需的可用空闲节点资源的最低要求,第二个描述严格限制可用于该容器的资源。

当Kubernetes计划一个Pod时,容器具有足够的资源以进行正常操作非常重要。如果计划在资源有限的节点上部署大型应用程序,则很有可能由于该节点内存不足或处理器能力不足而无法工作。在本文中,我们将研究如何使用资源请求和限制来解决计算机容量不足的问题。

请求和限制是Kubernetes用于管理诸如处理器和内存之类的资源的机制。请求是确保容器接收请求的资源的结果。如果容器请求资源,则Kubernetes只会在可以提供资源的主机上调度它。限制限制控制容器所请求的资源永远不会超过特定值。



容器只能将计算能力提高到一定的极限,此后将受到限制。让我们看看它是如何工作的。因此,有两种类型的资源-处理器和内存。Kubernetes Scheduler使用这些资源中的数据来确定运行Pod的位置。典型的炉床资源规范如下所示。



pod中的每个容器都可以设置自己的查询和限制,所有这些都是附加的。处理器资源以毫米为单位定义。如果启动容器需要两个完整的核心,则将值设置为2000m。如果容器仅需要1/4核心功率,则值为250m。请记住,如果您分配的处理器资源值大于最大节点的核心数,那么根本不会计划启动壁炉。如果您有一个需要四个内核的子服务器,而Kubernetes集群仅包含两个主虚拟机,则也会发生类似情况。

除非您的应用程序是专门为利用多核而设计的(除非想到诸如复杂的科学计算和数据库操作之类的程序),否则最佳做法是将CPU请求设置为1或更低,然后运行更多副本以用于可扩展性。这样的解决方案将使系统具有更大的灵活性和可靠性。

当涉及到处理器限制时,事情变得更加有趣,因为它被视为可压缩资源。如果您的应用程序开始接近处理器容量限制,Kubernetes将开始使用CPU节流来降低容器的速度-降低处理器频率。这意味着处理器将受到人为限制,从而为应用程序带来潜在的更差的性能,但是该过程不会终止或流传下来。

内存资源以字节为单位定义。通常,设置中的值以Mib兆字节为单位,但是您可以指定任何值,从字节到PB。这里的情况与CPU相同-如果您请求的内存量超过了节点上的内存量,则不会安排该Pod的执行。但是与处理器资源不同,内存没有被压缩,因为没有办法限制其使用。因此,一旦超出分配给它的内存限制,该容器的执行将立即停止。



重要的是要记住,您不能配置超出站点可以提供的资源大小的请求。 GKE虚拟机共享资源的特征可以在此视频下方的链接上找到。

在理想情况下,默认容器设置足以使工作流顺利进行。但是现实世界并非如此,人们可以轻易忘记配置资源的使用,否则黑客将设置超出基础架构实际功能的请求和限制。为了防止出现这些情况,可以配置ResourceQuota资源配额和LimitRange限制范围。

创建名称空间后,可以使用配额阻止它们。例如,如果您具有prod和dev命名空间,则使用一个模板,其中根本没有生产配额,并且开发配额非常严格。这样,在流量急剧增加的情况下,产品就可以自己获取所有可用资源,从而完全阻止开发人员。

资源配额可能看起来像这样。在此示例中,有4个部分-这些是代码的4个底线。



让我们看看它们中的每一个。 Requests.cpu是可以来自所有名称空间容器的组合处理器电​​源请求的最大数量。在此示例中,您可以有50个容器,每个容器的请求量为10m,五个容器的请求量为100m,或者只有一个容器的请求量为500m。只要此名称空间的requests.cpu总数小于500m,一切都会很好。

请求的内存请求。内存是名称空间中所有容器可以具有的最大合并内存请求量。与前面的情况一样,您可以有50个容器,每个容器2个mib,五个容器,每个容器20个mib,或者一个容器中每个容器100 mib,直到名称空间中请求的内存总量小于100 MB。

Limits.cpu是所有名称空间容器可以使用的最大组合处理器功率值。我们可以假定这是处理器功率请求的限制。

最后,limits.memory是名称空间中所有容器可以使用的最大共享内存量。这是总内存请求的限制。
因此,默认情况下,Kubernetes集群中的容器可以使用无限的计算资源。使用资源配额,群集管理员可以限制资源的消耗及其基于名称空间的创建。在名称空间中,pod模块或容器可以消耗与名称空间资源配额确定的CPU和内存一样多的电量。但是,令人担忧的是,一个下面或一个容器可能会垄断所有可用资源。为了避免这种情况,使用了限制范围Range Range-限制名称空间中资源分配(对于Pod或容器)的策略。

限制范围提供的限制可能:

  • ;
  • Starage Request PersistentVolumeClaim ;
  • Request Limit ;
  • Requests/Limits .

这样,您可以在名称空间中创建限制范围。与适用于整个名称空间的配额不同,限制范围用于单个容器。这可以防止用户在名称空间内创建非常小的容器,反之亦然。极限范围可能看起来像这样。



与前面的情况一样,此处可以区分4个部分。让我们来看看每个。
在默认部分中,为炉膛中的容器设置了默认限制。如果您在限制范围内指定这些值,那么所有未明确设置这些值的容器将以默认值为准。

在默认查询部分defaultRequest中,配置了炉床中容器的默认查询。同样,如果您在限制范围内设置这些值,则默认情况下未明确设置这些参数的任何容器都将使用这些值。

max(最大)部分指示可以在炉膛中为容器设置的最大限制。默认部分中的值和容器的限制不能设置为高于此限制。重要的是要注意,如果设置了max且没有默认部分,则最大值成为默认值。

最小部分指示可以为炉膛中的容器设置的最小查询。同时,默认部分和对容器的请求中的值不能设置为低于此限制。

同样,重要的是要注意,如果设置了此值,则没有设置默认值,则最小值成为默认查询。

结果,这些资源请求被Kubernetes调度程序用来执行您的工作负载。为了正确配置容器,了解其工作原理非常重要。假设您要在集群中运行多个模块。假设炉膛规格有效,Kubernetes调度将使用循环平衡来选择工作负载节点。



Kubernetes将检查节点1节点是否有足够的资源来满足Pod容器请求,如果没有,它将继续到下一个节点。如果系统中的所有节点都不能满足请求,则Pod将进入待处理状态。借助Google Kubernetes引擎的自动缩放等引擎功能,GKE可以自动确定等待状态并创建更多其他节点。

如果随后节点的容量过大,则自动扩展功能将减少其数量,以节省资金。这就是Kubernetes计划基于查询的Pod的原因。但是,该限制可能高于请求,并且在某些情况下,该节点可能实际上耗尽了资源。我们称此状态为超额使用状态。



正如我所说,如果我们谈论的是处理器,Kubernetes将开始限制Pod。每个吊舱将收到他要求的数量,但如果同时未达到限制,则将开始进行节流。

对于内存资源,在您释放系统资源之前,Kubernetes不得不决定要删除哪些Pod和保留哪些Pod,否则整个系统将崩溃。

让我们想象一个场景,其中有一台机器的内存已用完-Kubernetes将如何做到这一点?

Kubernetes将寻找使用比请求更多资源的Pod。因此,如果您的容器根本没有请求,则意味着默认情况下它们使用的资源比所请求的要多,这仅仅是因为它们根本不要求任何东西!这样的容器成为关闭的主要候选对象。接下来的候选者是满足所有请求但仍低于最大限制的容器。

因此,如果Kubernetes找到超过其查询参数的多个Pod,它将按优先级对它们进行排序,然后删除优先级最低的模块。如果所有模块都具有相同的优先级,那么Kubernetes将停止超出其请求的那些Pod,超过其余Pod。

在极少数情况下,Kubernetes可以中断仍在其范围内的炉膛。当关键系统组件(例如Kubelet代理或Docker)开始消耗比为其保留的资源更多的资源时,可能会发生这种情况。
因此,在小型公司的初始阶段,Kubernetes集群可以在不设置资源请求和限制的情况下正常运行,但是随着您的团队和项目规模的扩大,您将面临在该领域遇到问题的风险。向模块和名称空间添加查询和限制几乎不需要额外的工作,并且可以节省很多麻烦。

Kubernetes最佳实践 正确终止禁用


一点广告:)


感谢您与我们在一起。你喜欢我们的文章吗?想看更多有趣的资料吗?通过下订单或向您的朋友推荐给开发人员的基于云的VPS,最低价格为4.99美元这是我们为您发明的入门级服务器 独特类似物:关于VPS(KVM)E5-2697 v3(6核)的全部真相10GB DDR4 480GB SSD 1Gbps从$ 19还是如何划分服务器?(RAID1和RAID10提供选件,最多24个内核和最大40GB DDR4)。

阿姆斯特丹的Equinix Tier IV数据中心的戴尔R730xd便宜2倍吗?在荷兰2台Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100电视戴尔R420-2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB-$ 99起!阅读有关如何构建基础设施大厦的信息。使用Dell R730xd E5-2650 v4服务器花费一欧元9000欧元的c类?

All Articles