Google Distributed Cloud 旨在限制故障范围并优先处理对业务连续性至关重要的功能。本文档介绍了发生故障时集群的功能会受到怎样的影响。此信息可帮助您确定出现问题时要优先排查的领域。
如果您需要其他帮助,请与 Cloud Customer Care 联系。Google Distributed Cloud 的核心功能包含以下类别:
- 运行工作负载:现有工作负载可以继续运行。这是保持业务连续性的最重要考虑因素。即使您的集群出现问题,现有工作负载也可能会继续运行,不会中断。
- 管理工作负载:您可以创建、更新和删除工作负载。这是在流量增加时调整工作负载的第二重要的考虑因素,即使集群存在问题也是如此。
- 管理用户集群:您可以管理节点,以及更新、升级和删除用户集群。其重要性低于应用生命周期注意事项。如果现有节点上有可用容量,则无法修改用户集群不会影响用户工作负载。
- 管理管理员集群:您可以更新和升级管理员集群。这是最不重要的注意事项,因为管理员集群不托管任何用户工作负载。如果管理员集群出现问题,您的应用工作负载会继续运行,而不会出现中断。
以下部分使用这些类别的核心功能来描述特定类型故障场景的影响。
故障模式
以下类型的故障可能会影响 Google Distributed Cloud 集群的性能。
ESXi 主机故障
在这种故障场景中,运行托管 Kubernetes 节点的虚拟机 (VM) 实例的 ESXi 主机可能会停止运行或变为网络分区。
运行工作负载 | 管理工作负载 | 管理用户集群 | 管理管理员集群 | |
---|---|---|---|---|
中断 | 可能的中断和自动恢复 | 可能的中断和自动恢复 | 中断和自动恢复 | 中断和自动恢复 |
说明 | 在故障主机托管的虚拟机上运行的 Pod 会中断,并自动重新调度到其他运行状况良好的虚拟机上。 如果用户应用有备用工作负载容量并且分布在多个节点上,则进行重试的客户端无法观察到中断。 |
如果主机故障影响非 HA 用户集群中的控制层面虚拟机或 HA 用户集群中的多个控制层面虚拟机,则会发生中断。 | 如果主机故障影响管理员集群中的控制层面虚拟机或工作器虚拟机,则会发生中断。 | 如果主机故障影响管理员集群中的控制层面虚拟机,则会发生中断。 |
恢复 | vSphere HA 会在运行状况良好的主机上自动重启虚拟机。 | vSphere HA 会在运行状况良好的主机上自动重启虚拟机。 | vSphere HA 会在运行状况良好的主机上自动重启虚拟机。 | vSphere HA 会在运行状况良好的主机上自动重启虚拟机。 |
预防措施 | 以高可用方式部署工作负载,以尽量降低中断的可能性。 | 使用 HA 用户集群,以尽量降低中断的可能性。 | — | — |
虚拟机故障
在这种故障场景中,虚拟机可能会被意外删除,启动磁盘可能损坏,或者虚拟机可能因操作系统问题而被破解。
运行工作负载 | 管理工作负载 | 管理用户集群 | 管理管理员集群 | |
---|---|---|---|---|
中断 | 可能的中断和自动恢复 | 可能的中断和自动恢复 | 中断和自动/手动恢复 | 中断和手动恢复 |
说明 | 在发生故障的工作器虚拟机上运行的 Pod 会中断,然后 Kubernetes 会自动将其重新调度到其他运行状况良好的虚拟机上。 如果用户应用有备用工作负载容量并且分布在多个节点上,则进行重试的客户端无法观察到中断。 |
如果非 HA 用户集群中的控制层面虚拟机或 HA 用户集群中的多个控制层面虚拟机出现故障,则会发生中断。 | 如果管理员集群中的控制层面虚拟机或工作器虚拟机出现故障,则会发生中断。 | 如果管理员集群中的控制层面虚拟机出现故障,则会发生中断。 |
恢复 | 如果用户集群启用了节点自动修复功能,则故障虚拟机会自动恢复。 | 如果管理员集群启用了节点自动修复功能,则故障虚拟机会自动恢复。 | 如果管理员集群启用了节点自动修复功能,则管理员集群中的故障工作器虚拟机会自动恢复。 如要恢复管理员集群的控制层面虚拟机,请参阅修复管理员集群的控制层面虚拟机。 |
如要恢复管理员集群的控制层面虚拟机,请参阅修复管理员集群的控制层面虚拟机。 |
预防措施 | 以高可用方式部署工作负载,以尽量降低中断的可能性。 | 使用 HA 用户集群,以尽量降低中断的可能性。 | — | — |
存储故障
在这种故障场景中,VMDK 文件中的内容可能会因虚拟机非正常关停而损坏,或者数据存储区故障可能会导致 etcd 数据和 PersistentVolume (PV) 丢失。
etcd 故障
运行工作负载 | 管理工作负载 | 管理用户集群 | 管理管理员集群 | |
---|---|---|---|---|
中断 | 不会中断 | 可能中断的情况和手动恢复 | 中断和手动恢复 | 中断和手动恢复 |
说明 | — | 如果非 HA 用户集群中的 etcd 存储区或 HA 用户集群中的多个 etcd 副本出现故障,则会发生中断。 | 如果非 HA 用户集群中的 etcd 存储区或 HA 用户集群中的多个 etcd 副本出现故障,则会发生中断。 如果管理员集群中的 etcd 副本出现故障,则会发生中断。 |
如果管理员集群中的 etcd 副本出现故障,则会发生中断。 |
预防措施 | — | Google Distributed Cloud 提供了一个手动过程来进行故障恢复。 | Google Distributed Cloud 提供了从故障中恢复的手动过程。 | Google Distributed Cloud 提供了从故障中恢复的手动过程。 |
用户应用 PV 故障
运行工作负载 | 管理工作负载 | 管理用户集群 | 管理管理员集群 | |
---|---|---|---|---|
中断 | 配送可能中断 | 不会中断 | 不会中断 | 不会中断 |
说明 | 使用故障 PV 的工作负载会受到影响。 以高可用方式部署工作负载,以尽量降低中断的可能性。 |
— | — | — |
负载均衡器故障
在此故障场景中,负载均衡器故障可能会影响公开 LoadBalancer
类型的 Service 的用户工作负载。
运行工作负载 | 管理工作负载 | 管理用户集群 | 管理管理员集群 | |
---|---|---|---|---|
中断和手动恢复 | ||||
说明 |
中断几秒钟,直至备用负载均衡器恢复管理员控制层面 VIP 连接。 使用 Seesaw 时,服务中断最长可达 2 秒, 使用 F5 时最长可达 300 秒。 随着负载平衡器节点数量的增加,MetalLB 的故障切换中断时长会增加。如果节点少于 5 个,中断将在 10 秒内发生。 |
|||
恢复 | Seesaw HA 会自动检测故障并故障切换到使用备份实例。 Google Distributed Cloud 提供了一种手动流程,以便从 Seesaw 故障中恢复。 |
恢复损坏的集群
以下部分介绍了如何恢复损坏的集群。
从 ESXi 主机故障中恢复
Google Distributed Cloud 依赖 vSphere HA 从 ESXi 主机故障中提供恢复。vSphere HA 可以持续监控 ESXi 主机,并在需要时自动重启其他主机上的虚拟机。这对 Google Distributed Cloud 用户来说是透明的。
从虚拟机故障中恢复
虚拟机故障可能包括以下内容:
意外删除虚拟机。
虚拟机启动磁盘损坏,例如启动磁盘因垃圾邮件日志日志而变为只读状态。
因性能较低的磁盘或网络设置问题而导致虚拟机启动失败,例如虚拟机因无法分配 IP 地址而无法启动。
Docker 叠加文件系统损坏。
由于升级失败导致管理员控制层面虚拟机丢失。
操作系统问题。
Google Distributed Cloud 为管理员插件节点、用户控制层面和用户节点提供了自动恢复机制。您可以为每个管理员集群和用户集群启用此节点自动修复功能。
管理员控制层面虚拟机比较特殊,因为它并非由 Kubernete 集群管理,其可用性不会影响业务连续性。如需恢复管理员控制平面虚拟机故障,请与 Cloud Customer Care 联系。
从存储故障中恢复
某些存储故障可以通过 vSphere HA 和 vSAN 缓解,而不会影响 Google Distributed Cloud。但是,某些 vSphere 级别的存储故障可能会造成各种 Google Distributed Cloud 组件发生数据损坏或丢失。
集群和用户工作负载的有状态信息存储在以下位置:
- etcd:每个集群(管理员集群和用户集群)都有一个 etcd 数据库,用于存储集群的状态(Kubernetes 对象)。
- PersistentVolumes:由系统组件和用户工作负载使用。
从 etcd 数据损坏或丢失中恢复
Etcd 是 Kubernetes 用于存储所有集群状态(包括用户应用清单)的数据库。如果用户集群的 etcd 数据库损坏或丢失,则应用生命周期操作将停止运行。如果管理员集群的 etcd 数据库损坏或丢失,则用户集群生命周期操作将停止运行。
Etcd 不提供用于数据损坏检测的可靠内置机制。如果您怀疑 etcd 数据损坏或丢失,则需要查看 etcd Pod 的日志。
挂起/错误/崩溃循环的 etcd Pod 不一定表示 etcd 数据损坏或丢失。这有可能是托管 etcd Pod 的虚拟机上的错误导致的。您应仅为数据损坏或丢失情况执行以下 etcd 恢复。
为了能够从 etcd 数据损坏或丢失恢复(到最近的集群状态),必须在集群中的任何生命周期操作(例如创建、更新或升级)之后备份 etcd 数据。如需备份 etcd 数据,请参阅备份管理员集群和备份用户集群。
恢复 etcd 数据会使集群回到之前的状态。如果在部署应用之前执行备份,然后使用该备份恢复集群,则最近部署的应用将不会在恢复的集群中运行。例如,如果您使用创建用户集群之前截取的管理员集群的 etcd 快照,则恢复的管理员集群将会移除用户集群控制层面。因此,我们建议您在每个关键集群操作后备份集群。
在以下情况下,可能会发生 etcd 数据损坏或丢失失败:
三节点 etcd 集群(HA 用户集群)的一个节点由于数据损坏或丢失而永久损坏。此时,只有一个节点损坏,并且 etcd 仲裁仍然存在。这种情况可能会在高可用性集群中发生,即其中一个 etcd 副本的数据已损坏或丢失。通过将失败的 etcd 副本替换为干净状态的新副本,可以在不丢失任何数据的情况下解决此问题。如需了解详情,请参阅替换失败的 etcd 副本。
三节点 etcd 集群(HA 用户集群)的两个节点由于数据损坏或丢失而永久损坏。仲裁失败,因此将失败的 etcd 副本替换为新的副本不会有所帮助。必须从备份数据恢复集群状态。如需了解详情,请参阅从备份 (HA) 恢复用户集群。
单节点 etcd 集群(管理员集群或非 HA 用户集群)由于数据损坏或丢失而永久损坏。仲裁丢失,因此您必须通过备份创建新集群。如需了解详情,请参阅从备份(非 HA)恢复用户集群。
从用户应用 PV 损坏或丢失中恢复
您可以使用某些合作伙伴存储解决方案来备份和恢复用户应用 PersistentVolume。如需查看已获得 Google Distributed Cloud 使用资格的存储合作伙伴列表,请参阅 Anthos Ready 存储合作伙伴。
从负载均衡器故障中恢复
对于捆绑式 Seesaw 负载均衡器,您可以通过重新创建负载均衡器来从故障中恢复。如需重新创建负载均衡器,请将 Seesaw 升级到为管理员集群升级负载均衡器中所述的同一版本。
如果管理员集群负载均衡器出现故障,则控制层面可能无法完成升级。在具有控制平面访问权限的管理员控制平面虚拟机上运行升级。
对于集成负载平衡器 (F5),请与 F5 支持团队联系。
对于捆绑式 MetalLB 负载均衡器,系统使用集群节点作为负载均衡器。负载均衡器问题不会触发自动节点修复。您可以按照手动过程来修复节点。