kubernetes - 在 kubernetes 中共同定位 pod 和持久卷

标签 kubernetes nfs persistent-volumes persistent-volume-claims kubernetes-cluster

我有一个跨两个区域 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/

相关文章:

kubernetes - 如何为 Kubernetes 配置 'efs-provider'?

升级后 Kubernetes 停止工作

amazon-web-services - 一个集群的多个环境共享相同的 Terraform 状态

java - 写入 NFS 存储的文件有时会损坏

mount.nfs : requested NFS version or transport protocol is not supported

kubernetes - Helm 升级过程中无法重新创建部署,因为 PersistentVolumeClaim 和 Service 无法替换

azure - Azure Openshift 集群的持久卷

kubernetes - kubectl port-forward 如何工作?

kubernetes 连接在部署期间被拒绝

nginx - 为什么我的代码更改没有立即反射(reflect)出来?