在 Kubernetes 部署中为每个 pod 附加新的 azure 磁盘卷
Attach new azure disk volume per pod in Kubernetes deployment
我有一个包含 3 个副本的 Kubernetes 部署应用程序,每个副本需要 7GB 存储空间,我希望能够附加一个 new 空 azureDisk 存储空间将安装到在此部署中创建的每个 pod/replica 中。
基本上我有以下限制:
- 我必须使用 Deployment,而不是 Statefulset
- 每次一个 pod 死掉而一个新的 pod 启动时,它不应该有状态,它会附加一个新的空 azureDisk。
- pods不共享存储空间,每个 pod 都有自己的 7GB 存储空间。
- pods 需要使用 azureDisk,因为我需要 7GB 的按需存储,这意味着,当我扩展我的部署副本时动态创建 azureStorage。
使用 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
我有一个包含 3 个副本的 Kubernetes 部署应用程序,每个副本需要 7GB 存储空间,我希望能够附加一个 new 空 azureDisk 存储空间将安装到在此部署中创建的每个 pod/replica 中。
基本上我有以下限制:
- 我必须使用 Deployment,而不是 Statefulset
- 每次一个 pod 死掉而一个新的 pod 启动时,它不应该有状态,它会附加一个新的空 azureDisk。
- pods不共享存储空间,每个 pod 都有自己的 7GB 存储空间。
- pods 需要使用 azureDisk,因为我需要 7GB 的按需存储,这意味着,当我扩展我的部署副本时动态创建 azureStorage。
使用 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