×

了解服务网格版本

为了了解您在系统上部署了哪个版本的 Red Hat OpenShift Service Mesh,您需要了解每个组件版本的管理方式。

  • Operator 版本 - 最新 Operator 版本为 2.6.4。Operator 版本号仅指示当前安装的 Operator 的版本。由于 Red Hat OpenShift Service Mesh Operator 支持多个版本的 Service Mesh 控制平面,因此 Operator 的版本并不决定已部署的 ServiceMeshControlPlane 资源的版本。

    升级到最新的 Operator 版本会自动应用补丁更新,但不会自动将您的 Service Mesh 控制平面升级到最新的次要版本。

  • ServiceMeshControlPlane 版本 - ServiceMeshControlPlane 版本决定您使用的 Red Hat OpenShift Service Mesh 版本。ServiceMeshControlPlane 资源中 spec.version 字段的值控制用于安装和部署 Red Hat OpenShift Service Mesh 的架构和配置设置。创建服务网格控制平面时,您可以通过两种方式之一设置版本

    • 要在表单视图中配置,请从控制平面版本菜单中选择版本。

    • 要在 YAML 视图中配置,请在 YAML 文件中设置spec.version的值。

Operator Lifecycle Manager (OLM) 不管理服务网格控制平面升级,因此您的 Operator 和 ServiceMeshControlPlane (SMCP) 的版本号可能不匹配,除非您手动升级了您的 SMCP。

对 Operator 安装进行故障排除

验证 Operator 安装

安装 Red Hat OpenShift Service Mesh Operators 时,OpenShift 会自动创建以下对象作为成功 Operator 安装的一部分

  • 配置映射

  • 自定义资源定义

  • 部署

  • Pod

  • 副本集

  • 角色

  • 角色绑定

  • 密钥

  • 服务账户

  • 服务

从 Red Hat OpenShift Service on AWS 控制台

您可以使用 Red Hat OpenShift Service on AWS 控制台验证 Operator Pod 是否可用并正在运行。

  1. 导航到工作负载Pod

  2. 选择openshift-operators命名空间。

  3. 验证以下 Pod 是否存在且状态为运行中

    • istio-operator

    • jaeger-operator

    • kiali-operator

  4. 选择openshift-operators-redhat命名空间。

  5. 验证elasticsearch-operator Pod 是否存在且状态为运行中

从命令行
  1. 使用以下命令验证 Operator Pod 在openshift-operators命名空间中是否可用并正在运行

    $ oc get pods -n openshift-operators
    示例输出
    NAME                               READY   STATUS    RESTARTS   AGE
    istio-operator-bb49787db-zgr87     1/1     Running   0          15s
    jaeger-operator-7d5c4f57d8-9xphf   1/1     Running   0          2m42s
    kiali-operator-f9c8d84f4-7xh2v     1/1     Running   0          64s
  2. 使用以下命令验证 Elasticsearch Operator

    $ oc get pods -n openshift-operators-redhat
    示例输出
    NAME                                      READY   STATUS    RESTARTS   AGE
    elasticsearch-operator-d4f59b968-796vq     1/1     Running   0          15s

对服务网格 Operator 进行故障排除

如果您遇到 Operator 问题

  • 验证您的 Operator 订阅状态。

  • 验证您没有安装社区版本的 Operator,而是安装了受支持的 Red Hat 版本。

  • 验证您是否具有安装 Red Hat OpenShift Service Mesh 的cluster-admin角色。

  • 如果问题与 Operator 的安装有关,请检查 Operator Pod 日志中的任何错误。

您只能通过 OpenShift 控制台安装 Operator,无法从命令行访问 OperatorHub。

查看 Operator Pod 日志

您可以使用oc logs命令查看 Operator 日志。Red Hat 可能会要求提供日志以帮助解决支持案例。

步骤
  • 要查看 Operator Pod 日志,请输入以下命令

    $ oc logs -n openshift-operators <podName>

    例如:

    $ oc logs -n openshift-operators istio-operator-bb49787db-zgr87

对控制平面进行故障排除

