【问题标题】:Does in Kubernetes a PV/PVC guarantees sticky mounting of pods?在 Kubernetes 中,PV/PVC 是否能保证 Pod 的粘性安装?
【发布时间】: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 的用途。

标签: kubernetes kubernetes-pvc


【解决方案1】:

在失败后使用卷的 Pod 将始终重新附加到相同的卷

是的,Pod 将重新附加到同一个卷,因为它仍然在其清单中声明了相同的 PVC。

基本上假设 Pod_A 已连接到 Volume_X,那么 Pod_A 会失败,但同时会将 Volume_Y 添加到可能满足 PVC 要求的集群中。

Pod 在其清单中仍然具有相同的 PVC,因此它将使用相同的卷。但如果您创建一个新的 PVC,它可能会绑定到新卷。

那么当 Pod_A 重新创建时会发生什么,它总是挂载到 Volume_X 还是有可能挂载到新的 Volume_Y?

Pod 在其清单中仍然具有相同的 PVC,因此它将使用由该 PVC 绑定的卷。只有当您创建新的 PVC 时,该声明才能绑定到新卷。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-13
    • 2017-10-27
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    相关资源
    最近更新 更多