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 主机故障中恢复
发生 ESXi 主机故障时,Google Distributed Cloud 依赖 vSphere HA 进行恢复。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:每个集群(管理员集群和用户集群)都有一个存储集群状态(Kubernetes 对象)的 etcd 数据库。
- 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 仲裁仍然存在。在 HA 集群中,如果其中一个 etcd 副本的数据损坏或丢失,就有可能发生这种情况。可以通过将故障 etcd 副本替换为默认状态的新副本来解决此问题,而不会丢失任何数据。如需了解详情,请参阅替换故障 etcd 副本。
三节点 etcd 集群(HA 用户集群)的两个节点由于数据损坏或丢失而永久损坏。仲裁丢失,因此将故障 etcd 副本替换为新副本也无济于事。必须从备份数据恢复集群状态。如需了解详情,请参阅从备份 (HA) 恢复用户集群。
单节点 etcd 集群(管理员集群或非 HA 用户集群)由于数据损坏或丢失而永久损坏。仲裁丢失,因此您必须通过备份创建新集群。如需了解详情,请参阅从备份(非 HA)恢复用户集群。
从用户应用 PV 损坏或丢失中恢复
您可以使用某些合作伙伴存储解决方案来备份和恢复用户应用 PersistentVolume。如需查看符合 Google Distributed Cloud 资格的存储合作伙伴列表,请参阅 GDC Ready 存储合作伙伴。
从负载均衡器故障中恢复
对于捆绑式 Seesaw 负载均衡器,您可以通过重新创建负载均衡器来从故障中恢复。如需重新创建负载均衡器,请将 Seesaw 升级到版本 1.16 文档为管理员集群升级负载均衡器中所述的同一版本。
如果管理员集群负载均衡器出现故障,则控制层面可能无法完成升级。在具有控制平面访问权限的管理员控制平面虚拟机上运行升级。
对于集成式负载均衡器 (F5),请与 F5 支持联系。
对于捆绑式 MetalLB 负载均衡器,系统使用集群节点作为负载均衡器。负载均衡器问题不会触发自动节点修复。您可以按照手动流程修复节点。