服务网格控制平面由Istiod组成,它将以前的几个控制平面组件(Citadel、Galley、Pilot)整合到单个二进制文件中。部署ServiceMeshControlPlane还会创建构成Red Hat OpenShift Service Mesh的其他组件,如架构主题中所述。

验证服务网格控制平面安装

创建服务网格控制平面时,服务网格操作符将使用您在ServiceMeshControlPlane资源文件中指定的参数执行以下操作:

  • 创建Istio组件并部署以下Pod:

    • istiod

    • istio-ingressgateway

    • istio-egressgateway

    • grafana

    • prometheus

  • 调用Kiali操作符根据SMCP或Kiali自定义资源中的配置创建Kiali部署。

    您可以在Kiali操作符下查看Kiali组件,而不是服务网格操作符。

  • 调用Red Hat OpenShift分布式追踪平台 (Jaeger) 操作符根据SMCP或Jaeger自定义资源中的配置创建分布式追踪平台 (Jaeger) 组件。

    您可以在Red Hat OpenShift分布式追踪平台 (Jaeger) 操作符和Red Hat Elasticsearch操作符下查看Jaeger组件和Elasticsearch组件,而不是服务网格操作符。

    从 Red Hat OpenShift Service on AWS 控制台

    您可以在AWS上的Red Hat OpenShift服务 Web 控制台中验证服务网格控制平面安装。

    1. 导航到操作符已安装的操作符

    2. 选择istio-system命名空间。

    3. 选择Red Hat OpenShift Service Mesh操作符。

      1. 点击Istio服务网格控制平面选项卡。

      2. 点击您的控制平面的名称,例如basic

      3. 要查看部署创建的资源,请点击资源选项卡。您可以使用过滤器缩小视图范围,例如,检查所有Pod的状态是否为running

      4. 如果SMCP状态指示任何问题,请检查YAML文件中的status:输出以获取更多信息。

    4. 返回操作符已安装的操作符

    5. 选择OpenShift Elasticsearch操作符。

      1. 点击Elasticsearch选项卡。

      2. 点击部署的名称,例如elasticsearch

      3. 要查看部署创建的资源,请点击资源选项卡。

      4. 如果状态列显示任何问题,请检查YAML选项卡上的status:输出以获取更多信息。

    6. 返回操作符已安装的操作符

    7. 选择Red Hat OpenShift分布式追踪平台 (Jaeger) 操作符。

      1. 点击Jaeger选项卡。

      2. 点击您的部署的名称,例如jaeger

      3. 要查看部署创建的资源,请点击资源选项卡。

      4. 如果状态列指示任何问题,请检查YAML选项卡上的status:输出以获取更多信息。

    8. 导航到操作符已安装的操作符

    9. 选择Kiali操作符。

      1. 点击Istio服务网格控制平面选项卡。

      2. 点击您的部署的名称,例如kiali

      3. 要查看部署创建的资源,请点击资源选项卡。

      4. 如果状态列显示任何问题,请检查YAML选项卡上的status:输出以获取更多信息。

从命令行
  1. 运行以下命令查看服务网格控制平面Pod是否可用并正在运行,其中istio-system是您安装SMCP的命名空间。

    $ oc get pods -n istio-system
    示例输出
    NAME                                   READY   STATUS    RESTARTS   AGE
    grafana-6776785cfc-6fz7t               2/2     Running   0          102s
    istio-egressgateway-5f49dd99-l9ppq     1/1     Running   0          103s
    istio-ingressgateway-6dc885c48-jjd8r   1/1     Running   0          103s
    istiod-basic-6c9cc55998-wg4zq          1/1     Running   0          2m14s
    jaeger-6865d5d8bf-zrfss                2/2     Running   0          100s
    kiali-579799fbb7-8mwc8                 1/1     Running   0          46s
    prometheus-5c579dfb-6qhjk              2/2     Running   0          115s
  2. 使用以下命令检查服务网格控制平面部署的状态。将istio-system替换为您部署SMCP的命名空间。

    $ oc get smcp -n istio-system

    当STATUS列为ComponentsReady时,安装已成功完成。

    示例输出
    NAME    READY   STATUS            PROFILES      VERSION   AGE
    basic   10/10   ComponentsReady   ["default"]   2.1.3     4m2s

    如果您已修改并重新部署服务网格控制平面,则状态应显示为UpdateSuccessful

    示例输出
    NAME            READY     STATUS             TEMPLATE   VERSION   AGE
    basic-install   10/10     UpdateSuccessful   default     v1.1     3d16h
  3. 如果SMCP状态指示非ComponentsReady状态,请检查SCMP资源中的status:输出以获取更多信息。

    $ oc describe smcp <smcp-name> -n <controlplane-namespace>
    示例输出
    $ oc describe smcp basic -n istio-system
  4. 使用以下命令检查Jaeger部署的状态,其中istio-system是您部署SMCP的命名空间。

    $ oc get jaeger -n istio-system
    示例输出
    NAME     STATUS    VERSION   STRATEGY   STORAGE   AGE
    jaeger   Running   1.30.0    allinone   memory    15m
  5. 使用以下命令检查Kiali部署的状态,其中istio-system是您部署SMCP的命名空间。

    $ oc get kiali -n istio-system
    示例输出
    NAME    AGE
    kiali   15m

