我为我们的学生开发了一个web应用程序,现在我想在kubernetes容器环境中运行它。每个用户(可以被视为租户)都有自己的应用程序环境(1:1关系)。应用程序环境由2个pods (1x the服务器,1x数据库)组成,由部署和服务定义。
我正在使用kubernetes v1.17.2,我想使用动态PersistentVolumeClaims的功能,并在删除和重新创建新pod之间保留特定用户(租户)的数据(例如,更新到新的应用程序版本或在硬件重启后)。
我考虑在pod创建时使用环境变量(例如user-1,user-2,user-x,...)并且使用该信息来允许重新使用动态创建的PersistentVolume。
有什么最佳实践或概念可以实现这一点吗?
向谢恩致以最好的问候
发布于 2020-02-13 17:47:09
您希望实现的结果将与您当前使用的解决方案紧密相关。
在云中提供的Kubernetes实例(例如GKE)和预置的Kubernetes实例(例如: kubeadm,kubespray)之间存在差异。
关于保留用户数据的可能性,请参考官方文档:Kubernetes.io: Persistent volumes reclaiming。它展示了一种在pvc中保留数据的方法。
请注意,本地静态置备程序不支持动态置备。
本地卷静态资源调配程序通过检测并为主机上的每个本地磁盘创建PV,并在磁盘释放时清理这些磁盘,来管理预分配磁盘的PersistentVolume生命周期。它不支持动态预配置。
与VMware相反,Vsphere支持动态预配置。如果您正在使用此解决方案,请参阅此documentation
在您的问题中,缺少对您环境中的用户的具体解释。它们是在你的应用程序内部还是在外部?应用程序是否正在对用户进行身份验证?其中一个解决方案是通过服务帐户在Kubernetes内创建用户,并将他们的视图限制为专门为他们创建的命名空间。
有关创建服务帐户的信息,请参阅:Kubernetes.io: Configure service account。
此外,您还可以在Statefulsets上查找。
https://stackoverflow.com/questions/59988135
复制相似问题