发布于: Jul 29, 2022
在传统 Kubernetes 集群之上,工作节点就是最基本的计算单元。这些基本单元定义了各 Pod 所能使用的总容量以及集群的整体运行成本。
以上各个方面当然都很重要,而且对于 Fargate 的业务用例而言具有重要意义。但从核心角度出发,我们真正应该关心的是实际使用容量与您为之付费的容量之间到底存在怎样的差距。
例如,在尝试使用 Fargate 时,很多客户错误地将 Fargate Pod 容量与传统工作节点容量进行直接比较。前文已经提到,Pod 容量属于容器能够全部使用的净容量,而工作节点容量则是您需要为之付费的 CPU 加内存的总容量——但其中只有一部分可被有效用于运行容器。
我们也提到过,在传统 Kubernetes 集群中,根据您的实际业务要求与运营成熟度,集群中往往有 20% 到 50% 的资源被长期闲置。通过使用 Fargate,您可以自动将理论容量使用率提升至接近 100%,借此大大改善资源浪费问题。
当然,上述结论的基本前提,在于假设您能够充分利用为 Pod 分配的全部容量。但很多客户最终也遇到过 EKS Pod 资源利用率仅为 50%,却需要为全部容量付费的情况。这个时候,即使使用 Fargate 也不会带来比传统 EC2 实例更好的任何成本效益。正因为如此,我们才需要“合理调整 Pod 大小”,这不仅将直接决定您的实际运营效能,同时也是对 Amazon Compute Savings Plans 优惠政策的良好补充。
下面,我们详细聊聊如何正确调整 Kubernetes 容器的大小。
在传统 Kubernetes 集群之上,工作节点就是最基本的计算单元。这些基本单元定义了各 Pod 所能使用的总容量以及集群的整体运行成本。以此为基础,我们建议大家充分使用作为可选功能的 Kubernetes 请求限制选项。在容器之上设置 CPU 请求限制以及内存请求限制之后,相关设置将为容器定义虚拟资源沙箱。而如果不在 Pod 上设置这些参数,则所有 Pod 都将争用当前可用的集群总资源(特别是所处工作节点上的资源)。
在 EKS/Fargate 上,使用的则是另外一套完全不同的资源模型。由于集群中不存在工作节点,因此 Pod 本身的大小将直接决定必要的底层容量。要有效使用 Fargate 服务,就必须要正确对 Pod 大小做出设置。正因为如此,正确配置 Pod 才成为实现良好性能、避免资源浪费的必要前提。
您可以参阅此份说明文档中的对应部分,或者观看 EKS/Fargate re: Invent 突破性讲解,以了解在 Fargate 部署中设定 Kubernetes 容器大小的更多详细信息。总结来讲,其中的基本逻辑就是读取各个容器中的“请求”,而后应用这些资料中提出的资源分配方法。
另外,您所指定的 Pod 大小(通过显式请求实现)还应高度契合您的工作负载模式。在理想情况下,我们需要尽可能充分运用所指定的资源容量。而要保证这一点,大家必须持续监控 Pod 的资源利用率指标。您可以使用 Datadog 等工具(为 EKS/Fargate 提供开箱支持)监控各个 Pod,也可以使用本文中推荐的 Prometheus 与 Grafana 实施监控。
请注意,运行在 EKS/Fargate 上的各 Pod 能够全面支持 Kubernetes 横向 autoscaler 与纵向 autoscaler。开发人员可以使用前者根据工作负载增加及减少 Pod 数量,并使用后者提升或削减分配给特定 Pod 的资源总量。不过二者之间无法良好协同,因此如果您希望让 Kubernetes 自动调整各 Pod 的大小,只能根据实际资源消费模式二选其一。总之,我们的目标非常明确——尽可能将已分配资源的利用率提升至 100%,一切措施都应为这项目标服务。
在本文中,我们介绍了一项新功能,可帮助 EKS 客户在使用 Fargate 部署 Kubernetes Pod 时充分享受 AmazonCompute Savings Plans 带来的优惠政策。之前,只有通过 Amazon ECS 启动的 Fargate 任务才有资格享受 Amazon Compute Savings Plans 折扣。另外,我们还借此机会讨论了 EKS/Fargate 组合提出的价值主张,特别是如何运用无服务器方法显著降低业务体系的总体拥有成本(TCO)。
另外需要强调的是,Fargate 并不是适用于一切应用场景的万灵药。在很多情况下,客户仍然有理由继续使用传统 EC2 实例,例如需要特定硬件支持(如 GPU)或选择特定实例类型进行微调部署等。除此之外,使用 Fargate 进行 EKS 部署时还应关注其他一些注意事项以及一些可能不适合 Farget 的案例场景,具体信息请参阅此说明文档中的对应部分。请定期关注这些文档页面,我们将不断向 EKS 及 Fargate 引入更多新功能,大家敬请期待!
如果您对本文中讨论的 Fargate 助益抱有兴趣,并希望体验 EKS 与 Fargate 相结合带来的奇妙化学反应,请从我们的用户入门指南起步。
相关文章