1

我之前创建了一个使用 Docker Python SDK 生成 Docker 容器的 Flask 服务器。当客户端到达特定端点时,服务器将生成一个容器。它将维护队列,并且能够杀死不响应请求的容器。

我想迁移到 Kubernetes,但我开始认为我当前的服务器将无法像在 docker 中那样自动“生成”作业作为 pod。

docker.from_env().containers.run('alpine', 'echo hello world')  

Docker Swarm 是一个更好的解决方案,还是在 Kubernetes 中进行了隐藏的实践?Kubernetes Python API 是否会成为自动生成 Pod 和作业的逻辑解决方案,其中 Flask 服务器是管理集群内其他 Pod 的 Pod?

4

1 回答 1

2

'Kubectl run' 与 'docker run' 非常相似,因为它将创建一个带有基于 docker 映像的容器的 Pod(例如,我如何从 Kubernetes pod 中运行 curl 命令)。有关更多比较,请参阅https://kubernetes.io/docs/reference/kubectl/docker-cli-to-kubectl/。但是您使用 k8s 运行的是包含容器的 Pod/Jobs,而不是直接运行容器,因此这将为您增加一层额外的复杂性。

Kubernetes 更多的是编排服务,而不是运行短暂的作业。它有一些特性,可以用来运行作业,但这不是它的中心焦点。如果您正朝着这个方向前进,您可能希望查看 knative(和 knative 构建)或 kubeless,因为您所描述的听起来更像是无服务器概念。或者,如果您更多地考虑乔布斯,那么也许是旅(https://brigade.sh)。(有关更多信息,请参阅https://www.quora.com/Is-Kubernetes-suited-for-long-running-batch-jobs)如果您正在寻找运行服务请求的 Web 应用程序工作负载,请注意您不需要杀死无法在 k8s 上响应的容器,因为 k8s 将为您监视并重新启动它们。

我对swarm的了解不够好,无法进行比较。我怀疑这对您来说会更容易一些,因为它更集中地针对 docker(k8s API 旨在支持其他运行时),但也许其他人可以对此发表评论。我想使用 swarm 是否对你有帮助取决于你的动机。

于 2018-12-26T18:46:10.773 回答