我的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 EBS或Google 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/