【问题标题】:Attach new azure disk volume per pod in Kubernetes deployment在 Kubernetes 部署中为每个 pod 附加新的 Azure 磁盘卷
【发布时间】:2020-12-01 12:40:13
【问题描述】:

我有一个包含 3 个副本的 Kubernetes 部署应用程序,每个副本需要 7GB 存储空间,我希望能够附加一个 newazureDisk 存储空间以挂载到每个 pod/在此部署中创建的副本。

基本上我有以下限制:

  • 我必须使用 Deployment,而不是 Statefulset
  • 每次 pod 死亡而新 pod 启动时,它都不应该有状态,并且会附加一个新的空 azureDisk。
  • Pod 不共享其存储空间,每个 Pod 都有自己的 7GB 存储空间。
  • pod 需要使用 azureDisk,因为我需要 7GB 的按需存储,这意味着在我扩展部署副本时动态创建 azureStorage。

使用 azureDisk 时,我需要将它与访问模式类型 ReadWriteOnce 一起使用(如 docs 中所述),它会将唯一的 1 个 pod 附加到该磁盘,但只有在我有 1 个时才有效pod,如果我有超过 1 个 pod,我不能使用相同的声明...有没有办法像第一个声明中的那样动态请求更多存储空间?

注意 1:我知道有一个 volumeClaimTemplates,但这仅与 Statefulset 有关。

注意 2:我不在乎 pod 是否重新启动 100 次,这反过来会创建 100 个 PV,而其中只使用 1 个,这很好。

【问题讨论】:

  • 您能解释一下为什么您需要使用Deployment 而不是StatefulSet,后者旨在解决这类用例吗?

标签: kubernetes azure-aks azure-disk


【解决方案1】:

我不确定您为什么需要使用 StatefulSet,但我认为这样做的唯一方法是为您的应用程序创建自己的 operator。操作员将有一个控制器来管理您的 pod,这与 ReplicaSet 所做的类似,但不同的是,对于每个实例化的新 pod,都会创建一个新的 PVC。

最好弄清楚如何在 StatefulSet 中运行您的应用程序并使用 VolumeClaimTemplates

✌️

【讨论】:

  • 我必须问,为什么部署不能使用像 7G 这样从云提供商处按需获取并在 pod 死亡时永久删除的大容量?为什么需要有状态集?我不能有一个没有状态但仍需要大容量的应用程序吗?甚至没有人需要这样的场景?无论如何,您的解决方案可能会奏效,谢谢。
  • 如果您使用默认的ReclaimPolicy: Delete,它会起作用。但是,PVC 会被重复使用。这里的障碍是您只能在部署清单中指定固定的 PVC 名称,并且所有副本都将使用相同的 PVC 名称,因此您有限制。它们实际上意味着更多的无状态工作负载,其中您的状态是外部的东西,例如数据库。
【解决方案2】:

主要问题是 - 为什么?“如果我有一个没有状态的应用程序,我仍然需要每个 pod 的大容量”

看这个解释你应该关注 StateFull 应用程序。从我的角度来看,您似乎是在强制为 StateFull application 使用 Deployment 而不是 StateFullSet@

在您的示例中,您可能需要 pv 支持不同的access modes

您遇到的主要问题是使用支持模式的 pv ReadWriteOnce 您只能通过单个节点同时绑定一个 pv。因此,由于卷安装失败,您在不同节点中的 pod 将无法启动。您只能将此方法用于 ReadOnlyMany/ReadWriteMany 场景。

请参考其他具有不同访问模式能力的提供商,例如:filestore(gcp)AzureFile(azure)、Glusterfs、NFS

【讨论】:

  • 您不能使用 AzureFiles,因为它意味着文件共享,并且您不想在 pod 之间共享这些文件,唯一的选择是使用 azureDisk,但它只支持 ReadWriteOnce,并且只属于到 1 个豆荚。如果您想要多个 azureDisk,您必须使用带有 VolumeClaim 模板的状态集,该模板将为每个 pod 创建一个卷。但我希望 PV 的生命周期与 pod 的生命周期一样。为什么这么奇怪?顺便说一句,我在 Azure 上,显然我不会仅仅因为这个问题而转向其他云提供商。
  • 更多参考请关注本期:volumeClaimTemplates for deployments
猜你喜欢
  • 2016-07-17
  • 1970-01-01
  • 2022-12-17
  • 2021-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-21
  • 2022-12-06
相关资源
最近更新 更多