通过副本数配置 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 配置。