访问Kiali控制台

您可以在Kiali控制台中查看应用程序的拓扑、健康状况和指标。如果您的服务遇到问题,Kiali控制台允许您查看数据流经您的服务。您可以查看不同级别网格组件的洞察信息,包括抽象应用程序、服务和工作负载。Kiali还提供实时交互式命名空间图形视图。

要访问Kiali控制台,您必须已安装并配置Red Hat OpenShift Service Mesh和Kiali。

安装过程会创建一个访问Kiali控制台的路由。

如果您知道Kiali控制台的URL,可以直接访问它。如果您不知道URL,请使用以下说明。

管理员流程
  1. 使用管理员角色登录到AWS上的Red Hat OpenShift服务Web控制台。

  2. 点击主页项目

  3. 项目页面上,如有必要,请使用过滤器查找项目的名称。

  4. 点击您的项目名称,例如bookinfo

  5. 项目详情页面上的启动器部分,点击Kiali链接。

  6. 使用您访问AWS上Red Hat OpenShift服务的用户名和密码登录Kiali控制台。

    第一次登录Kiali控制台时,您会看到概述页面,该页面显示您有权查看的服务网格中的所有命名空间。

    如果您正在验证控制台安装,并且尚未将命名空间添加到网格中,则除了istio-system之外,可能没有任何其他数据显示。

开发者流程
  1. 使用开发者角色登录到AWS上的Red Hat OpenShift服务Web控制台。

  2. 点击项目

  3. 项目详情页面上,如有必要,请使用过滤器查找项目的名称。

  4. 点击您的项目名称,例如bookinfo

  5. 项目页面上的启动器部分,点击Kiali链接。

  6. 点击使用OpenShift登录

访问Jaeger控制台

要访问Jaeger控制台,您必须已安装并配置Red Hat OpenShift Service Mesh和Red Hat OpenShift分布式追踪平台 (Jaeger)。

安装过程会创建一个访问Jaeger控制台的路由。

如果您知道Jaeger控制台的URL,可以直接访问它。如果您不知道URL,请使用以下说明。

从Red Hat OpenShift Service Mesh 2.5开始,Red Hat OpenShift分布式追踪平台 (Jaeger) 和OpenShift Elasticsearch Operator已被弃用,并将在未来的版本中移除。Red Hat将在当前版本生命周期内为此功能提供错误修复和支持,但此功能将不再接收增强功能,并将被移除。作为Red Hat OpenShift分布式追踪平台 (Jaeger) 的替代方案,您可以使用Red Hat OpenShift分布式追踪平台 (Tempo)。

从OpenShift控制台的操作流程
  1. 以具有集群管理员权限的用户身份登录到AWS上的Red Hat OpenShift服务Web控制台。如果您使用Red Hat OpenShift Dedicated,则必须拥有具有dedicated-admin角色的帐户。

  2. 导航到网络路由

  3. 路由页面上,从命名空间菜单中选择服务网格控制平面项目,例如istio-system

    位置列显示每个路由的链接地址。

  4. 如有必要,请使用过滤器查找jaeger路由。点击路由位置启动控制台。

  5. 点击使用OpenShift登录

