![]() |
1
4
您好,我认为您应该忘记kubernetes,想想Django应用程序的体系结构和功能。我想你已经构建了一个web应用程序,它提供了一些“上传图像”功能,然后你就有了代码,可以在某处“存储”这个图像。在一个非常简单的场景中,如果您在笔记本电脑上运行应用程序,您的web应用程序被配置为将此内容保存到本地文件夹,更高级的示例是,您将应用程序部署到VM或云VM,例如AWS EC2实例,并且您的应用程序将文件保存到此EC2实例的本地存储。问题有两个-如果我们部署了两个web应用实例,会发生什么-是否可以配置和运行-以便它们“共享”相同的文件夹来保存图像?我想这就是你想要的,否则你的应用程序不会水平扩展,每个用户都必须点击每个实例,才能上传或检索特定的图像。因此,考虑到这是您应用程序的设计决策,我很确定您已经解决了这一问题,您需要思考-如何共享文件夹?一个bucket,以便我的web应用程序的所有实例都可以保存文件?如果在任何云上旋转3个不同的VM,则必须使用某种clour存储,以便所有三个实例都指向相同的物理存储位置或NFS驱动器,或者您可以将数据保存到云存储服务S3! 牢记以上所有内容,并清楚地理解,您需要将您的应用程序与区域设置存储的概念分离,尤其是如果您想使其成为无状态的(无论这对您意味着什么),将您的web应用程序打包为docker容器,并作为pod部署在kubernetes集群中,并且将文件保存到本地存储不会有任何进展,由于每个pod,每个docker容器都将使用底层kubernetes worker(vm)存储来保存文件,因此另一个实例将在其他一些vm等上保存文件。 Kubernetes为希望在Kubernetes集群中“共享”一些本地存储(当然还有持久存储)的应用程序(POD)提供了这种抽象。上面我没有添加的内容是pod和工作者存储(意味着如果您将文件保存在kubernetes工作者或pod中),一旦此vm/实例重新启动,您将丢失数据。所以你想要耐用的东西。 长话短说, 1) 如果kubernetes集群支持,则可以部署应用程序/pod和持久卷声明。现在的情况是,您可以将某种文件夹/存储装载到pod中,这些文件夹/存储将由集群可用的任何东西(某种NFS存储)进行备份。 https://kubernetes.io/docs/concepts/storage/persistent-volumes/ 2) 您可以将这种共享公共本地存储的需求“外包”给某个外部提供商,例如,一个常见的案例使用S3存储桶,而不是解决kubernetes上的问题-只需在kubernetes中保留并配置应用程序即可。 我希望我给了你一些基本的想法。 |
![]() |
2
1
注: Kubernetes 1.14 现在(2019年3月)提供了持久的本地存储管理,现在是GA,它:
这可能有助于为您的案例确保真正持久的存储。
如所述
x-yuri
在里面
the comments
:
|
![]() |
3
0
您可以使用ipfs https://pypi.org/project/django-ipfs-storage/ 使用此图像创建容器 https://hub.docker.com/r/ipfs/go-ipfs/ 在同一个pod中,您可以引用为“localhost” |
![]() |
jun · Kubernetes的出口可能是503 UC错误的原因吗? 1 年前 |