Kubernetes似乎支持3种持久化卷的访问模式:ReadWriteOnce、ReadOnlyMany、ReadWriteMany。我真的很好奇使用ReadWriteOnce模式卷的pod的调度器策略。例如,我创建了一个pod num=2的RC,我猜这两个pod将被调度到同一个主机,因为它们使用的卷具有ReadWriteOnce模式?我很想知道这部分的源代码。
ReadWriteOnce
ReadOnlyMany
ReadWriteMany
yrefmtwq1#
我觉得DavidO's answer是错的。根据Kubernetes关于访问模式的文档:访问模式为:
因此,今天定义的AccessModes只描述节点连接(而不是pod挂载)语义,并不强制执行任何内容。因此,为了防止两个pod挂载相同的PVC,即使它们计划在同一个节点上运行,您可以使用pod anti-affinity。这与不将一个卷挂载到同一节点上调度的2个Pod不同。但是反亲合可以用来要求调度器不要在同一个节点上运行2个pod。因此,它阻止将一个卷装入2个pod。
6ojccjat2#
如果某个pod使用ReadWriteOnce访问模式挂载卷,则其他pod无法挂载该卷。在GCE(Google Compute Engine)中,唯一允许的模式是ReadWriteOnce和ReadOnlyMany。因此,要么一个pod挂载卷ReadWrite,要么一个或多个pod挂载卷ReadOnlyMany。如果pod使用的GCE卷已经以读写方式装载,则调度程序将不允许对其进行调度。(参考文件:persistent volume access modes)
ReadWrite
lnlaulya3#
在Kubernetes中,可以静态(使用存储类)或动态(持久卷)配置存储。一旦存储可用于绑定和声明,您需要配置Pod或节点连接到存储(持久卷)的方式。这可以在以下四种模式中配置。
ReadOnlyMany(ROX)
在此模式下,运行在不同节点上的多个Pod可以连接到存储并执行读取操作。
ReadWriteMany(RWX)
在这种模式下,运行在不同节点上的多个Pod可以连接到存储并执行读写操作。
读写一次(RWO)
在此模式下,仅在一个Node中运行的多个Pod可以连接到存储并执行读写操作。
ReadWriteOncePod(RWOP)
在此模式下,卷可以通过单个Pod以读写方式挂载。如果您希望确保整个集群中只有一个pod可以读取或写入该PVC,请使用ReadWriteOncePod访问模式。仅支持CSI卷和Kubernetes版本1.22+。请参阅文档以获得更多信息。
3条答案
按热度按时间yrefmtwq1#
我觉得DavidO's answer是错的。根据Kubernetes关于访问模式的文档:
访问模式为:
因此,今天定义的AccessModes只描述节点连接(而不是pod挂载)语义,并不强制执行任何内容。
因此,为了防止两个pod挂载相同的PVC,即使它们计划在同一个节点上运行,您可以使用pod anti-affinity。这与不将一个卷挂载到同一节点上调度的2个Pod不同。但是反亲合可以用来要求调度器不要在同一个节点上运行2个pod。因此,它阻止将一个卷装入2个pod。
6ojccjat2#
如果某个pod使用
ReadWriteOnce
访问模式挂载卷,则其他pod无法挂载该卷。在GCE(Google Compute Engine)中,唯一允许的模式是ReadWriteOnce
和ReadOnlyMany
。因此,要么一个pod挂载卷ReadWrite
,要么一个或多个pod挂载卷ReadOnlyMany
。如果pod使用的GCE卷已经以读写方式装载,则调度程序将不允许对其进行调度。
(参考文件:persistent volume access modes)
lnlaulya3#
在Kubernetes中,可以静态(使用存储类)或动态(持久卷)配置存储。一旦存储可用于绑定和声明,您需要配置Pod或节点连接到存储(持久卷)的方式。这可以在以下四种模式中配置。
ReadOnlyMany(ROX)
在此模式下,运行在不同节点上的多个Pod可以连接到存储并执行读取操作。
ReadWriteMany(RWX)
在这种模式下,运行在不同节点上的多个Pod可以连接到存储并执行读写操作。
读写一次(RWO)
在此模式下,仅在一个Node中运行的多个Pod可以连接到存储并执行读写操作。
ReadWriteOncePod(RWOP)
在此模式下,卷可以通过单个Pod以读写方式挂载。如果您希望确保整个集群中只有一个pod可以读取或写入该PVC,请使用ReadWriteOncePod访问模式。仅支持CSI卷和Kubernetes版本1.22+。
请参阅文档以获得更多信息。