从Kiali控制台的操作流程
  1. 启动Kiali控制台。

  2. 点击左侧导航窗格中的分布式追踪

  3. 点击使用OpenShift登录

从CLI的操作流程
  1. 以具有cluster-admin角色的用户身份登录到AWS上的Red Hat OpenShift服务CLI。如果您使用Red Hat OpenShift Dedicated,则必须拥有具有dedicated-admin角色的帐户。

    $ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
  2. 要使用命令行查询路由详细信息,请输入以下命令。在此示例中,istio-system 是服务网格控制平面命名空间。

    $ oc get route -n istio-system jaeger -o jsonpath='{.spec.host}'
  3. 启动浏览器并导航到 https://<JAEGER_URL>,其中 <JAEGER_URL> 是您在上一步中发现的路由。

  4. 使用您访问 AWS 控制台中 Red Hat OpenShift 服务的相同用户名和密码登录。

  5. 如果您已将服务添加到服务网格并生成了跟踪,则可以使用过滤器和查找跟踪按钮来搜索您的跟踪数据。

    如果您正在验证控制台安装,则没有跟踪数据显示。

服务网格控制平面的故障排除

如果您在部署服务网格控制平面时遇到问题,

  • 请确保ServiceMeshControlPlane资源安装在与您的服务和 Operator 分开的项目中。本文档使用istio-system项目作为示例,但您可以将控制平面部署到任何项目中,只要它与包含您的 Operator 和服务的项目分开即可。

  • 确保ServiceMeshControlPlaneJaeger自定义资源部署在同一个项目中。例如,对两者都使用istio-system项目。

数据平面的故障排除

数据平面是一组智能代理,它们拦截并控制服务网格中服务之间所有入站和出站网络通信。

Red Hat OpenShift Service Mesh 依赖于应用程序 pod 中的代理 sidecar 来为应用程序提供服务网格功能。

Sidecar 注射的故障排除

Red Hat OpenShift Service Mesh不会自动将代理sidecar注入pod。您必须选择加入sidecar注入。

Istio sidecar 注射的故障排除

检查您的应用程序的Deployment中是否启用了自动注入。如果为Envoy代理启用了自动注入,则在Deployment资源的spec.template.metadata.annotations下应该有一个sidecar.istio.io/inject:"true"注释。

Jaeger agent sidecar 注射的故障排除

检查您的应用程序的Deployment中是否启用了自动注入。如果为Jaeger agent启用了自动注入,则在Deployment资源中应该有一个sidecar.jaegertracing.io/inject:"true"注释。

有关 sidecar 注入的更多信息,请参阅 启用自动注入

Envoy 代理的故障排除

Envoy 代理拦截服务网格中所有服务的入站和出站流量。Envoy 还收集并报告服务网格的遥测数据。Envoy 作为 sidecar 部署到同一 pod 中的相关服务。

启用 Envoy 访问日志

Envoy 访问日志有助于诊断流量故障和流,并有助于端到端流量流分析。

要为所有 istio-proxy 容器启用访问日志记录,请编辑ServiceMeshControlPlane (SMCP) 对象以添加日志输出的文件名。

步骤
  1. 以具有 cluster-admin 角色的用户身份登录到 OpenShift Container Platform CLI。输入以下命令。然后,在提示时输入您的用户名和密码。

    $ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
  2. 切换到安装服务网格控制平面的项目,例如istio-system

    $ oc project istio-system
  3. 编辑ServiceMeshControlPlane文件。

    $ oc edit smcp <smcp_name>
  4. 如以下示例所示,使用name指定代理日志的文件名。如果您未为name指定值,则不会写入任何日志条目。

    apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    metadata:
      name: basic
      namespace: istio-system
    spec:
      proxy:
        accessLogging:
          file:
            name: /dev/stdout     #file name

获取支持

如果您在使用本文档中描述的过程或 Red Hat OpenShift Service on AWS 时遇到困难,请访问Red Hat 客户门户

在客户门户中,您可以

  • 搜索或浏览 Red Hat 知识库中与 Red Hat 产品相关的文章和解决方案。

  • 向 Red Hat 支持提交支持案例。

  • 访问其他产品文档。

