创建 Service Mesh

本文档介绍如何创建单集群 Service Mesh。在继续之前,请确保您已熟悉以下主题:

  • Mesh 部署模型:选择适合您需求的 Mesh 部署模型。
  • Mesh 组件说明:了解 Mesh 组件的职责,并为 Service Mesh 准备必要的 CPU 和内存资源。

有关创建多集群 Service Mesh 的说明,请参阅多集群 Service Mesh 文档。

限制与约束

  • 每个集群仅允许一个 Service Mesh。
  • 当集群为 global 集群且平台处于灾备环境(即 global 具有主集群和灾备集群)时,global 集群不能部署 Service Mesh。
  • 当集群为 IPv4/IPv6 双栈网络时,无法部署 Service Mesh。

前提条件

  • 已安装 Alauda Service Mesh Essentials 集群插件

  • 下载与您的平台架构对应的以下安装包,并使用上架软件包机制将其上传到 global 集群和目标集群(请勿手动安装)。

    • Alauda Service Mesh Operator
    • Flagger Operator
    • Alauda Build of Jaeger Operator
    • Alauda Build of OpenTelemetry Operator
    WARNING

    使用 violet push 上传 operators 时,不要添加 --target-catalog-source 参数,请使用 operator 内定义的默认 catalog source。

  • 确保该集群已部署 Prometheus 插件或 VictoriaMetrics 插件。

    说明:当 VictoriaMetrics 采用多集群部署架构时,vmstorage 可以与 Service Mesh 位于不同的集群中。

  • 确保存在可用的 Elasticsearch。Service Mesh 可以对接集群的 Elasticsearch 日志插件或您自己的 Elasticsearch。

  • 当集群为 OpenShift 集群时,还必须满足以下前提条件:

    • 已创建 istio-system 命名空间。
    • istio-system 命名空间添加到 anyuid SCC(Security Context Constraints)组中。为此,请登录 OpenShift 集群的 bastion host 并执行以下命令:
      oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system

步骤

  1. 在左侧导航栏中,单击 Service Mesh > Mesh
  2. 单击 创建 Service Mesh
  3. 选择要部署 Service Mesh 的集群和 Istio 版本。在高级配置中,确保 mesh 架构为单集群,并填写 Elasticsearch 和监控系统的接口参数。您可以选择平台现有系统或外部系统。
    • 如果对高可用性有严格要求,请将 Pod 反亲和性设置为 mandatory。
    • 组件资源可以使用默认值,但随着 mesh 中服务规模的增长,组件需要进行扩容。请及时为 mesh 组件配置告警策略,以便在需要扩容时收到通知。

有关更多信息,请参见 Mesh 参数说明

说明:当集群为 OpenShift 集群时,mesh 会默认自动检测并部署 istio-cni 组件。

后续操作

  • 启用 Istio CNI,以消除每个 Pod 中对特权 init 容器的需求。
  • 启用全局限流。
  • 使用 Istioctl 工具。
  • 监控 Mesh 组件。

Mesh 参数说明

全局配置

Mesh 的全局配置将应用于部署该 mesh 的所有集群。

参数说明
与 Elasticsearch 接口对接平台:与平台任意集群上的 Elasticsearch 日志插件对接。请选择 Elasticsearch 日志插件所在的集群。
外部:与外部 Elasticsearch 日志插件对接。用户需要配置以下参数:
访问地址:Elasticsearch 的访问地址,以 http://https:// 开头。
认证方式:访问 Elasticsearch 的认证方式。
- Basic Auth:输入用户名和密码用于用户身份验证。
- 无需认证:访问时不需要认证。
与监控系统接口对接平台:与集群中的 Prometheus 插件或 VictoriaMetrics 插件对接。
外部:与外部插件提供的 Prometheus 或 VictoriaMetrics 对接。用户需要配置以下参数:
数据查询地址:监控组件的数据查询地址,以 http://https:// 开头。
认证方式:访问监控系统的认证方式。
- Basic Auth:输入用户名和密码用于用户身份验证。
- 无需认证:访问时不需要认证。
说明:由于 Prometheus 插件无法聚合来自多个集群的监控数据,因此该集群下的 Service Mesh 不能再添加更多集群来组成多集群 Service Mesh。

集群维度配置

集群维度配置仅适用于所选集群。

参数说明
Sidecar 配置资源配额:集群级别 sidecar 资源配额的默认值。可根据实际情况在为特定服务注入 sidecar 时修改,但不能超过 sidecar 所在命名空间容器配额(LimitRange)的最大限制。
Trace 配置采样率:集群级别 sidecar trace 的默认采样率。
Redis 配置仅在数据平面使用 全局限流 功能时才需要配置。具体配置方法请参见启用全局限流。
HTTP 重试策略重试次数:集群级别 HTTP 的默认最大重试次数。
说明:服务路由 超时与重试 策略中的 重试次数 会覆盖此默认值。

组件配置

说明:Mesh 组件以 Deployments 的形式部署在集群的特定命名空间中。Mesh 成功创建后,您可以在 组件 选项卡中查看组件运行状态,或单击 组件名称 跳转到该组件在容器平台上部署的命名空间,并查看运行中组件 Deployment 的详细信息。

参数说明
Pod 反亲和性Kubernetes 会将组件 Pod 调度到符合 Pod 反亲和性 设置的节点上。
Mandatory:同一组件的 Pod 仅允许在同一节点上运行一个。
Preferred:同一组件的多个 Pod 允许在同一节点上运行。Kubernetes 会根据调度算法尽量将该组件的 Pod 均匀调度到可用节点上,但不能保证每个节点上都有组件 Pod。
实例数期望运行的组件 Pod 数量,请根据实际业务请求量设置。
资源配额创建组件时,每个容器实例的资源(CPU、内存)请求值(requests),同时也是该容器可用资源的限制值(limits)。请根据实际业务量和实例数量合理设置。
部署节点部署该组件的节点。创建 mesh 时,该组件的 Pod 只能调度到所选节点上。
ELB华为云弹性负载均衡(ELB),用于为 CCE 集群上的 Istio Gateway 提供负载均衡能力。当所选集群为 CCE 集群时,需要填写 ELB IDELB Type,以关联为该集群预先准备好的 ELB。
总资源在当前配置下,创建该组件所有容器实例所需的总资源(CPU、内存)配额。当组件启用自动扩缩容时,按实例数上限进行计算。