Istio 高可用性

以高可用性(HA)模式运行 Istio 控制平面可以消除单点故障,并在 istiod Pod 出现异常时保持 mesh 持续运行,不会中断。

启用 HA 后,单个 istiod Pod 的故障不会中断流量管理或数据平面配置:剩余的一个从节点副本会继续为 mesh 提供服务,从而避免服务中断并减少面向用户的影响。HA 还可将控制平面工作负载分布到多个副本上,使控制平面升级更加平滑,支持灾难恢复场景,并可防护区域级故障。

集群管理员可以使用以下任一方式为 Istio 部署启用 HA:

  • 固定副本数:将部署固定为指定数量的 istiod Pod,以维持可预测的冗余级别。
  • 自动扩缩容:让 Horizontal Pod Autoscaler(HPA)根据资源使用情况或自定义指标自动调整 istiod Pod 的数量,这适用于负载波动的工作负载。

单节点集群注意事项

对于单节点集群,在 HA 模式下,务必禁用默认的 Pod Disruption Budget(PDB),以避免在节点操作(例如 drain)或缩容期间出现问题。你可以通过将以下配置添加到 Istio 资源中来实现:

apiVersion: sailoperator.io/v1
kind: Istio
metadata:
  name: default
spec:
  namespace: istio-system
  values:
    global:
      defaultPodDisruptionBudget:
        # disable default Pod Disruption Budget
        enabled: false
  1. spec.values.global.defaultPodDisruptionBudget.enabled: false 会禁用 Istiod 的默认 Pod Disruption Budget。在单节点集群中,PDB 可能会阻止节点 drain 或 Pod 驱逐等操作,因为它会限制可用 Istiod 从节点副本数量不能低于 PDB 的最小期望值。禁用它可确保在这种特定拓扑下顺利执行操作。