kubernetes - 如何重生具有持久卷的 pod,该卷卡在 Kubernetes 中的故障节点上

标签 kubernetes ceph

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

带有此 pod 的节点发生故障(get nodes 中的 NotReady 输出很长时间,并且它在物理上已死机)。

K8s 无法为我的部署创建新的 pod,因为“卷“pvc-...”的多附加错误卷已经独占附加到一个节点并且无法附加到另一个节点。

我看到 pv 绑定(bind)到失败的节点:“状态:绑定(bind)”。

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

最佳答案

这是一个复杂的问题。

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

但是,您处于“未就绪”状态,这意味着 Kubernetes 无法与 Kubelet 通信以检查卷的当前状态。在 Kubernetes 中,Volume 的状态是最后一个收到的——“Bound”。在不更改节点状态的情况下,无法以某种方式重置该状态。

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

  • ReadWriteMany 中使用 PVC模式而不是 ReadWriteOnce . CephFS 可以在该模式下工作,但 RBD 不能。该模式允许 Kubernetes 同时在多个节点上声明相同的卷。
  • 从集群中删除故障节点。它将删除链接到节点的所有对象,并且调度程序将能够再次声明您的卷。
  • 关于kubernetes - 如何重生具有持久卷的 pod,该卷卡在 Kubernetes 中的故障节点上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49942285/

    相关文章:

    ceph - 在销毁 pool1_U 之前将池 'mon_allow_pool_delete 配置选项删除为 true (500)

    mongodb - Kubernetes 与 MongoDb

    kubernetes - Google Cloud Kubernetes - 与 Cloudflare 的负载均衡器 session 关联

    amazon-web-services - 如何在 EKS 上获取 k8s master 日志?

    linux - 测试服务器上的 ceph-rest-api

    apache-kafka - Ceph BucketNotifications 不向 Kafka 推送消息

    elasticsearch - 无法在 Ubuntu 上的 kubernetes cluser 中访问 Kibana 仪表板服务

    elasticsearch - Kubernetes:在VPN内部公开服务

    ubuntu - CEPH HEALTH_WARN 降级数据冗余 : pgs undersized after reweighting

    storage - Ceph 每个 osd 的 pg 太多 : all you need to know