要识别集群中的问题,您可以使用 OpenShift 集群管理器 中的 Insights。Insights 提供有关问题的详细信息,以及(如果可用)有关如何解决问题的详细信息。

如果您有改进此文档的建议或发现错误,请提交与最相关的文档组件相关的Jira 问题。请提供具体的详细信息,例如章节名称和 Red Hat OpenShift Service on AWS 版本。

关于 Red Hat 知识库

Red Hat 知识库 提供丰富的內容,旨在帮助您充分利用 Red Hat 的产品和技术。Red Hat 知识库包含文章、产品文档和视频,概述了安装、配置和使用 Red Hat 产品的最佳实践。此外,您还可以搜索已知问题的解决方案,每个解决方案都提供简洁的根本原因描述和补救步骤。

搜索 Red Hat 知识库

如果出现 Red Hat OpenShift Service on AWS 问题,您可以进行初步搜索以确定 Red Hat 知识库中是否已存在解决方案。

先决条件
  • 您拥有 Red Hat 客户门户帐户。

步骤
  1. 登录到 Red Hat 客户门户

  2. 单击搜索

  3. 在搜索字段中,输入与问题相关的关键词和字符串,包括

    • Red Hat OpenShift Service on AWS 组件(例如etcd

    • 相关过程(例如安装

    • 与显式故障相关的警告、错误消息和其他输出

  4. 单击Enter键。

  5. 可选:选择Red Hat OpenShift Service on AWS产品过滤器。

  6. 可选:选择文档内容类型过滤器。

提交支持案例

先决条件
  • 您可以以具有dedicated-admin角色的用户身份访问集群。

  • 您已安装 OpenShift CLI (oc)。

  • 您可以访问 Red Hat OpenShift 集群管理器。

步骤
  1. 登录到 Red Hat 客户门户的客户支持页面

  2. 单击获取支持

  3. 客户支持页面的案例选项卡上

    1. 可选:如果需要,更改预填的帐户和所有者详细信息。

    2. 为您的问题选择合适的类别,例如错误或缺陷,然后单击继续

  4. 输入以下信息

    1. 摘要字段中,输入简洁但描述性的问题摘要以及正在遇到的症状和您的期望的更多详细信息。

    2. 产品下拉菜单中选择Red Hat OpenShift Service on AWS

  5. 查看建议的 Red Hat 知识库解决方案列表,以查找与所报告问题匹配的潜在解决方案。如果建议的文章未解决此问题,请单击继续

  6. 查看更新后的 Red Hat 知识库解决方案建议列表,查找与您报告的问题匹配的解决方案。在创建案例的过程中,随着您提供更多信息,此列表会不断完善。如果建议的文章未能解决您的问题,请点击继续

  7. 确保显示的账户信息正确无误,如有错误,请相应修改。

  8. 检查自动填充的 AWS 上 Red Hat OpenShift 服务集群 ID 是否正确。如果不正确,请手动获取您的集群 ID。

    • 使用 AWS 上 Red Hat OpenShift 服务 Web 控制台手动获取您的集群 ID

      1. 导航到主页概览

      2. 详情部分的集群 ID字段中查找该值。

    • 或者,您也可以通过 AWS 上 Red Hat OpenShift 服务 Web 控制台打开新的支持案例,并自动填充您的集群 ID。

      1. 从工具栏导航到(?) 帮助打开支持案例

      2. 集群 ID 值将自动填充。

    • 使用 OpenShift CLI (oc) 获取您的集群 ID,请运行以下命令:

      $ oc get clusterversion -o jsonpath='{.items[].spec.clusterID}{"\n"}'
  9. 在出现提示时完成以下问题,然后点击继续

    • 您遇到了什么问题?您期望发生什么?

    • 定义此问题对您或业务的影响。

    • 您在哪里遇到此问题?在什么环境中?

    • 此问题何时发生?频率如何?反复出现吗?是否在特定时间发生?

  10. 上传相关的诊断数据文件,然后点击继续

  11. 输入相关的案例管理详细信息,然后点击继续

  12. 预览案例详细信息,然后点击提交