【.com快译】研究表明,如今Kubernetes在容器市场占据主导地位。根据云原生计算基金会(CNCF)的一项调查,2020年Kubernetes在生产中的使用率为93%,高于2019年的78%。此外,调查显示,2020年容器在生产中的使用率为92%,是3倍与2016年云原生计算基金会(CNCF)的首次调查相比有所增加。随着越来越多的DevOps团队采用Kubernetes并得到开源社区的支持,这个数字可能会增长。如果维持目前的价格,将会增加更多的市场份额。虽然Kubernetes使很多事情变得更容易,但总会有一些挑战。其中包括网络、存储、跟踪、监控、准备不足和成本管理方面的问题。运行Kubernetes的成本可能很高,尤其是在效率低下的情况下。当用户首次尝试将Kubernetes整合到他们的业务中时,他们通常使用与初始试点项目相同的架构和设置。然而,这样的设置通常没有成本优化,因此用户可能不知道成本。并且用户可以从一开始就养成良好的成本优化习惯,可以节省大量成本。以下是控制和降低Kubernetes成本的几种方法。此外,由于AmazonEKS是继自管Kubernetes之后最常见的容器管理方式,因此将为AWS云平台上Kubernetes的成本优化提供更多可操作的建议。1.Kubernetes成本监控这是开始更有效地管理Kubernetes成本的合乎逻辑的步骤。监控将显示用户如何在Kubernetes上花费。更重要的是,应该确定节省成本的机会。云计算提供商通常会向用户提供他们需要支付的费用的账单摘要,但是,概述通常很简单,这对于多租户Kubernetes集群不是很有用,并且在私有云中无法访问。因此,通常使用外部软件来监控Kubernetes使用情况。Prometheus、Kubecost、Microtica和Replex是该领域的一些有用工具。用户需要选择适用的工具来监控Kubernetes成本。然后,开始采取更具体的行动来优化Kubernetes成本。2.限制资源使用有效地限制资源使用可以确保Kubernetes系统的任何程序或操作不会使用过多的处理能力。因此,可以为用户节省成本,例如避免意外账单。容器使用的资源不能超过设置的资源限制。如果为特定容器设置4GB的内存上限,kubelet(和容器运行时)将不会超过此内存上限。禁止容器在运行时超过配置的资源限制。当容器中的进程尝试使用超过允许的内存时,系统内核会以内存不足错误中止该进程。用户可以通过两种方式进行限制。首先,Kubernetes系统会在检测到违规时做出反应。第二种方式是enforcement,也就是说Kubernetes系统是绝对不允许容器超过限制的。对于不同的运行时,可以通过各种方式实现相同的限制。限制资源至关重要,尤其是当许多用户可以直接访问Kubernetes时。这种方法确保了可用资源的公平共享,从而减少了整个集群的大小。如果没有限制,单个用户可能会耗尽所有资源,这将严重影响其他用户的工作,导致需要更多的计算资源。但是,应注意不要过度限制资源。如果资源数量限制得太少,软件将无法正常运行。使用一些Kubernetes成本优化工具,如Prometheus和Kubecost可以帮助用户保持资源平衡。3.自动缩放自动缩放意味着用户为他们需要的东西付出更多。因此,用户必须根据自己的具体需求调整集群的大小。此功能允许Kubernetes自动扩展以适应快速变化。水平自动缩放和垂直自动缩放是可用的两种类型的自动缩放。简而言之,水平自动缩放涉及根据负载是高于还是低于指定水平来插入和移除计算单元。其Pod的比例与垂直自动缩放比例保持平衡。这两种自动缩放方法都可用于动态调整可用计算能力以满足用户的实际需求。但是,这种方法并不理想,因为它不适用于所有用例。例如,当某些东西占用更多计算资源时,Kubernetes系统不会自动缩小规模。4.选择合适的AWS实例AWSKubernetes的成本直接受到开发人员用来管理Kubernetes集群的AWS实例的影响。它的实例有许多不同的形式,具有不同的内存和计算资源组合。KubernetesPod的使用方式相同,只是资源分配不同。控制AWSKubernetes成本的关键是确保Pod在用户的AWS实例上得到有效使用。AWS实例应与用户使用的Pod大小相匹配。Pod大小、数量和历史资源利用率趋势都将决定使用哪个AWS实例。应用程序可能有不同的存储或CPU要求,这会影响要使用的实例类型。确保KubernetesPod的资源消耗与其使用的AWS实例上可用的总体CPU和内存相关,对于优化资源使用和降低AWS成本至关重要。5.使用Spot实例对于AWS实例,您可以在三种计费配置文件中找到它们:按需实例、预留实例和Spot实例。按需实例的成本最高,但也最灵活。Spot实例的成本最低。但它们需要以2分钟警告终止。用户也可以在一定时间内获取预留实例,节省成本。因此,实例形式的选择直接影响到AWS云平台上运行Kubernetes的成本。用户可以将Spot实例用于不需要一直需要资源并且可以处理许多中断的工作负载。AWS声称Spot实例将帮助用户节省高达EC2按需实例成本的90%。由于Spot实例必须立即运行,因此它们不是用户采用应用程序的最佳选择,如果您在固定时间内使用这些服务,您可能会获得一些折扣。如果用户同意一年或三年的订阅期,他们将获得更多折扣。AWS表示其折扣幅度可能在40%到60%之间。6.设置睡眠时间表无论用户是在按需实例、预留实例还是Spot实例上运行Kubernetes集群,确保终止未充分利用的集群对于成本管理都至关重要。用户可以按他们配置的时间段计算AWSEC2费用。尽管未充分利用的实例对资源的影响比必要的大得多,但它们仍然会让用户承担运行实例的全部成本。简而言之,如果用户使用基于云的Kubernetes环境,并且只在工作时间使用,那么他每周工作40小时,其余时间Kubernetes环境都在工作,则无需支付另外128小时的费用。每周几个小时。每小时付款。当然,并不是每个用户都是这样,尤其是如果他们有更灵活的工作时间,但在他们不工作时关闭环境可以显着优化Kubernetes的成本。用户可以通过自动安排休眠和在需要时唤醒环境来设置这些功能。设置这个时间表意味着Kubernetes系统会自动收缩未使用的资源。这确保了它的环境得到保护。此外,当用户需要再次激活时,他们的环境会自动“唤醒”,这意味着工作流程不会中断。7.定期清理Kubernetes如果让用户按需构建命名空间或基于持续集成(CI)/持续交付(CD)使用Kubernetes,最终可能会得到大量未使用的对象或集群。这些对象或集群仍然会使用户的成本上升。如果休眠模式减少了计算资源,那么它只用于暂时不活动的资源,仍然保留存储和配置。因此,当用户发现某些资源长期处于非活动状态时,将其删除将是明智的事情。8.适当调整Kubernetes集群的大小管理Kubernetes集群在每种情况下都是不同的。有多种方法可以正确调整集群大小,开发应用程序以确保一致性和持久性非常重要。在构建集群之前,用户通常需要考虑将在集群上运行的应用程序的规格。在设计可扩展的应用程序时,适当调整节点大小非常重要。大量的小节点和少量的大节点是两种截然不同的事情。这就是为什么在这两个目标之间找到适当的平衡是最好的方法。但是,用户对应用程序的不同要求需要不同数量和大小的节点,因此有必要了解各种用例所需的大小和数量。9.标记资源标记资源在任何环境中都是一个聪明的想法,无论是云平台、本地设施还是容器。在拥有众多测试、登台和开发环境的Kubernetes环境中,一些服务势必会被忽略。即使不使用这些服务,它们也一直是用户的长期负担。应该使用标签来确保所有服务都受到控制。AWS为此提供了一个强大的标记方案,可以用来标记属于Kubernetes的服务。它的用户可以使用这些标签来掌握资源、资源所有者和资源使用情况。有效的标记使用户可以轻松地对未使用的服务进行分类和删除。在AWS账单仪表板中启用这些标志后,用户将能够分配成本并查看各种服务的费用明细。结论Kubernetes成本优化的第一步是开始监控。然后,为了避免使用不必要的计算资源,用户可以设置资源限制,这将使成本更易于管理。确定资源的最佳规模对于降低成本至关重要,自动缩放也将有所帮助。如果使用AWS服务,用户可以使用成本较低的选项,例如spot实例。删除闲置资源的其他步骤包括自动休眠调度和清理未使用的Kubernetes资源。最后,用户可以调整pod大小并实施资源标记以更好地优化Kubernetes成本。将这些技术集成到用户的流程中将导致构建成本优化的Kubernetes系统。这将为用户更关键的业务运营和产品改进节省更多成本。原标题:如何实现有效的Kubernetes成本优化,作者:SaraMiteva
