在 Kubernetes 部署中为每个 pod 附加新的 azure 磁盘卷

Attach new azure disk volume per pod in Kubernetes deployment

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

基本上我有以下限制:

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

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

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

我不确定您为什么需要使用 StatefulSet,但我唯一看到的就是创建您自己的 operator for your application. The operator would have a controller that manages your pods similar to what a ReplicaSet,但例外情况是对于每个实例化的新 pod PVC 已创建。

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

可能会更好

✌️

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

查看此说明,您应该关注 StateFull 应用程序。从我的角度来看,您似乎在 StateFull application

中强制使用 Deployment 而不是 StateFullSet

在你的例子中你可能需要 pv 支持不同的 access modes.

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

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