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 环境
Tips:
标签:--,手把手,Spot,实例,Karpenter,K8s,节点,karpenter From: https://www.cnblogs.com/cloudpilot-ai/p/18659767/eks-cost-with-karpenter