首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Kubernetes处理重复出现的短期任务

如何使用Kubernetes处理重复出现的短期任务
EN

Stack Overflow用户
提问于 2016-11-23 05:31:55
回答 2查看 460关注 0票数 1

我有一个uses服务器(NGINX)和一个基于react的前端,它使用webpack来构建最终的静态源代码。

own服务器有自己的kubernetes deployment + service

在but服务器可以为静态的html/js/css文件提供服务之前,需要构建前端-但在此之后,pod/container可以停止。

我的想法是在was服务器和前端pod之间共享一个volume。前端会将生成的文件写入volume,them服务器可以从那里为它们提供服务。只要前端源码有更新,就需要重新生成文件。

使用kubernetes工具实现这一目标的最佳方式是什么?现在,我正在使用init-container来构建--但这也会导致重启well服务器pod,这并不是必须的。

这是这个问题的最佳/唯一的解决方案吗?或者我应该使用kubernetes的jobs来完成这类任务?

EN

回答 2

Stack Overflow用户

发布于 2016-11-23 06:15:48

有多种方法可以做到这一点。以下是我对此的看法:

选项1:静态文件表示构建的源代码

在这种情况下,您想要提供的静态文件实际上应该打包并构建到您的nginx say服务器的docker镜像中(比如在html目录中)。当您想要更新您的前端时,您需要更新所用图像的版本,并更新pod。

选项2:静态文件表示状态

在这种情况下,您的方法是正确的。你的“状态”(就像数据库一样)存储在一个文件夹中。然后你运行一个初始化容器/任务来初始化'state‘,然后你的webserver pod就可以正常工作了。

我认为选项1会更好,原因有两个:

  1. 您可以通过增加pod副本数量来水平扩展您的pod服务器。在选项2中,你实际上是在处理状态,所以当你想要向底层k8s集群添加更多节点时,这是一个问题(你必须将文件/文件夹从一个卷/文件夹复制到另一个卷/文件夹)。
  2. 静态文件实际上是你的应用程序的源代码。这些不是上传的媒体文件或类似文件。在这种情况下,让它们成为docker镜像的一部分绝对是有意义的。否则,它就会削弱集装箱化和部署的优势。
票数 1
EN

Stack Overflow用户

发布于 2016-11-23 08:33:49

作业Init containers或gitRepo类型的将为您工作。

http://kubernetes.io/docs/user-guide/volumes/#gitrepo

在您的问题中,您不清楚为什么要在不简单地重新部署/更新Pod的情况下更新静态内容。

由于您必须以某种方式构建for服务器Docker镜像,因此最好将静态内容构建到镜像中:部署后没有移动部件,不需要卷或存储。总体而言,它更简单。

如果你使用任何一种自动化工具来构建Docker,那就很容易了。我个人使用Jenkins基于来自git repo的钩子来构建Docker镜像,并且只要代码发生变化,镜像就会被简单地重新构建和部署。

运行作业初始化容器不会给你带来太多好处:确保web服务器继续运行,但有一个带有滚动更新的Deployment也很容易,它将在旧的Pod被拆除之前部署新的web Pod,并且您的服务器也将始终正常运行。

保持简单..。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40752016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档