故障恢复
针对 Kubernetes 中的有状态应用(挂载了 HwameiStor PVC 的 Pod ),当 Pod 或者 PVC 出现问题时,尤其是 Kubernetes 节点出现问题时, 需要及时发现并重新调度,将 Pod 调度到其他健康的节点,并能成功挂载 PVC。 由于 Kubernetes 调度机制的限制,需要先等待比较长的时间(e.g. 5分钟)才能确定可以重新调度 Pod。 此外,由于 Pod 挂载了 PVC,还需额外等待较长时间(e.g. 6分钟)。 如果是 Statefulset 的 Pod,Kubernetes 不会进行重新调度,Deployment 的 Pod 可以。 这种情况将导致应用中断比较长时间,无法继续正常提供业务。
HwameiStor 为解决这类故障,提供了应用故障快速快速的能力。 在发现应用出现故障时,在很短的时间内将应用调度至另外的健康节点,同时保证在新节点上有应用所需的数据卷副本,从而保证业务应用正常运行。
使用方式
HwameiStor 为两类情况提供了应用故障快速恢复机制:
节点出现故障
在这种情况下,该节点上的应用均无法正常运行。对于使用 HwameiStor 数据卷的应用,需要及时地将 Pod 重新调度到新的健康节点。 您可以通过下列方式进行故障恢复:
为该节点打标签(Label):
kubectl label node <nodeName> hwameistor.io/failover=start
当故障恢复完成后,上面的标签会变成:
hwameistor.io/failover=completed
应用 Pod 出现故障
在这种情况下,您可以为该 Pod 打标签(Label)对 Pod 进行故障恢复:
kubectl label pod <podName> hwameistor.io/failover=start
当故障恢复完成后,旧的 Pod 会被删除,新的 Pod 会在新的节点上启动并正常运行。