使用自动扩缩容配置 Istio HA

通过自动扩缩容为 Istio 控制平面启用 High Availability (HA),这样即使 istiod pod 发生故障,网格仍可正常运行。

NOTE

使用自动扩缩容时,您可以指定 Istio 控制平面 pod 在任意时刻可运行的最小和最大数量。Alauda Container Platform 随后会根据资源消耗(例如 CPU 或内存利用率)在这两个范围之间调整实际副本数,使控制平面能够应对网格内工作负载量和流量模式的变化。

前提条件

  • 您已作为具有 cluster-admin 角色的用户登录 Alauda Container Platform Web 控制台,或者已作为集群管理员建立活动的 ACP CLI (kubectl) 会话。
  • 已安装 Alauda Service Mesh v2 Operator。
  • 已部署 Istio 资源。

通过 Web 控制台配置

操作步骤

  1. 在 Alauda Container Platform Web 控制台中,导航至 Administrator

  2. 选择 Marketplace > OperatorHub

  3. 搜索 Alauda Service Mesh v2

  4. 找到 Alauda Service Mesh v2,然后单击将其选中。

  5. 单击 All Instances 选项卡。

  6. Filter by instance type 下拉列表中,选择 Istio

  7. 单击 Istio 安装的名称,例如 default

  8. 单击 YAML 选项卡。

  9. 更新 Istio 自定义资源 (CR),使其类似于以下示例:

    apiVersion: sailoperator.io/v1
    kind: Istio
    metadata:
      name: default
    spec:
      namespace: istio-system
      values:
        pilot:
          autoscaleMin: 2
          autoscaleMax: 5
          cpu:
            targetAverageUtilization: 80
          memory:
            targetAverageUtilization: 80
    1. spec.values.pilot.autoscaleMin 设置始终运行的 Istio 控制平面副本的最小数量。要满足 HA 要求,此值必须至少为 2
    2. spec.values.pilot.autoscaleMax 设置自动扩缩容程序在负载下可扩展到的 Istio 控制平面副本最大数量。
    3. spec.values.pilot.cpu.targetAverageUtilization 以百分比设置目标平均 CPU 利用率。当观测到的 CPU 使用率高于此目标时,Horizontal Pod Autoscaler (HPA) 会增加副本数。
    4. spec.values.pilot.memory.targetAverageUtilization 以百分比设置目标平均内存利用率。当观测到的内存使用率高于此目标时,HPA 会增加副本数。

通过 CLI 配置

操作步骤

  1. 获取 Istio 资源的名称:

    kubectl get istio -n istio-system

    示例输出

    NAME      NAMESPACE      PROFILE   REVISIONS   READY   IN USE   ACTIVE REVISION   STATUS    VERSION   AGE
    default   istio-system             1           1       1        default           Healthy   v1.30.4   24m

    Istio 资源的名称为 default

  2. 修补 Istio 自定义资源 (CR),为控制平面启用自动扩缩容:

    kubectl patch istio default -n istio-system --type merge -p '
    spec:
      values:
        pilot:
          autoscaleMin: 2
          autoscaleMax: 5
          cpu:
            targetAverageUtilization: 80
          memory:
            targetAverageUtilization: 80
    '

    有关这些设置的字段说明,请参阅通过 Web 控制台配置

验证

检查 Istio 控制平面 pod 的状态:

kubectl get pods -n istio-system -l app=istiod

示例输出

NAME                      READY   STATUS    RESTARTS   AGE
istiod-6b8d64c946-2dq2k   1/1     Running   0          28m
istiod-6b8d64c946-skg4v   1/1     Running   0          35s

两个 istiod pod 正在运行。两个 pod 是 HA Istio 控制平面所需的最小数量,表明基本的 HA 设置已就绪。