通过副本数配置 Istio HA

通过固定静态副本数来为 Istio 控制平面启用高可用性(HA),从而保持服务网格可用,并在 istiod Pod 之间提供固定级别的冗余。

NOTE

静态副本数会固定 Istio 控制平面的规模。当控制平面负载稳定或可预测,或者你更希望手动扩缩 istiod 而不是依赖自动扩缩时,这种方法很合适。

先决条件

  • 你已作为具有 cluster-admin 角色的用户登录 Alauda Container Platform web 控制台,或者你拥有一个以集群管理员身份运行的活动 ACP CLI(kubectl)会话。
  • 已安装 Alauda Service Mesh v2 Operator。
  • 已部署 Istio 资源。

通过 web 控制台配置

操作步骤

  1. 在 Alauda Container Platform web 控制台中,导航到 管理员。

  2. 选择 Marketplace > OperatorHub。

  3. 搜索 Alauda Service Mesh v2。

  4. 找到 Alauda Service Mesh v2 并单击以选中它。

  5. 单击 全部实例 选项卡。

  6. 在 按实例类型筛选 下拉列表中,选择 Istio。

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

  8. 单击 YAML 选项卡。

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

    apiVersion: sailoperator.io/v1
    kind: Istio
    metadata:
      name: default
    spec:
      namespace: istio-system
      values:
        pilot:
          autoscaleEnabled: false
          replicaCount: 2
    1. 将 spec.values.pilot.autoscaleEnabled 设置为 false 会关闭自动扩缩,从而使副本数保持为你定义的固定值。
    2. spec.values.pilot.replicaCount 用于设置 Istio 控制平面的固定副本数。为满足 HA 要求,该值必须至少为 2。

通过 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.28.6   24m

    Istio 资源的名称为 default。

  2. 修补 Istio 自定义资源(CR),以禁用自动扩缩并设置固定副本数:

    kubectl patch istio default -n istio-system --type merge -p '
    spec:
      values:
        pilot:
          autoscaleEnabled: false
          replicaCount: 2
    '

    有关这些设置的字段说明,请参见通过 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 正在运行,这意味着满足 HA Istio 控制平面的最低要求,并表明已建立基本的 HA 配置。