悠扬随风 发表于 2025-1-9 01:58:49

手把手带你使用Karpenter减少K8s集群资源浪费

Kubernetes 集群的重要成本因素之一是数据平面上的计算层。将 Kubernetes 集群运行在 Amazon EC2 Spot 实例上是一种显著低落计算成本的有效方式。使用 Spot 实例可以比按需实例节流高达 90% 的费用。
Spot 实例非常适合无状态、容错性强且灵活的应用场景,例如大数据处理、容器化工作负载、CI/CD、Web 服务器、高性能计算(HPC)以及测试和开发工作负载。容器通常具有这些特性,因此与 Spot 实例高度契合。对于不适合 Spot 实例的工作负载,例如集群中的有状态应用,您仍然可以继续使用按需实例。
为了进一步优化数据平面的容量,当由于可用容量不敷导致 Pod 无法调理时,您可以增加节点数量;当节点不再需要时,可以将其移除。要实现节点的自动调解,可以使用 Cluster Autoscaler (CA) 或 Karpenter。这两个工具都支持 Spot 实例,在本教程中,我将重点介绍 Karpenter。
我将引导您完成以下步调:怎样设置一个使用 Spot 实例和 Karpenter 的 EKS 集群。 此外,我还会展示怎样设置工作负载,以通过使用 Spot 实例来动态提供所需的容量,从而直观感受到 Karpenter 的实际效果。
为什么选择 Karpenter

Karpenter 是一个为 Kubernetes 设计的节点调理开源项目。当新的 Pod 不断参加集群(无论是由于您手动增加了副本数量,还是通过 Horizontal Pod Autoscaling (HPA) 计谋或 Kubernetes Event-driven Autoscaling (KEDA) 变乱自动扩容),您的数据平面节点最终会达到容量上限,导致出现挂载(无法调理)的 Pod。
Karpenter 控制器会响应这一问题,通过评估调理束缚(例如资源请求、节点选择器、亲和性、容忍度以及拓扑分布束缚)整合这些挂载 Pod 的容量,然后调理符合这些 Pod 要求的节点。
使用 Karpenter 的重要上风之一在于,它能合理设置 Spot 实例,例如实例范例的多样化(包罗多种实例家族、规格和代际等),这一功能通过 Karpenter 的 NodePool 实现。
如果您刚开始在 EKS 中使用 Spot 实例,或者在设置多个节点组的复杂性上遇到了困难,我建议您使用 Karpenter。
GitHub 地址:
https://github.com/kubernetes-sigs/karpenter
00/ 前期预备

在开始之前,您需要具备以下条件:

[*]拥有具有 IAM 权限的 AWS 账户,以创建 EKS 集群。
[*]如果您计划直接运行本教程中的下令,还需要一个 AWS Cloud9 环境。
[*]安装并设置 AWS CLI。
[*]安装 Kubernetes CLI (kubectl)。
[*]安装 Terraform CLI。
[*]安装 Helm(Kubernetes 的包管理工具)。
01/创建 Cloud9 环境

<blockquote>Tips:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 手把手带你使用Karpenter减少K8s集群资源浪费