有没有办法在 kubernetes 部署(或 statefulset)中为每个 pod 创建一个持久卷?

Posted

技术标签:

【中文标题】有没有办法在 kubernetes 部署(或 statefulset)中为每个 pod 创建一个持久卷?【英文标题】:Is there a way to create a persistent volume per pod in a kubernetes deployment (or statefulset)? 【发布时间】:2019-04-23 08:30:22 【问题描述】:

我目前正在创建一个 kubernetes 部署,在此部署中,我将副本值设置为 X,并且我想在重新启动相应的 pod 时创建不为空的 X 卷。 我没有使用任何云提供商基础设施,那么请避免使用云服务的命令。

我一直在 kubernetes 文档中寻找答案,我的第一次尝试是为每个绑定到 pv 的 pod 创建一个巨大的持久卷和一个持久卷声明,但它似乎不起作用......

我的期望是有 X 卷不在 pod 之间共享,并且在 pod 因 liveness 探测而被杀死时不会死亡。 我知道任何可以解决问题的可能性!

【问题讨论】:

如果您不使用云服务,您可以使用类似物来处理裸机,例如 glusterfsceph 我听说过 glusterfs,但它似乎是一个非常贪婪的资源,而且部署起来并不容易,如果存在的话,我正在寻找一个轻量级... Ceph 看起来更容易,我会尝试了解它;) 【参考方案1】:

部署副本都使用相同的卷。目前不可能为每个副本创建独立的卷。

StatefulSets 可以定义volumeClaimTemplates,这意味着每个副本一个或多个独立的卷。为此,StorageClass 必须能够进行动态卷配置。

【讨论】:

以上是关于有没有办法在 kubernetes 部署(或 statefulset)中为每个 pod 创建一个持久卷?的主要内容,如果未能解决你的问题,请参考以下文章

从 Kubernetes 节点中删除所有内容

Kubernetes NodePort 自定义端口

基于网络利用率或每秒请求数的 Kubernetes 扩展

如何为 Kubernetes 创建本地开发环境?

有没有办法将函数调用添加到 knex 返回或选择方法?

有没有办法使用 rspec-serverspec 在部署期间测试是不是安装了特定版本的 java 或 tomcat?