我们使用机器学习技术将英文博客翻译为简体中文。您可以点击导航栏中的“中文(简体)”切换到英文版本。
探索亚马逊 EKS 中的 etcd 碎片整理
简介
亚马逊弹性 Kubernetes 服务 (
在亚马逊 EKS 中了解 etcd
Etcd 用作 Amazon EKS 中的主要数据存储,用于存储集群配置、状态和元数据。它维护
etcd 的主要功能之一是将 Kubernetes API 的数据存储和组织为键值对。它跟踪集群中对象和配置的当前状态,确保实际状态与集群管理员、应用程序开发人员或
多版本并发控制
Etcd 是一个持久的键值存储。它采用多版本并发控制 (MVCC) 机制来确保数据一致性,同时还允许并行读取和写入操作。每个键值对都与一个不断增加的版本号相关联。当为密钥写入新值时,它会收到比前一个更高的版本号。版本是独一无二的,严格按顺序排列。保留了先前的版本,允许对更改进行历史跟踪。存储的这种仅限追加的性质导致数据库大小无限增长。
数据碎片
随着时间的推移,数据会被更新和删除,这可能会导致数据库 内部出现
解决方案概述
etcd 中碎片整理的工作原理
压实
etcd 中的压缩侧重于识别和删除过时的数据,以避免最终耗尽存储空间。etcd 中的每个键值对都分配了一个唯一的索引号,称为修订号。压缩基于这些版本号来识别不再需要或已过期的数据。保留政策决定要保留的数据的修订范围。在压缩过程中,超出此范围的数据被视为符合移除条件。删除后,该数据先前占用的存储空间将被释放,可用于新数据。API 服务器每 5 分钟触发一次压缩操作。
碎片整理
碎片整理包括将数据重写成连续的文件,从而有效地消除碎片化并增强数据局部性。Etcd 分析数据存储以确定碎片级别和有利于数据重组的领域。在分析过程中,etcd 会识别可以将相关数据移动到的连续存储空间。然后,Etcd 移动数据以合并相关的键值对。分散的数据将重新安置到这些连续的存储位置。未使用的空间被释放回文件系统。
对 API 可用性的影响
值得注意的是,碎片整理是一种阻塞操作,这意味着在该过程进行时,它会阻止任何读取或写入操作的发生。这可能会影响 API 服务器与 etcd 的通信,以向客户端提供读写请求。碎片整理所花费的时间取决于需要复制到新数据库文件中的压缩数据量。平均而言,重组每千兆字节的数据最多可能需要 10 秒。我们建议监控 etcd 数据库大小并删除不需要的对象,以最大限度地减少对 API 服务器的性能影响。在
在较大的 etcd 数据库上,通常会在碎片整理过程中看到 API 服务器返回以下错误消息:
Amazon EKS 开发团队正在积极进行改进,以最大限度地减少碎片整理对 API 可用性的影响。一些示例包括向 etcd 客户端引入 gRPC 远程过程调用 (gRPC)
处理 API 超时
在碎片整理期间,预计 API 服务器会间歇性超时。因此,最佳做法是设计客户端应用程序以优雅地处理这些情况。通过构建强大的错误处理机制和纳入重试策略,客户端应用程序可以减轻间歇性超时的影响并保持可靠性。发生超时时,您的应用程序应包含
草率排练
在亚马逊 EKS 中管理碎片整理
底层 etcd 集群及其碎片整理过程由 Amazon EKS 控制平面透明地处理。
Amazon EKS 采用自动维护流程来确保 etcd 的健康和稳定性。亚马逊云科技 负责为您预置、扩展和管理 etcd 实例。这种主动的方法可以保证 etcd 集群节点保持健康,并且任何与碎片相关的潜在问题在影响 Amazon EKS 集群的整体性能之前得到缓解。
最大限度地减少碎片整理的影响
数据库的大小是影响 etcd 中碎片整理时间的关键因素。随着 etcd 数据库变得越来越大,由于需要重组和压缩的数据量增加,碎片整理过程变得更加耗时。为了最大限度地减少碎片整理的影响,请考虑以下做法:
1。移除未使用或孤立的对象
定期审核您的集群,以识别和移除未使用或孤立的对象。这些对象可能包括旧部署、副本集或不再使用的服务。删除不必要的对象会减少 etcd 中的存储占用空间并最大限度地减少碎片的影响。诸如
2。避免使用配置映射和密钥
避免在配置映射和密钥中存储大量数据。谨慎使用这些资源,使它们保持简洁有序,以减少存储在 etcd 中的大型对象的数量。或者,可以考虑使用
3。避开大型 Pod 规格
包含大量嵌入式元数据 (512 K+) 的 Pod 规格可以迅速膨胀 etcd 数据库。在部署进入崩溃循环并随后使用无限版本的 Pod 消耗所有可用的 etcd 存储空间的情况下,这尤其成问题。
4。实施对象生命周期管理
定义和实施对象生命周期管理策略。为生命周期有限的对象设置到期日期或实施保留策略。自动删除过期对象,以防止 etcd 中不必要的数据积累。
限制
5。定期监控 etcd 存储空间使用情况
监控 etcd 存储使用情况,深入了解资源利用率并识别异常增长模式。这可以帮助您主动解决与存储相关的问题,并在需要时采取纠正措施,例如优化对象使用。有关更多详细信息,请参阅
-
Amazon CloudWatch :亚马逊 EKS 与亚马逊 CloudWatch 集成,允许您监控各种集群指标,包括 etcd 磁盘使用情况。你可以使用CloudWatch Insights 来编写自定义查询并提取相关的 etcd 指标。
-
kubectl :你可以使用 kubectl 命令行工具直接获取 etcd 指标。例如,要在亚马逊 EKS v1.26+ 中获取 etcd 指标,你可以运行:
-
Prometheus 和Grafana :适用于 OpenTelemetry 的 亚马逊云科技 发行版 (ADOT) 内置了对 EKS API 服务器监控的支持。要了解有关 ADOT 的更多信息,请参阅监控亚马逊 EKS API 服务器
结论
在这篇文章中,我们向您展示了碎片整理作为 etcd 中的一项关键功能,如何在优化 Amazon EKS 性能和确保集群稳定性方面发挥至关重要的作用。通过主动重组数据和优化存储,碎片整理提高了群集的整体效率并提高了资源利用率。随着 Amazon EKS 继续为组织提供可扩展和弹性的 Kubernetes 部署,我们了解 etcd 成为管理员发挥 Amazon EKS 集群全部潜力的必备工具的细微差别。
要了解更多内容,请查看以下有关在
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。