Kubernetes 当节点关闭并试图在其他节点上重新创建时,Pod将进入“ContainerCreating”状态

Kubernetes 当节点关闭并试图在其他节点上重新创建时,Pod将进入“ContainerCreating”状态,kubernetes,amazon-eks,openebs,Kubernetes,Amazon Eks,Openebs,我的K8s基础设施部署在AWS EKS上,有3个节点,我面临一个OpenEBS问题。我正在部署一个带有一个副本的RabbitMQ状态集。我希望在节点停机并且pod在其他节点上重新启动时持久化RabbitMQ pod数据。因此,我在集群中部署了OpenEBS。我试图终止运行pod的节点,因此pod尝试在其他节点中重新启动。但pod并没有在其他节点启动,而是保持在ContainerCreating状态,并向我显示以下问题- Events: Type Reason

我的K8s基础设施部署在AWS EKS上,有3个节点,我面临一个OpenEBS问题。我正在部署一个带有一个副本的RabbitMQ状态集。我希望在节点停机并且pod在其他节点上重新启动时持久化RabbitMQ pod数据。因此,我在集群中部署了OpenEBS。我试图终止运行pod的节点,因此pod尝试在其他节点中重新启动。但pod并没有在其他节点启动,而是保持在
ContainerCreating
状态,并向我显示以下问题-

Events:
  Type     Reason              Age    From                     Message
  ----     ------              ----   ----                     -------
  Normal   Scheduled           2m28s  default-scheduler        Successfully assigned rabbitmq/rabbitmq-0 to ip-10-0-1-132.ap-south-1.compute.internal
  Warning  FailedAttachVolume  2m28s  attachdetach-controller  Multi-Attach error for volume "pvc-b62d32f1-de60-499a-94f8-3c4d1625353d" Volume is already exclusively attached to one node and can't be attached to another
  Warning  FailedMount         2m26s  kubelet                  MountVolume.SetUp failed for volume "rabbitmq-token-m99tw" : failed to sync secret cache: timed out waiting for the condition
  Warning  FailedMount         25s    kubelet                  Unable to attach or mount volumes: unmounted volumes=[data], unattached volumes=[configuration data rabbitmq-token-m99tw]: timed out waiting for the condition
然后过了一段时间(大约5-10分钟),rabbitmq pod能够启动,但我发现一个cstor磁盘池pod出现以下错误-

Events:
  Type     Reason            Age                  From               Message
  ----     ------            ----                 ----               -------
  Warning  FailedScheduling  7m7s (x3 over 7m9s)  default-scheduler  0/2 nodes are available: 2 node(s) didn't match node selector.
  Warning  FailedScheduling  44s (x8 over 6m14s)  default-scheduler  0/3 nodes are available: 3 node(s) didn't match node selector.

我描述了cstor磁盘池pod,并且节点选择器键仍然具有旧节点(已终止)的值。有人能帮我解决这个问题吗?此外,我们还需要一种方法来缩短rabbitmq pod重新启动和正确准备的时间,因为我们无法为我们的应用程序提供5-10分钟的rabbitmq服务停机时间

要使卷承受单节点故障,您需要创建:

  • 3个cStor池-每个节点上一个
  • 卷应配置3个副本,以便将数据复制到所有3个节点
当其中一个节点消失时,该卷将能够提供来自其余两个副本的数据

(为了使pod更快地从故障节点移动到新节点,您必须适当地配置容差。默认值为5分钟)


cStor池绑定到创建它们的节点。这样做是为了在节点返回时允许重用池中的数据。根据节点和磁盘的配置方式,有几种解决方案可以帮助您自动化运行cstor池的过程,或将它们从故障节点移动到新节点。您是否可以加入Kubernetes slack#openebs频道或在openebs github上创建一个问题以获得进一步帮助?

要使卷承受单节点故障,您需要创建:

  • 3个cStor池-每个节点上一个
  • 卷应配置3个副本,以便将数据复制到所有3个节点
当其中一个节点消失时,该卷将能够提供来自其余两个副本的数据

(为了使pod更快地从故障节点移动到新节点,您必须适当地配置容差。默认值为5分钟)


cStor池绑定到创建它们的节点。这样做是为了在节点返回时允许重用池中的数据。根据节点和磁盘的配置方式,有几种解决方案可以帮助您自动化运行cstor池的过程,或将它们从故障节点移动到新节点。您是否可以加入Kubernetes slack#openebs频道或在openebs github上创建一个问题以获得进一步帮助?

您是否可以分享您的状态yaml?是否分配了任何节点(反)关联?您在重新启动之前是否排空了节点?我正在使用bitnami提供的rabbitmq的helm图表部署rabbitmq-。我已经实现了OpenEBS作为存储服务,用于在节点故障时保存数据。我在测试一个节点故障场景,因此,我终止了worker node EC2实例,在该实例中,我的rabbitmq pod正在从AWS控制台运行,以检查它是否在其他节点上正确重新部署,但我观察到,在其他节点上重新部署需要5-10分钟的时间,openebs命名空间中的一个cstor磁盘池pod持续出现故障。您修改了吗rabbitmq图表中的
values.yaml
?默认情况下,
terminationGracePeriodSeconds
120秒
您可以共享您的状态yaml吗?是否分配了任何节点(反)关联?您在重新启动之前是否排空了节点?我正在使用bitnami提供的rabbitmq的helm图表部署rabbitmq-。我已经实现了OpenEBS作为存储服务,用于在节点故障时保存数据。我在测试一个节点故障场景,因此,我终止了worker node EC2实例,在该实例中,我的rabbitmq pod正在从AWS控制台运行,以检查它是否在其他节点上正确重新部署,但我观察到,在其他节点上重新部署需要5-10分钟的时间,openebs命名空间中的一个cstor磁盘池pod持续出现故障。您修改了吗rabbitmq图表中的
values.yaml
?默认情况下,
terminationGracePeriodSeconds
120秒