在 Kubernetes 中将单体应用程序转换为微服务实现



我想使用基于 Kubernetes 的部署在云中部署我的应用程序。它由3层Kafka,Ignite(作为DB和处理(和Python(ML引擎(组成。 从 Kafka 层我们获得数据流输入,然后将其传递给 Ignite 进行处理(特征 engg(。处理后,数据被传递给python 服务器用于进一步的 ML 预测。如何将此整体式应用程序分解为 Kubernetes 中的微服务? 使用 Istio 也能提供一些优势吗?

如果你想要预构建映像,你可以在 bitnami 的 docker hub 上使用 bitnami/kafka。

使用 gcloud 命令将映像导出到容器注册表。 Gcloud docker -- push [您的镜像容器注册表路径] 使用 UI 或 gcloud 命令部署映像

在 kubernetes 上部署后,公开端口{2181 9092-9099} 或拉取映像中公开的端口。

这是 Google Compute 上 Ignite 映像的链接,您只需将其部署在 kubernetes 引擎上并公开相应的端口即可。

对于python,你只需要按照ignacio的建议使用dockerfile构建你的python应用程序。

这是可能的,事实上这些工具很容易部署在 Kubernetes 中。首先,你需要获得一些 Kubernetes 基础知识,特别是在有状态集和持久卷方面,因为 Kafka 和 Ignite 是有状态组件。

要在 Kubernetes 中部署 Kafka 集群,请按照以下存储库中的说明进行操作:https://github.com/Yolean/kubernetes-kafka

还有其他替代方案,但这是我在生产环境中测试过的唯一替代方案。

我没有使用 Ignite 的经验,本文档提供了分步指南。也许其他人可以共享其他资源。

关于 Python,只需将您的 ML 模型像任何其他 Python 应用程序一样进行 docker化。在 Python 的官方 docker 镜像中,你会发现一个基本的 Dockerfile 来做到这一点。将 docker 镜像推送到注册表后,只需创建一个描述部署的 YAML 文件并将其应用于 Kubernetes。

作为最后一步的替代方法,您可以使用 Draft 对 Python 代码进行 dockerization 和部署。

祝你好运!

最新更新