我们使用机器学习技术将英文博客翻译为简体中文。您可以点击导航栏中的“中文(简体)”切换到英文版本。
使用 Bottlerocket 和 Karpenter 对 Snowflake Corporate 的 Kubernetes 基础设施进行现代化改造
Snowflake 企业 IT 云运营进入了其云基础架构演变的关键时刻。在 Amazon Elastic Kubernetes Service(Amazon EKS)上管理大规模容器化工作负载需要现代、安全和高效的操作系统。在 Amazon Linux 2 (AL2) 上运行的现有设置可以正常运行,但存在一些挑战。安全强化需要频繁更新和修补,从而增加了运营开销。事实证明,确保在大型节点群上进行一致和安全的更新很麻烦。此外,AL2 节点的启动时间较慢,导致扩展效率低下。经过全面评估,亚马逊云科技的容器优化操作系统 Bottlerocket 成为应对这些挑战的理想选择。
迁移策略
从 AL2 过渡到 Bottlerocket 不仅仅是一次技术转变;这是一项战略决策,旨在使 Snowflake 公司的 Kubernetes 基础设施经得起未来考验。考虑到工作负载的规模和复杂性,迁移旨在确保零停机时间、最小中断以及通过自动化实现无缝扩展。为了实现这一目标,Snowflake Corporate 选择了开源 Kubernetes 集群自动扩缩器 Karpenter 以及 NodePool 和 NodeClass 来促进动态节点配置。迁移是分阶段执行的,以最大限度地降低风险并确保稳定性。
迁移步骤
迁移始于集群准备。通过修改 NodePool 和 NodeClass 配置,使用 Bottlerocket 作为默认 AMI 系列,Bottlerocket AMI 集成到 EKS 环境中。根据最小权限原则,对 Amazon Identity and Access Management(IAM)策略进行了优化,以与 Bottlerocket 的安全模型保持一致。
此架构图可视化了迁移策略:

Karpenter 部署取代了传统的静态配置方法,实现了即时节点配置。随后进行了工作负载验证,在生产部署之前,使用暂存环境在 Bottlerocket 节点上测试工作负载。性能监控是使用 Fluentd 和 Datadog 实施的,以跟踪实时指标,安全合规性测试确保了 Bottlerocket 的不可变基础设施与 Snowflake Corporate 的安全策略保持一致。
然后分阶段推出,从无状态应用程序开始。使用节点亲和性、Pod 反关联性和类别来确保优秀的工作负载分布。Bottlerocket 节点的逐步引入确保了工作负载与现有 AL2 实例一起顺利过渡。节点封锁和排空有助于在不中断服务的情况下停用 AL2 实例。
最后,实施了增强的监控和优化。使用 Karpenter 进行自动扩展可以动态调整集群的节点池。性能调整是根据实际工作负载进行的,可观测性的改进提供了对系统运行状况的见解,从而可以主动解决问题。
定义 NodeClass 并将其与节点池关联的示例:
挑战及其应对方式
尽管 Bottlerocket 具有优势,但迁移过程仍面临挑战。一些工作负载最初遇到了与 Bottlerocket 的不可变文件系统不兼容的情况。通过修改应用程序映像使其完全兼容容器并在适用的情况下利用只读配置,解决了这个问题。Bottlerocket 需要重新配置 IAM 角色以使其与其安全模型保持一致,这个问题是通过实施细粒度的访问控制和利用 Karpenter 的 IAM 集成来解决的。为了降低风险,工作负载以增量方式迁移,确保在完全停用 AL2 节点之前应用程序性能保持稳定。
主要好处
迁移极大地提高了安全性、性能和运营效率。不可变节点可防止未经授权的更改并消除配置偏差,从而增强了安全性。由于删除了包管理器、shell 访问和 SSH,攻击面减少了,漏洞也减少了。自动的原子更新确保了节点在不停机的情况下保持安全补丁。
通过优化节点启动实现了更快的节点启动时间,减少了新节点加入集群所需的时间,提高了自动扩展效率,确保了快速重新安排工作负载。Karpenter 通过动态扩展提高了运营效率,确保仅在需要时配置资源,避免了过度配置。通过 Bottlerocket 的轻量级操作系统和 Karpenter 的智能配置实现了成本节约。
性能提升:Bottlerocket 与 AL2
Bottlerocket 一直表现出更快的节点准备就绪速度。初步基准测试显示,与 AL2 相比,Bottlerocket 将节点准备时间缩短了约 5 秒。原生容器镜像缓存使新节点上的每个 pod 缩短了大约 36 秒,与 AL2 相比,不可调度的 pod 快了大约 40 秒。

安全增强:AL2 与 Bottlerocket
对安全改进的直接比较凸显了为什么 Bottlerocket 是更好的选择:

吸取的教训
迁移吸取了宝贵的经验教训。安全性和效率齐头并进,Bottlerocket 的不可改变的设计强化了 Snowflake Corporate 的安全态势。自动化简化了复杂性,因为 Karpenter 的实时扩展消除了手动干预。增量迁移将风险降至最低,分阶段部署允许在不影响生产的情况下微调配置。
结论:对大规模运行 EKS 的企业的更广泛影响
Snowflake Corporate 的 Kubernetes 基础架构成功迁移到 Bottlerocket 和 Karpenter 为该行业开创了新的模式。增强安全性、更快的配置和运营效率的好处可以在其他大规模管理 Kubernetes 的企业中复制。未来的增强功能可能包括人工智能驱动的工作负载调度、与可观测性工具的深度集成,以及使用 Bottlerocket 探索无服务器 Kubernetes。通过采用 Bottlerocket 和 Karpenter,Snowflake Corporate 不仅增强了其安全状况,而且还通过动态扩展实现了性能改进,这突显了现代云原生解决方案在实现高性能、弹性 Kubernetes 环境方面的力量。
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。