我有一个跨两个区域 A 和 B 的 kubernetes 集群。我使用 nfs 卷进行持久存储。我在两个区域都有 nfs 卷。我正在创建一组有状态的 2 个副本,它们将分布在这些区域中(我使用 pod 反亲和性来实现这一点)。现在我希望区域 A 中的 pod 使用区域 A 中的卷,区域 B 中的 pod 使用区域 B 中的卷。
我可以向持久卷添加标签,并将持久卷声明与这些标签进行匹配。但如何确保 pod 的 pvc 不会绑定(bind)到另一个区域中的 pv?
最佳答案
您可以尝试将持久卷声明 (PVC)
绑定(bind)到持久卷 (PV)
,并使用特殊的内置功能在两个区域之间的集群中拆分 Kubernetes Pod标签failure-domain.beta.kubernetes.io/zone
。如果您手动创建卷,则可以使用 failure-domain.beta.kubernetes.io/zone:zoneA
值来标记它们,确保 pod 仅调度到与该区域位于同一区域中的节点持久卷的数量。
例如,为 Node 和 PV 设置label
:
kubectl label node <node-name> failure-domain.beta.kubernetes.io/zone=zoneA
kubectl label pv <pv-name> failure-domain.beta.kubernetes.io/zone=zoneA
从 Kubernetes 官方找到一些有用的信息 documentation 。
关于kubernetes - 在 kubernetes 中共同定位 pod 和持久卷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51441409/