问题描述
我有一个容器(一个机器学习应用程序),它能够加载存储在持久卷中的预先训练的 ml 模型。我可以通过应用程序的 REST API 提供其名称来要求应用程序加载特定模型。
现在我想扩展这个应用程序,以便我可以在任何副本(不是所有副本)中加载任何模型,并且应该能够解析来自该模型的数据。
我知道这可以通过让多个部署和多个服务指向每个部署来完成,这样每个实例都有一个单独的节点端口,我可以通过这些不同的节点端口访问每个实例的 REST API。通过这样做,我可以记录我自己在哪个实例上加载了哪个模型。
是否有任何推荐的方法可以在不进行多次部署的情况下通过副本来完成此要求? (就像在服务级别维护带有副本和手动负载均衡器的单个部署文件)
解决方法
正如您提到的,实现这一目标的首选方法是通过多个部署和服务。
除非手动创建,否则副本集由部署管理,您将无法拥有多个副本集运行不同版本的单个部署。
对于您来说,每个版本都有一个服务 + 部署,并且在前面有一个入口来根据某些信息路由流量,这肯定会更容易。它可以是标题、子域、路径等。
要生成所有部署和服务,您可以查看 kustomize。