我有一个简单的k8s安装,几个节点和ceph(kubernetes.io/rbd)作为存储类。我有一个使用单个pod的部署,它使用来自此存储类的持久卷声明(ReadWriteOnce)中的持久卷。
具有此窗格的节点发生故障(get nodes
输出中的NotReady已经很长时间了,而且它实际上已经死了。)
K8s无法为我的部署创建新的pod,因为“卷的多重附加错误”pvc -...“卷已经专门附加到一个节点,无法连接到另一个节点。”
我看到pv与失败的节点有关:“状态:绑定”。
如何强制kubernetes忘记旧pod以允许新pod绑定到持久卷?
答案 0 :(得分:1)
这是一个复杂的问题。
管理卷的安装的Kubelet守护程序应设置有关卷的新状态的信息,以使调度程序能够在另一个节点上生成Pod。
但是,你有'NotReady'状态,这意味着Kubernetes无法与Kubelet通信以检查Volumes的当前状态。在Kubernetes中,卷的状态是最后收到的 - “绑定”。在不改变节点状态的情况下,无法以某种方式重置该状态。
我在这里只看到2个解决方法:
ReadWriteMany
模式而不是ReadWriteOnce
使用PVC。 CephFS可以在该模式下工作,但RBD不能。该模式允许Kubernetes同时在多个节点上声明相同的音量。