如何重新生成具有持久卷的pod,该卷停留在Kubernetes中的失败节点上

时间:2018-04-20 13:01:12

标签: kubernetes ceph

我有一个简单的k8s安装,几个节点和ceph(kubernetes.io/rbd)作为存储类。我有一个使用单个pod的部署,它使用来自此存储类的持久卷声明(ReadWriteOnce)中的持久卷。

具有此窗格的节点发生故障(get nodes输出中的NotReady已经很长时间了,而且它实际上已经死了。)

K8s无法为我的部署创建新的pod,因为“卷的多重附加错误”pvc -...“卷已经专门附加到一个节点,无法连接到另一个节点。”

我看到pv与失败的节点有关:“状态:绑定”。

如何强制kubernetes忘记旧pod以允许新pod绑定到持久卷?

1 个答案:

答案 0 :(得分:1)

这是一个复杂的问题。

管理卷的安装的Kubelet守护程序应设置有关卷的新状态的信息,以使调度程序能够在另一个节点上生成Pod。

但是,你有'NotReady'状态,这意味着Kubernetes无法与Kubelet通信以检查Volumes的当前状态。在Kubernetes中,卷的状态是最后收到的 - “绑定”。在不改变节点状态的情况下,无法以某种方式重置该状态。

我在这里只看到2个解决方法:

  1. ReadWriteMany模式而不是ReadWriteOnce使用PVC。 CephFS可以在该模式下工作,但RBD不能。该模式允许Kubernetes同时在多个节点上声明相同的音量。
  2. 从群集中删除失败的节点。它将删除链接到该节点的所有对象,并且Scheduler将能够再次声明您的卷。