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

时间:2018-05-21 10:06:47

标签: kubernetes google-cloud-platform google-kubernetes-engine istio

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

2 个答案:

答案 0 :(得分:1)

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

使用gcloud命令将映像导出到容器注册表。 gcloud docker-推送[您的图像容器注册表路径] 使用UIgcloud command

部署映像

暴露端口{2181 9092-9099}或在kubernetes上部署后在拉出的映像中暴露的端口。

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

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

答案 1 :(得分:0)

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

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

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

我没有使用Ignite,docs提供了逐步指导。也许其他人可以分享其他资源。

关于Python,只需将您的ML模型停靠在任何其他Python应用程序中。在official docker image for Python中,你会找到一个基本的Dockerfile来做到这一点。将docker镜像推送到注册表后,只需创建一个描述deployment的YAML文件并将其应用于Kubernetes。

作为最后一步的替代方法,您可以使用Draft来停泊和部署Python代码。

祝你好运!