Docker 为每个活动用户模拟隔离环境

Docker 为每个活动用户模拟隔离环境,docker,kubernetes,Docker,Kubernetes,我们有以下场景:在我们的应用程序中,在用户登录后,他们可以使用SSH连接到自己的虚拟环境中。这些环境应该彼此完全隔离,不必是有状态的 我们的目标是为每个活动用户提供一个完全隔离的容器化环境(每次用户想要SSH时运行docker映像来模拟用户的环境) 我们有两个想法来实现这一目标 第一个想法是拥有一个名为“容器管理器”的微服务。每当用户希望SSH连接到她的环境中时,容器管理器都会查看数据库以查看哪些POD可用。如果没有可用的(=其他用户使用了所有pod),经理将使用动态部署新pod。部署pod后,

我们有以下场景:在我们的应用程序中,在用户登录后,他们可以使用SSH连接到自己的虚拟环境中。这些环境应该彼此完全隔离,不必是有状态的

我们的目标是为每个活动用户提供一个完全隔离的容器化环境(每次用户想要SSH时运行docker映像来模拟用户的环境)

我们有两个想法来实现这一目标

  • 第一个想法是拥有一个名为“容器管理器”的微服务。每当用户希望SSH连接到她的环境中时,容器管理器都会查看数据库以查看哪些POD可用。如果没有可用的(=其他用户使用了所有pod),经理将使用动态部署新pod。部署pod后,它会将其“免费”保存到DB中。 此解决方案的问题在于,来自客户端的流量必须路由到特定的pod。我不确定这是否可以实现,因为豆荚在设计上是短暂的。路由将如何工作

  • 另一种选择是使用单个微服务,每当用户希望SSH到其环境中时,该服务都会运行docker容器,然后在用户注销后终止该进程。这个问题是(a)在docker内部运行docker,以及(b)在单个微服务中运行多个进程

  • 有没有更好的设计,使我们不必绑定“一个pod:一个用户”,并且在一个pod上有多个孤立的环境? 实现这一目标的理想Kubernetes体系结构是什么?或者Kubernetes不是适合这种情况的工具

  • 让容器管理员为您的用户创建一个单独的服务和一个pod,以确保所有请求都路由到同一个pod。这种方法意味着您不必在docker中与docker一起使用特权pod

  • 拥有一个特权pod,该pod具有使用docker或runc中的docker为用户启动和终止容器的服务

  • concourse处理构建容器并允许您使用CLI动态执行它们的方式听起来与您需要的非常相似。他们使用第二种方法

  • 让容器管理员为您的用户创建一个单独的服务和一个pod,以确保所有请求都路由到同一个pod。这种方法意味着您不必在docker中与docker一起使用特权pod

  • 拥有一个特权pod,该pod具有使用docker或runc中的docker为用户启动和终止容器的服务

  • concourse处理构建容器并允许您使用CLI动态执行它们的方式听起来与您需要的非常相似。他们使用第二种方法