繁体   English   中英

如何在Kubernetes中为Web应用程序创建上传文件夹?

[英]How to create an upload folder for a web app in Kubernetes?

我们正在尝试Kubernetes,并考虑迁移我们的webapp,该webapp目前托管在具有vps和负载平衡功能的经典公共云中。

我想知道如何在dockerized应用程序中管理上传文件夹(具有写/读特权),该文件夹中存储了用户上传的文件。

当我们在应用程序中使用大量文件上传功能时,是否有可能拥有一个持久的数据存储空间,使webapp可以在其中上传文件并通过webapp管理它们? 我是否需要更改应用程序的代码并将文件保存到外部对象存储中,还是有一种通过本地文件系统执行此操作的更快方法?

谢谢 !

持久卷是正确的方法。 您可以在Veerendra提供的链接中了解更多信息。 为方便起见,您可以使用某些托管的Kubernetes引擎(例如GKE / EKS / AKS),因为其中的PV部分得到了简化。 您可以在此处找到GCP的指南。

关于重写应用程序-可能需要做一些小改动,因为您将需要使用Pod级数据库。 这也将是一个更合适的解决方案,因为您将基于Kubernetes的负载和其他几个功能,获得一种轻松缩放应用程序的方法。

我在这里不必担心LoadBalancer。 首先,您将对应用程序进行docker化,然后将其放入Pod中,然后将其作为Deployment的一部分,然后将存储抽象为PV。 要了解所有这些工作原理,您可以从这个简单的实验通过Redis部署PHP Guestbook应用程序开始 您可以在此处找到有关将PV与Deployments和StatefulSets一起使用的另一个有用资源。

我猜想,如果您要运行多个pod,您是否需要某种共享文件系统? 因此,所有上载的文档都可以在一个位置获得,而不是分散在多个持久卷中? 如果是这样,您需要某种分布式的文件存储,例如Amazon S3。 更好的是,您可以使用Kubernetes NFS,因此您的代码认为它使用的是本地文件系统,但它由分布式文件存储支持。

看一下这个例子: https : //github.com/kubernetes/examples/tree/master/staging/volumes/nfs NFS可以使用来自GKE,Azure或AWS的永久卷。

就像评论中提到的那样, persistent voulmes是一种选择。 您可以创建一个AWS卷,并将其附加到吊舱。 这篇文章描述了如何做到这一点。

但是,您可能会遇到一个问题。 无法扩展实例数。 我认为,kubernetes不允许在副本之间共享单个elb。 此问题在此处突出显示。 如此处所述,最好切换到像s3这样的对象存储。 尽管可能需要更改代码,但这将是最佳解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM