我之前创建了一个使用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?
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 build)或kubeless,因为你所描述的听起来就像无服务器的概念。或者,如果您正在考虑更多关于乔布斯,那么也许是旅(https://brigade.sh)。(有关更多信息,请参阅https://www.quora.com/Is-Kubernetes-suited-for-long-running-batch-jobs)如果您希望运行提供请求的Web应用程序工作负载,请注意您不需要杀死无法响应k8s的容器,因为k8s将监视并重启它们。
我不知道swarm足以比较。我怀疑它对你来说会更容易,因为它更专注于docker(k8s API旨在支持其他运行时),但也许其他人可以对此发表评论。无论是使用swarm还是帮助你,我都会猜测取决于你的动机。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。