我以前创建了一个Flask服务器,该服务器使用Docker Python SDK生成Docker容器。当客户端到达特定端点时,服务器将生成一个容器。它可以维护队列,并且可以杀死没有响应请求的容器。
我想向Kubernetes迁移,但是我开始认为我当前的服务器将无法像docker中那样自动“生成” pod。
docker.from_env().containers.run('alpine', 'echo hello world')
Docker Swarm是否是一个更好的解决方案,还是在Kubernetes中进行了隐藏的实践? Kubernetes Python API是否会是自动生成Pod和作业的逻辑解决方案,而Flask服务器是管理集群中其他Pod的Pod?
答案 0 :(得分:2)
'Kubectl run'与'docker run'非常相似,因为它将基于docker映像(例如How do i run curl command from within a Kubernetes pod)创建一个带有容器的Pod。有关更多比较,请参见https://kubernetes.io/docs/reference/kubectl/docker-cli-to-kubectl/。但是,使用k8运行的是包含容器而不是直接运行容器的Pod / Job,因此这将为您增加一层额外的复杂性。
Kubernetes更多地是关于服务的编排而不是运行短暂的工作。它具有一些功能,可用于运行作业,但这不是其重点。如果您朝着这个方向发展,那么您可能想看一下knative(和knative构建)或kubeless,因为您所描述的听起来很像无服务器概念。或者,如果您想更多地考虑乔布斯,那么也许是旅(https://brigade.sh)。 (有关更多信息,请参见https://www.quora.com/Is-Kubernetes-suited-for-long-running-batch-jobs)。如果您要运行可处理请求的Web应用程序工作负载,请注意,由于k8将为您监视并重新启动它们,因此您无需杀死无法在k8上响应的容器。
我不知道该如何进行比较。我怀疑这对您来说会容易一些,因为它更集中于docker(k8s API旨在支持其他运行时),但是也许其他人可以对此发表评论。我猜想使用群体是否对您有帮助,取决于您的动机。