Kubernetes忽略PVC RWO访问模式并在不同节点上部署POD

Kubernetes忽略PVC RWO访问模式并在不同节点上部署POD,kubernetes,kubernetes-pvc,kubernetes-deployment,Kubernetes,Kubernetes Pvc,Kubernetes Deployment,我有一个Kubernetes v1.17.0集群,它有多个节点。我已经创建了访问模式设置为RWO的PVC。从Kubernetes文档: ReadWriteOnce--卷可以通过单个节点以读写方式装入 我使用的Cinder volume插件不支持ReadWriteMany 当我创建两个安装相同PVC的不同部署时,Kubernetes有时会将它们部署在两个不同的节点上,这会导致POD失败 这是期望的行为还是我的配置中存在问题?在同一节点上提供PV/PVC和部署新POD只能通过以下方式实现。然而,如果

我有一个Kubernetes v1.17.0集群,它有多个节点。我已经创建了访问模式设置为RWO的PVC。从Kubernetes文档:

ReadWriteOnce--卷可以通过单个节点以读写方式装入

我使用的Cinder volume插件不支持ReadWriteMany

当我创建两个安装相同PVC的不同部署时,Kubernetes有时会将它们部署在两个不同的节点上,这会导致POD失败


这是期望的行为还是我的配置中存在问题?

在同一节点上提供PV/PVC和部署新POD只能通过以下方式实现。然而,如果你想让库伯内特斯为你决定,你必须使用


但是,为了验证您是否以正确的方式执行了所有操作,请参阅。

Kubernetes中的永久卷可以绑定到节点或可用性区域,因为底层硬件:服务器中的存储驱动器、单个数据中心中的SAN不能由存储资源调配器移动

现在,存储资源调配器如何知道需要在哪个节点或哪个可用性区域中创建持久卷?这就是为什么持久性卷声明具有卷绑定模式,在这种情况下设置为
WaitForFirstConsumer
。这意味着,在安排装载持久卷的第一个pod之后,将进行资源调配。有关更多详细信息,请阅读

当计划第二个pod时,它可能会在另一个节点或另一个可用性区域上运行,除非您通过使用以下命令通知调度程序在与第一个pod相同的节点或可用性区域上运行该pod:

podAffinity:
所需DuringSchedulingIgnoredDuringExecution:
-标签选择器:
#调整标签,使其识别您的吊舱
匹配表达式:
-关键字:app.kubernetes.io/name
接线员:在
价值观:
-myapp
#使pod在同一节点上运行
topologyKey:kubernetes.io/hostname

正如我从您对评论的回答中收集到的,您不希望使用关联规则,而是希望调度器为您执行这项工作

这一问题似乎至少在2016年就已经知道了,但尚未解决,因为日程安排被认为是按预期进行的:

您可以阅读本期的详细信息,但核心问题似乎是在Kubernetes的定义中,
ReadWriteOnce
卷永远不能由两个pod同时访问。根据定义。需要实现的是一个标志,表明“两个POD同时访问此RWO卷是可以的,即使它是RWO”。但这一功能尚未实现


实际上,您通常可以通过使用:
.spec.strategy.type:Recreate
来解决此问题。或者,使用其他答案中描述的关联规则。

部署pod时出现的错误是什么?卷“[pv volume name]”的多连接错误pod已使用卷。[pod列表]您是否考虑使用仅在能够装载卷的所需节点中部署播客?我当前正在使用关联规则,否则两个部署都会失败。我宁愿让Kubernetes决定哪一个节点是两种部署的最佳节点。@Lukas,如果我知道,您已经在使用关联规则,但您的愿望是删除关联规则,让Kubernetes决定在哪里运行POD?