GKE on Bare Metal 旨在限制故障范围,并优先保障对业务连续性至关重要的功能。本文档介绍了发生故障时集群的功能会受到怎样的影响。此信息可帮助您确定出现问题时要优先排查的领域。
GKE on Bare Metal 的核心功能包括以下类别:
- 运行工作负载:现有工作负载可以继续运行。这是保持业务连续性的最重要考虑因素。即使您的集群出现问题,现有工作负载也可能会继续运行,不会中断。
- 管理工作负载:您可以创建、更新和删除工作负载。这是在流量增加时调整工作负载的第二重要的考虑因素,即使集群存在问题也是如此。
- 管理用户集群:您可以管理节点,以及更新、升级和删除用户集群。其重要性低于应用生命周期注意事项。如果现有节点上有可用容量,则无法修改用户集群不会影响用户工作负载。
- 管理“管理员集群”:您可以更新和升级管理员集群。
- 对于使用单独的管理员集群和用户集群的部署,这是最不重要的考虑因素,因为管理员集群不托管任何用户工作负载。如果管理员集群出现问题,则其他集群上的应用工作负载会继续运行,不会中断。
- 如果您使用其他部署模型(如混合或独立模型),管理员集群会运行应用工作负载。如果管理员集群出现问题并且控制平面出现故障,则您也无法管理应用工作负载或用户集群组件。
以下部分使用这些类别的核心功能来描述特定类型的故障场景的影响。如果故障场景中存在中断现象,则系统可能还会记录中断的时长(顺序)。
节点故障
GKE on Bare Metal 中的节点可能会停止运行或无法通过网络访问。根据故障机器所属的节点池和集群,存在几种不同的故障模式。
控制平面节点
下表概述了 GKE on Bare Metal 中属于控制平面的节点的行为:
运行工作负载 | 管理工作负载 | 管理用户集群 | 管理管理员集群 | |
---|---|---|---|---|
中断(时长) | 不会中断 | 可能中断(未知) | 可能中断(未知) | 可能中断(未知) |
说明 | — | 如果节点故障影响了非高可用性 (HA) 用户集群中的单个控制平面节点,或者如果它影响了 HA 用户集群中不少于一半的控制平面节点,则存在中断现象。用户集群的控制平面仲裁丢失。 | 如果节点故障影响了非 HA 管理员集群中的单个控制平面节点,或者如果它影响了 HA 管理员集群中不少于一半的控制平面节点,则存在中断现象。管理员集群的控制平面仲裁丢失。 | 如果节点故障影响了非 HA 管理员集群中的单个控制平面节点,或者如果它影响了 HA 管理员集群中不少于一半的控制平面节点,则存在中断现象。管理员集群的控制平面仲裁丢失。 |
恢复 | — | 如需了解详情,请参阅如何在仲裁丢失的情况下恢复正常。 | 如需了解详情,请参阅如何在仲裁丢失的情况下恢复正常。 | 如需了解详情,请参阅如何在仲裁丢失的情况下恢复正常。 |
预防措施 | — | 以 HA 模式部署用户集群,以尽量降低中断的可能性。 | 以 HA 模式部署管理员集群,以尽量降低中断的可能性。 | 以 HA 模式部署管理员集群,以尽量降低中断的可能性。 |
负载均衡器节点
下表概述了在 GKE on Bare Metal 中托管负载均衡器的节点的行为。本指南仅适用于具有第 2 层模式的捆绑式负载均衡器。对于手动负载均衡,请参阅外部负载均衡器的故障模式:
运行工作负载 | 管理工作负载 | 管理用户集群 | 管理管理员集群 | |
---|---|---|---|---|
中断(时长) | 可能中断(各不相同) | 可能中断(各不相同) | 可能中断(各不相同) | 可能中断(各不相同) |
说明 | 如果外部工作负载依赖数据平面负载均衡器与集群中的工作负载进行通信,并且您只有一个负载均衡器节点,则会出现中断现象。 | 用户集群的控制平面虚拟 IP 地址位于一个负载均衡器节点上。如果用户集群的负载均衡器节点池不具有高可用性,则会出现中断现象。 | 管理员集群的控制平面虚拟 IP 地址位于一个负载均衡器节点上。如果管理员集群的负载均衡器节点池不具有高可用性,则会出现中断现象。 | 管理员集群的控制平面虚拟 IP 地址位于一个负载均衡器节点上。如果管理员集群的负载均衡器节点池不具有高可用性,则会出现中断现象。 |
恢复 | 如果有多个负载均衡器节点,则 MetalLB 故障切换会在几秒钟内完成。 如果不具有高可用性,请考虑部署其他负载均衡器节点。 |
如果具有高可用性,则故障切换会自动进行,并且会在若干秒内完成。 如果不具有高可用性,请考虑部署其他负载均衡器节点 |
如果具有高可用性,则故障切换会自动进行,并且会在若干秒内完成。 如果不具有高可用性,请考虑部署其他负载均衡器节点。 |
如果具有高可用性,则故障切换会自动进行,并且会在若干秒内完成。 如果不具有高可用性,请考虑部署其他负载均衡器节点。 |
预防措施 | 如需最大限度地减少中断的可能性,请以高可用性模式部署负载均衡器节点池。 | 如需最大限度地减少中断的可能性,请以高可用性模式部署负载均衡器节点池。 | 如需最大限度地减少中断的可能性,请以高可用性模式部署负载均衡器节点池。 | 如需最大限度地减少中断的可能性,请以高可用性模式部署负载均衡器节点池。 |
工作器节点
下表概述了 GKE on Bare Metal 中的工作器节点的行为:
运行工作负载 | 管理工作负载 | 管理用户集群 | 管理管理员集群 | |
---|---|---|---|---|
中断(时长) | 可能中断(若干秒) | 不会中断 | 不会中断 | 不会中断 |
说明 | 在故障节点上运行的 如果用户应用有备用工作负载容量并且分布在多个节点上,则进行重试的客户端无法观察到中断现象。
|
— | — | — |
恢复 | 如果集群没有备用容量,则必须将更多节点部署在多个故障可用区中,并将故障工作负载移动到新节点。 | — | — | — |
预防措施 | 部署分布在多个故障可用区的节点。 部署具有分布在多个故障可用区的多个副本的工作负载,以最大限度地减少中断的可能性。 |
— | — | — |
存储故障
GKE on Bare Metal 中的存储可能会停止运行或无法访问。根据发生故障的存储空间,有几种不同的故障模式。
etcd
etcd
的内容可能会由于节点的非正常断电或存储空间的底层故障而损坏。下表概述了由于 etcd
故障而导致的核心功能行为:
运行工作负载 | 管理工作负载 | 管理用户集群 | 管理管理员集群 | |
---|---|---|---|---|
中断(时长) | 不会中断 | 可能中断(未知) | 可能中断(未知) | 可能中断(未知) |
说明 | 如果现有工作负载不依赖于 Kubernetes 控制平面,它们将继续运行,不会中断。 | 如果 etcd 在单个控制平面用户集群上失败,或者在 HA 用户集群中不少于一半的控制平面节点上失败,则会出现中断现象。用户集群的控制平面仲裁丢失。 |
如果 etcd 在单个控制平面管理员集群上失败,或者在 HA 管理员集群中不少于一半的控制平面节点上失败,则会出现中断现象。管理员集群的控制平面仲裁丢失。 |
如果 etcd 在单个控制平面管理员集群上失败,或者在 HA 管理员集群中不少于一半的控制平面节点上失败,则会出现中断现象。管理员集群的控制平面仲裁丢失。 |
恢复 | — | 如需了解详情,请参阅如何在仲裁丢失的情况下恢复正常。 | 如需了解详情,请参阅如何在仲裁丢失的情况下恢复正常。 | 如需了解详情,请参阅如何在仲裁丢失的情况下恢复正常。 |
预防措施 | — | 为了最大限度地减少中断的可能性,请以高可用性模式部署用户集群。 | 为了最大限度地减少中断的可能性,请以高可用性模式部署管理员集群。 | 为了最大限度地减少中断的可能性,请以高可用性模式部署管理员集群。 |
用户应用 PersistentVolume
下表概述了由于 PersistentVolume
的故障而导致的核心功能行为:
运行工作负载 | 管理工作负载 | 管理用户集群 | 管理管理员集群 | |
---|---|---|---|---|
中断(时长) | 可能中断(未知) | 不会中断 | 不会中断 | 不会中断 |
说明 | 使用失败的 PersistentVolume 的工作负载 |
— | — | — |
恢复 | — | — | — | — |
预防措施 | 为了最大限度地减少中断的可能性,请以高可用性模式部署用户工作负载。 | — | — | — |
Fluent Bit 损坏磁盘
Fluent Bit 磁盘损坏不会影响任何核心功能,但会影响在 Google Cloud 上收集和检查日志的能力。
有时,可以通过 stackdriver-log-forwarder
的日志观察到 SIGSEGV
事件。此错误可能是由磁盘上损坏的缓冲日志引起的。
Fluent Bit 提供了一种可过滤掉并丢弃损坏的数据块的机制。GKE on Bare Metal 中使用的 fluent-bit 版本 (v1.8.3) 提供此功能。
LoadBalancer
IP 地址数量不足
如果已分配池中的所有 IP 地址目前已被占用,则新创建的 LoadBalancer
服务无法获取 LoadBalancer
IP 地址。此情况会影响服务的客户端与 LoadBalancer
服务通信的能力。
如需从此 IP 地址耗尽的情况中恢复,请通过修改集群自定义资源向地址池分配更多 IP 地址。
证书失效
GKE on Bare Metal 在集群安装过程中生成自签名证书授权机构 (CA)。CA 的有效期为 10 年,并负责生成有效期为一年的证书。请定期轮替证书以防止集群停机。您可以通过升级集群来轮替证书,这是推荐的方法。如果您无法升级集群,则可以执行按需 CA 轮替。如需详细了解集群证书,请参阅 Kubernetes 文档中的 PKI 证书和要求。
如果集群证书已过期,则必须手动续订。
运行工作负载 | 管理工作负载 | 管理用户集群 | 管理管理员集群 | |
---|---|---|---|---|
中断(时长) | 不会中断 | 可能中断(未知) | 可能中断(未知) | 可能中断(未知) |
说明 | 如果用户工作负载不与 kubernetes 控制平面组件通信,则不会出现中断现象。 | 如果用户集群的证书授权机构过期,则会出现中断现象。 | 如果管理员集群的证书授权机构过期,则会出现中断现象。 | 如果用户集群的证书授权机构过期,则会发生中断。 |
恢复 | — | 按照在用户集群上手动续订证书的步骤操作。 |
按照在用户集群上手动续订证书的步骤操作。 |
按照在用户集群上手动续订证书的步骤操作。 |
预防措施 | 设置证书过期监控器。您可以在指标列表中找到示例指标 kubelet_certificate_manager_server_expiration_seconds 。 |
升级失败
运行工作负载 | 管理工作负载 | 管理用户集群 | 管理管理员集群 | |
---|---|---|---|---|
中断(时长) | 不会中断 | 不会中断 | 可能中断(未知) | 可能中断(未知) |
说明 | 如果用户集群控制平面上的升级失败,则现有工作负载不会中断。 如果特定工作器节点上的升级失败,则该节点上的工作负载将被排空并移动到其他运行状况良好的节点(如果运行状况良好的节点上有额外容量)。 |
如果任一控制平面节点无法升级,则升级将停止。如果用户集群具有高可用性,则升级失败时集群仍会正常运行。 | 如果管理员集群控制平面上的升级失败,则会出现中断现象,直到升级完成为止。 | 如果管理员集群控制平面上的升级失败,则会出现中断现象,直到升级完成为止。 |
恢复 | — | — | 升级可重试。如需了解详情,请参阅如何诊断升级问题并恢复。 | 升级可重试。如需了解详情,请参阅如何诊断升级问题并恢复。 |
预防措施 | — | — | 如需了解详情,请参阅如何在升级前创建备份。 | 如需了解详情,请参阅如何在升级前创建备份。 |
后续步骤
如需详细了解已知的产品问题和解决方法,请参阅 GKE on Bare Metal 已知问题。