0

我为我们的学生开发了一个 Web 应用程序,现在我想在 kubernetes 容器环境中运行它。每个用户(可以被视为租户)都有自己的应用程序环境(1:1 关系)。应用程序环境由 2 个 pod(1x 网络服务器,1x 数据库)组成,由部署和服务定义。

我正在使用 kubernetes v1.17.2 并且我想使用动态 PersistentVolumeClaims 的功能以及在删除和重新创建新 pod 之间保留特定用户(租户)数据的可能性(例如更新到新的应用程序版本或硬件重启后)。

我考虑过在创建 pod 时使用环境变量(例如 user-1、user-2、user-x...),并使用这些信息来允许重用动态创建的 PersistentVolume。

是否有任何最佳实践或概念如何实现?

最好的问候肖恩

4

1 回答 1

0

您希望实现的结果将与您当前使用的解决方案密切相关。

在云中配置的 Kubernetes 实例(例如 GKE)和本地 Kubernetes 实例(例如:kubeadm、kubespray)之间会有所不同。

关于保留用户数据的可能性,请参考官方文档:Kubernetes.io: Persistent volumes reclaiming。它展示了一种在 pvc 中保留数据的方法。

请注意,本地静态供应商不支持动态供应。

本地卷静态配置器通过为主机上的每个本地磁盘检测和创建 PV,并在释放磁盘时清理磁盘来管理预分配磁盘的 PersistentVolume 生命周期。它不支持动态配置。

Github.com:存储本地静态配置器

与此相反,VMware Vsphere 支持动态配置。如果您使用此解决方案,请参阅此文档

在您的问题中,缺乏对您环境中用户的具体解释。它们是在您的应用程序内部还是在外部?应用程序是否对用户进行身份验证?解决方案之一是通过服务帐户在 Kubernetes 内部创建用户,并将他们的视图限制为专门为他们创建的命名空间。

服务账号创建请参考:Kubernetes.io:配置服务账号

此外,您还可以查看Statefulsets

于 2020-02-13T09:47:08.797 回答