代码之家  ›  专栏  ›  技术社区  ›  rishi007bansod

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

  •  -2
  • rishi007bansod  · 技术社区  · 6 年前

    我想使用基于kubernetes的部署在云中部署我的应用程序。它由3层Kafka、Ignite(作为数据库和处理)和Python(ML引擎)组成。 从Kafka层我们得到数据流输入,然后传递给Ignite进行处理(Feature Engg)。在处理完数据后,将传递给python 用于进一步ML预测的服务器。我如何将这个单块应用程序分解为Kubernetes中的微服务? 也可以使用 Istio 提供一些优势?

    2 回复  |  直到 6 年前
        1
  •  0
  •   Ignacio Millán    6 年前

    这是可能的,事实上,这些工具很容易在kubernetes中部署。首先,您需要在Kubernetes基础知识方面获得一些专业知识,特别是在 statefulsets persistent volumes 因为Kafka和Ignite是有状态的组件。

    要在kubernetes中部署kafka集群,请遵循此存储库中的说明: https://github.com/Yolean/kubernetes-kafka

    还有其他的选择,但这是我在生产环境中测试过的唯一一个。

    我没有点火的经验,这个 docs 提供逐步指导。也许其他人可以共享其他资源。

    关于python,只需像其他任何python应用程序一样将ML模型固定。在 official docker image for Python 你会找到一个基本的dockerfile。将Docker映像推送到注册表后,只需创建一个描述 deployment 并应用于Kubernetes。

    作为最后一步的备选方案,您可以使用 Draft 对python代码进行Dockerize和部署。

    祝你好运!

        2
  •  1
  •   Alioua    6 年前

    您可以在上使用bitnami/kafka docker hub 如果需要预构建图像,请从Bitnami获取。

    使用gcloud命令将图像导出到容器注册表。 gcloud docker--push[图像容器注册表路径] 使用部署映像 UI gcloud command

    暴露端口2181 9092-9099或在Kubernetes上部署后在拉出来的图像中暴露的端口。

    这是 link 在Google Compute上的Ignite图像中,您只需将其部署在Kubernetes引擎上,并公开相应的端口即可。

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