【发布时间】:2021-10-24 19:35:01
【问题描述】:
我想了解是否通过 PVC/PV 一个在失败后使用卷的 pod 是否总是会重新附加到同一个卷。基本上我知道这可能是 Statefulset 的情况,但我试图了解这是否也可以通过 PVC 和 PV 实现。本质上假设 Pod_A 连接到 Volume_X,那么 Pod_A 会失败,但同时将 Volume_Y 添加到可能满足 PVC 要求的集群中。那么当 Pod_A 重新创建时会发生什么,它总是挂载到 Volume_X 还是有可能挂载到新的 Volume_Y 上?
【问题讨论】:
-
您说的是单个 pod 还是部署?部署使用一个特定的 PVC。因此,此部署的每个 pod 将使用相同的 PVC。请记住,如果您需要
RWX访问,则后备存储类型需要支持此访问模式。 -
好的。因此,假设我在部署中有 3 个 Pod,它们都同时失败。当它们重新启动时,它们中的每一个都会“随机”拾取先前创建的 3 个存储中的一个,对吗?除非我使用可以将 Pod 实例/身份关联到特定卷实例的 Statefulset,对吗?
-
如果我们在同一个部署中有三个 pod,那么这三个 pod 将使用相同的 PVC,即“相同的存储”。如果我们需要为这三个 Pod 提供三个单独的 PVC,那么这三个 Pod 就有一个身份(或状态),我们需要一个有状态的集合。然后我们可以使用
VolumeClaimTemplates 为有状态集中的每个 pod 生成一个 PVC。 -
如果(3)个 Pod 有身份,那么即使 PVC 在部署清单中很常见,那么这些 Pod 获得不同的卷并且总是映射到相同的卷(重启后),我是否更正?还是我需要创建 3 个不同的 PVC,因此需要创建 3 个不同的部署清单?
-
如果三个 pod 应该有三个独立的“存储”,它们需要单独的 pvcs。这就是
StatefulSet中的VolumeClaimTemplates 的用途。