Instacart在Kubernetes上创建自助式Apache Flink平台

Instacart 将 Apache Flink 工作负载从 AWS EMR 迁移到 Kubernetes

Instacart 为了满足组织内部对 Flink 数据处理用例的高需求,将 Apache Flink 工作负载从 AWS EMR 迁移到 Kubernetes。这一举措不仅简化了平台使用,还降低了运营和基础设施成本。

背景与挑战

Instacart 自 2021 年起在 AWS EMR 上使用 Apache Flink,应用场景包括实时决策、数据增强、机器学习特征生成和 OLAP 数据摄取。随着 Flink 的使用逐渐增加,50 个产品团队运行了数百个管道。然而,随着更多团队的加入,EMR 的局限性逐渐显现,包括缺乏秘密和配置管理、细粒度权限、Flink 多版本支持和 CI/CD 支持。此外,EMR 的集群自动扩展和作业故障恢复效果不佳,用户需要通过 SSH 与集群节点交互,缺乏安全和审计工具。

Instacart 的数据基础设施工程师 Sylvia Lin 指出,在 EMR 上扩展 Flink 的挑战在于无法满足高需求,且缺乏原生工具使得在 EMR 上实现 Flink 自助服务变得困难。

迁移到 Kubernetes

为了应对这些挑战,团队决定使用 Kubernetes 运行 Flink 集群,主要原因是其内置的容错和自动扩展功能、可用工具和强大的社区支持。他们利用 2022 年初发布的 Flink Kubernetes 操作符,并创建了自定义控制器以帮助服务配置和入职。迁移到 Kubernetes 提供了对 Flink 开发和部署的更多控制,包括自动构建和部署、秘密和配置管理以及服务隔离。

团队还使用 Karpenter 进行 Kubernetes 集群节点管理,以满足复杂的资源隔离需求。Karpenter 可以从一开始就提供合适大小的节点,并为 Flink 任务提供更好的装箱,优于标准的集群自动扩展器。

迁移后的成果

从 EMR 迁移到 Kubernetes 后,管道入职时间从一周减少到几分钟,减少了由于许多手动步骤导致的人为错误。团队计算得出,节省了 50 周的开发工作量,运营工作量减少了 20%,开发人员生产力提高了 15%。此外,计算实例的基础设施成本降低了 50-70%。由于自动故障恢复,团队成功避免了以往常见的夜间关键事件响应。

通过这一迁移,Instacart 不仅提升了平台的可扩展性和易用性,还显著降低了运营成本和基础设施开销。

阅读 29
0 条评论