在 kubernetes 中定位 pods 和持久卷

Co locate pods and persistent volumes in kubernetes

我有一个分布在 A 和 B 两个区域的 kubernetes 集群。我正在使用 nfs 卷进行持久存储。我在两个区域中都有 nfs 卷。我正在创建一组有状态的 2 个副本,这些副本将分布在这些区域中(我使用 pod 反亲和性来实现此目的)。现在我希望 A 区中的 pods 使用 A 区中的卷,B 区中的卷使用 B 区中的卷。

我可以向持久卷添加标签并将持久卷声明与这些标签匹配。但是如何确保 pod 的 pvc 不会绑定到另一个区域中的 pv?

您可以尝试将 persistent volume claims (PVCs) 绑定到 persistent volumes (PVs) 并使用特殊的内置标签 failure-domain.beta.kubernetes.io/zone 在两个区域之间的集群中拆分 Kubernetes pods。如果您手动创建卷,则可以用 failure-domain.beta.kubernetes.io/zone:zoneA 值标记它们,确保 pod 仅调度到与持久卷区域相同区域中的节点。

例如,要为节点和 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