kubernetes - 将PVC连接到具有多个副本的部署时,PVC实际如何工作?

标签 kubernetes persistent-volume-claims kubernetes-pvc

我的Kubernetes部署已附加PVC,并且具有3个副本。我试图理解它的实际含义。 3个副本都位于不同节点上的不同区域中,但是Pod可以同时访问同一块存储。
所以我的问题是物理磁盘位于何处?如果说区域1中的节点1,那么区域2中的节点如何在没有网络的情况下访问它?如果需要网络,则可能不会同步数据?如果我在达拉斯有一个工作节点,在伦敦有一个工作节点,该怎么办?他们仍然能够访问同一PV并同时更新吗?
我试图使用它来存储一些缓存数据,因为看起来所有的Pod都可以访问它,但是我想到的太多问题让我无法克服。感谢您提前提出任何有见地的答案。

最佳答案

Kubernetes PersistentVolume是一个抽象。 PV与不同的存储系统一起使用,它们可能具有不同的属性。例如。您正在使用的Storage Class可能会提示它是否在云区域中的所有区域中可用,或者仅在一个区域中可用。 PersistentVolume的Access Mode也会影响您所有的Pod是否可以从不同的节点同时访问该卷。
在大多数情况下,PV一次只能在单个区域和单个节点上使用。但是例如由例如NFS可以从多个节点和区域中获得。
PersistentVolume使用Deployment时,所有副本都引用相同的卷。如果使用多个副本,这可能会出现问题,具体取决于您的存储系统。
使用StatefulSet时,所有副本都引用它们自己的唯一卷。
为了在Kubernetes这样的分布式环境中使用缓存,我会考虑使用可以通过网络分发和访问的东西,例如Redis

where the physical disk locates?


这取决于为您的存储类别配置的存储系统,但是通常它位于另一台服务器上,例如AWS EBSGoogle Persistent Disk

If it's with say node 1 in zone 1, then how does node in zone 2 access it without network? If it requires network, then it's possible that the data will not be synced?


多个区域中可用的PV通常会同步同步(例如,以更高的写入延迟进行权衡),但只能同步到附近的另一个区域。如果您需要地理复制的数据,最好考虑使用异步方法,例如Apache Kafka

关于kubernetes - 将PVC连接到具有多个副本的部署时,PVC实际如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63695888/

相关文章:

kubernetes - Kubernetes集群搭建工具和生产运行工具的区别

kubernetes - Istio VirtualService 和 Kubernetes Service 有什么区别?

mysql - 无法部署 MySQL pod。 --initialize 指定但数据目录中有文件

kubernetes - Kubernetes 删除 Pod 后 PV/PVC 的状态

kubernetes - 如何在本地设置上创建可由 Kubernetes 中的多个 pod 和 cronjobs 访问的 PV 和 PVC

docker - 在挂载 “hostpath PV ”到Pod时保留Pod目录文件

Kubernetes pod 无法解析主机 :

kubernetes - 尝试将 prometheus-operator 和服务监视器收集的自定义指标推送到 AWS CloudWatch

Kubernetes PVC 删除 POD 的内容