全部产品

问题排查

1 xds 配置不下发

Pilot 未启动。 Pilot 与 MOSN 网络不通。

  1. 查看 MOSN 连接 Pilot 是否正常,xds Client 是否初始化成功。

    若出现如下日志,表示 xds Client 连接失败,可能是 Pilot 地址错误或 Pilot 未启动。

    2020-12-07 16:02:50,791 [INFO] fail to create stream client: rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing dial tcp 11.166.214.206:15050: connect: connection refused"
    2020-12-07 16:02:50,791 [INFO] [xds] [ads client] stream client reconnect failed, retry after 4s
    2020-12-07 16:02:50,973 [INFO] [xds] [ads client] stream client closed, sleep 1s and wait for reconnect
    
  2. 查看 Pilot 是否正常下发 xds。

    查看 Pilot Pod 状态,查看命令如下:

    ~ kubectl -n cloudmesh get pod -owide
    pilot-fb4777d78-f9nml               2/2     Running            0          18d    11.166.214.205   2102311gjw10f6000331   <none>
    
  3. 查看 MOSN 是否接收到配置。

    若 Pilot Pod 未启动,则等待 Pilot 启动,MOSN 有自动重连机制,不需要修改。

    等待日志输出如下内容,则连接恢复正常。

    [xds] [sds subscriber] stream client reconnected

2 服务注册失败

微服务控制台上未看到注册的服务。

  1. 查看应用启动参数是否正常。

    -DMOSN_ENABLE=true
    -Dcom.alipay.env=shared
    -DSOFA_INSTANCE_ID=000001
    -DSOFA_ANTVIP_ENDPOINT=ANTVIP_IP
  2. 按如下流程查看错误信息。

    110
  3. 查看 Annotations 配置。

    //容器环境
    mesh.tp.services/pub: '[{"serviceName":"org.example.services.userInterface.IHelloService:1.0.0:default@crpc","protocol":"crpc","targetPort":9999,"routers":[],"healthCheckConfig":{"firstHealthyDelay":15}},{"serviceName":"org.example.services.echoService.XyEchoService:1.0.0:default@crpc","protocol":"crpc","targetPort":9999,"routers":[],"healthCheckConfig":{"firstHealthyDelay":15}}]'
    //虚拟机环境 vi /etc/podinfo/annotations 查看内容
    mesh.tp.application={"antShareCloud":true,"instanceId":"000001","AntvipServerAddress":"11.239.139.142","dataCenter":"dcxx","zone":"z3","appName":"ledoulocal","accessKey":"","secretKey":"","extensionMap":{}}

3 服务订阅失败

微服务控制台上未看到订阅的服务。

  1. 查看应用启动参数是否正常。

    -DMOSN_ENABLE=true
    -Dcom.alipay.env=shared
    -DSOFA_INSTANCE_ID=000001
    -DSOFA_ANTVIP_ENDPOINT=ANTVIP_IP
  2. 按如下流程查看错误信息。

    111
  3. 查看 Annotations 配置是否正确。

    //容器环境
    mesh.tp.services/sub: '[{"serviceName":"org.example.services.userInterface.IHelloService:1.0.0:default@crpc","protocol":"crpc"},{"serviceName":"org.example.services.echoService.XyEchoService:1.0.0:default@crpc","protocol":"crpc"}]'
    

4 服务注册的提供者的版本号丢失

    查看应用 yaml 上是否打上 app.kubernetes.io/version: 1.0.0 Label 是否存在。

5 服务限流未生效

如果服务网格控制台配置正确,结果并非正常,可以参照如下排错思路:

  1. 可能 Pod 中 MOSN 对应容器服务问题。

    查看应用和 MOSN 之间的端口是否保持连接,输入命令如下:

    netstat -anlp |grep 34903

    正常结果显示如下:

    5
  2. 查验 MOSN 和 DRM 连接是否正常。

    输入命令如下:

    #服务端限流,因此进入 crpc-serve r的 MOSN 容器 bash
    kubectl exec -it crpc-server-5-8598d4b68b-x4hlf -c mosn-sidecar-container bash
    netstat -nalp |grep 9880
    11
  3. 查看限流规则是否合适。

  4. 查看网关是否不通

  5. 拉取服务,查验所调服务是否正常。

    拉取服务命令如下:

    curl localhost:13330/servicesnapshot

    {
        "EUREKA":{
            "org.example.services.echoService.XyEchoService:1.0.0:default@crpc":{
                "GZ00B":[
                    "crpc://11.166.158.233:30778?annotations={"serviceName":"org.example.services.echoService.XyEchoService:1.0.0:default@crpc","protocol":"crpc","targetPort":9999,"healthCheckConfig":{"timeout":10,"interval":10,"intervalJitter":2,"firstHealthyDelay":15,"healthyThreshold":3,"unhealthyThreshold":2,"commonCallbacks":["confregWithDelayOnce"]}}&app.kubernetes.io/version=1.0.0&appName=crpc-server&datacenter=dc1&mosn=true&port=9999&pressure_test=false&tls=false&zone=GZ00B"
                ]
            },
            "org.example.services.userInterface.IHelloService:1.0.0:default@crpc":{
                "GZ00B":[
                    "crpc://11.166.158.233:30778?annotations={"serviceName":"org.example.services.userInterface.IHelloService:1.0.0:default@crpc","protocol":"crpc","targetPort":9999,"healthCheckConfig":{"timeout":10,"interval":10,"intervalJitter":2,"firstHealthyDelay":15,"healthyThreshold":3,"unhealthyThreshold":2,"commonCallbacks":["confregWithDelayOnce"]}}&app.kubernetes.io/version=1.0.0&appName=crpc-server&datacenter=dc1&mosn=true&port=9999&pressure_test=false&tls=false&zone=GZ00B"
                ]
            }
        },
        "NACOS":{
            "org.example.services.echoService.XyEchoService:1.0.0:default@crpc":{
                "GZ00B":[
                    "crpc://11.166.158.233:30778?annotations={"serviceName":"org.example.services.echoService.XyEchoService:1.0.0:default@crpc","protocol":"crpc","targetPort":9999,"healthCheckConfig":{"timeout":10,"interval":10,"intervalJitter":2,"firstHealthyDelay":15,"healthyThreshold":3,"unhealthyThreshold":2,"commonCallbacks":["confregWithDelayOnce"]}}&app.kubernetes.io/version=1.0.0&appName=crpc-server&datacenter=dc1&mosn=true&port=9999&pressure_test=false&tls=false&zone=GZ00B"
                ]
            },
            "org.example.services.userInterface.IHelloService:1.0.0:default@crpc":{
                "GZ00B":[
                    "crpc://11.166.158.233:30778?annotations={"serviceName":"org.example.services.userInterface.IHelloService:1.0.0:default@crpc","protocol":"crpc","targetPort":9999,"healthCheckConfig":{"timeout":10,"interval":10,"intervalJitter":2,"firstHealthyDelay":15,"healthyThreshold":3,"unhealthyThreshold":2,"commonCallbacks":["confregWithDelayOnce"]}}&app.kubernetes.io/version=1.0.0&appName=crpc-server&datacenter=dc1&mosn=true&port=9999&pressure_test=false&tls=false&zone=GZ00B"
                ]
            }
        },
        "SOFAREGISTRY":{
            "org.example.services.echoService.XyEchoService:1.0.0:default@crpc":{
    
            },
            "org.example.services.userInterface.IHelloService:1.0.0:default@crpc":{
    
            }
        },
        "ZOOKEEPER":{
            "org.example.services.echoService.XyEchoService:1.0.0:default@crpc":{
                "GZ00B":[
                    "crpc://11.166.158.233:30778?annotations={"serviceName":"org.example.services.echoService.XyEchoService:1.0.0:default@crpc","protocol":"crpc","targetPort":9999,"healthCheckConfig":{"timeout":10,"interval":10,"intervalJitter":2,"firstHealthyDelay":15,"healthyThreshold":3,"unhealthyThreshold":2,"commonCallbacks":["confregWithDelayOnce"]}}&app.kubernetes.io/version=1.0.0&appName=crpc-server&datacenter=dc1&mosn=true&port=9999&pressure_test=false&tls=false&zone=GZ00B"
                ]
            },
            "org.example.services.userInterface.IHelloService:1.0.0:default@crpc":{
                "GZ00B":[
                    "crpc://11.166.158.233:30778?annotations={"serviceName":"org.example.services.userInterface.IHelloService:1.0.0:default@crpc","protocol":"crpc","targetPort":9999,"healthCheckConfig":{"timeout":10,"interval":10,"intervalJitter":2,"firstHealthyDelay":15,"healthyThreshold":3,"unhealthyThreshold":2,"commonCallbacks":["confregWithDelayOnce"]}}&app.kubernetes.io/version=1.0.0&appName=crpc-server&datacenter=dc1&mosn=true&port=9999&pressure_test=false&tls=false&zone=GZ00B"
                ]
            }
        }
    }

6 服务熔断未生效

服务熔断生效链路:DSRConsole > DRM > MOSN。

  1. 首先检查界面熔断规则配置是否正确。

    熔断方向选择客户端的话需填写客户端的应用,表示在客户端侧进行熔断,熔断方向在服务端的话需填写服务端的应用,表示在服务端进行熔断。

  2. 查看 DRM 是否有熔断规则。

    下图中表示收到了熔断规则。

    6

  3. 查看 MOSN 是否接收到了熔断规则。

    进入客户端或服务端(取决于界面上的熔断方向,客户端熔断就进客户端的 MOSN )的 MOSN 容器,打开 default.log 的 DEBUG 日志,命令如下:

    curl -X POST \
    http://127.0.0.1:34901/api/v1/update_loglevel \
      -d '{
      "log_level":"DEBUG",
      "log_path":"./logs/mosn/default.log"
    }'

    界面上重新开启熔断规则,查看 default.log 里是否接收到了熔断规则。

    cd /home/admin/logs/mosn
    tail -f default.log

    出现类似下图内容,表示熔断规则接收成功。

    108
  4. 如果未收到熔断规则,输入以下命令,查看 MOSN 和 DRM 是否建立连接。

    netstat -na | grep 9880

    出现类似下图内容,表示 MOSN 和 DRM 已经建立连接。

    108

7 服务降级未生效

服务降级生效链路 DSRConsole > DRM -> MOSN。

服务降级发生在客户端,没生效的话先检查配置项是否填写正确(检查应用,服务,方法)。

  1. 检查 DRM 动态配置是否有记录。

    下图表示 DRM 收到了降级规则。

    110
  2. 查看 MOSN 日志是否收到了降级规则。

    cd /home/admin/logs/mosn
    tail -n 200 downgrade.log

    下图表示 MOSN 收到了降级规则。

    106
  3. MOSN 未收到日志,输入以下命令,查看 MOSN 和 DRM 是否建立连接。

    netstat -na | grep 9880

    下图表示 MOSN 和 DRM 已经建立连接。

    107

8 服务鉴权未生效

服务鉴权生效链路 DSRConsole > Clioudmesh OpenAPI > 写入 APIServer > Pilot 监听 CR 资源变化 > 把鉴权规则下发到 MOSN。

8

进到 DSRConsole 机器输入 env | grep auth.dispatch.target.sigma 命令查看环境变量。

如果没有需要加上环境变量 -Dauth.dispatch.target.sigma=true

链路倒着排查,先查看 MOSN 是否收到了配置。

  1. 输入如下命令,打开 defult.log DEBUG 日志。

    curl -X POST \
     http://127.0.0.1:34901/api/v1/update_loglevel \
      -d '{
      "log_level":"DEBUG",
      "log_path":"./logs/mosn/default.log"
    }'
  2. 进入 /home/admin/logs/mosn 目录

  3. 执行 grep 'rbac' *.log 命令。

    1. 如果出现类似以下红框的日志,说明鉴权规则已经下发到了 MOSN。

      鉴权没生效的话,需要检查自己配置的规则是否正确(要先打开 DEBUG日志才能看到下方日志)。qq

    2. 如果 MOSN 没有收到鉴权规则,往下继续检查。

  4. 检查和 Pilot 连接是否正常。

    • 如果出现类似下图内容,说明和 Pilot 连接正常。

      123
    • 如果和 Pilot 连接不正常,查看 Pilot 地址是否正确。

      • 如果 Pilot 地址不正确,将 Pilot 地址修改正确。

      • 如果 Pilot 地址正确,往下继续检查。

  5. 在控制台里输入以下命令,查看 MOSN RbacConfig 资源。查看 CR 是否下发到 k8s APIServer

    kubectl get mosnrbacconfigs -n default --sort-by=.metadata.creationTimestamp | tail -n +2
    • 如果出现类似下图内容,说明资源已经下发到了 k8s API Server

      22
    • 如果 k8s 里没有资源,往下继续检查。

  6. 查看 DSRConsole 控制台动态配置 OpenAPI 地址是否配置正确。

    33
    1. 如果 OpenAPI 地址不正确,将 OpenAPI 地址修改正确。

    2. 如果 OpenAPI 地址正确,往下继续检查。

  7. 进入 Cloudmesh OpenAPI 容 器,查看日志 /home/admin/logs/cloudmesh

    openapi.log:错误日志打印到这个文件。

    request.log:调用请求日志打印到这个文件。

    发送一个请求,查看请求是否打到了 OpenAPI,查看日志是否出错。

9 故障注入未生效

故障注入可能发生在客户端,也可能发生在服务端,通常用来注入一段时间异常或者直接注入异常。注入规则没生效时,先检查自己的注入规则是否配置正确,如客户端注入需填写客户端的应用名,服务端注入需填写服务端的应用名。

  1. 观察 DRM 是否接收到了规则。

    出现类似下图内容表示 DRM 接收到了规则。

    44
  2. 输入以下命令查看 MOSN 和 DRM 的长连接是否存在,以及 DRM 的地址是否正确。

    9880 是 MOSN 的端口。

    netstat -na | grep 9880

    下图表示 MOSN 和 DRM 建立了长连接,DRM 地址正确。

    55
  3. 如果配置了注入规则,访问请求一直超时,规则关闭后又能成功访问,可能是协议不适配。MOSN 没对接好会出现这个问题。

10 故障隔离未生效

故障隔离功能是在客户端侧隔离故障的服务端机器,隔离生效后请求就不会调用错误的机器。

故障隔离是 DSRConsole 直接通过 DRM 下发规则配置给 MOSN 的。

  1. 观察 DRM 是否接收到了规则。

    下图是表示收到了规则。

    66
  2. 打开隔离规则,查看客户端 MOSN 容器日志 /home/admin/logs/mosn/fault_tolerance.log

    下图表示收到了隔离规则。

    77如果未收到隔离规则,往下继续检查。

  3. 输入以下命令查看 MOSN 和 DRM 的长连接是否存在,以及 DRM 的地址是否正确。

    9880 是 MOSN 的端口。

    netstat -na | grep 9880

    下图表示 MOSN 和 DRM 建立了长连接,DRM 地址正确。

    88
  4. 检查故障隔离配置规则。

    MOSN 收到了规则,但故障隔离没生效,可能是故障隔离配置有问题。

    下图就是错误的配置。异常比例阈值 * 异常比例倍数 = 200,最大的出错上限是 100。99

  5. 以上都检查过了,问题还未得到解决,请及时联系开发人员。

11 服务路由未生效

路由规则的下发顺序:在控制台配置完成后,先调用 DSRConsole 服务,DSRConsole 把规则发送给 Cloudmesh OpenAPI,OpenAPI 把配置写入 k8s APIServer,然后 Pilot 监听 k8s APIServer 中的配置信息变化,然后把配置信息发送给客户端的 MOSN。

按路由下发顺序倒着检查:

  1. 查看路由规则是否下发到 MOSN。

    进入 MOSN,输入以下命令,查看日志文件,检查路由规则是否下发。

    kubectl exec -it crpc-client-1-84d49d4468-sbtc5 -c mosn-sidecar-container bash
    说明

    crpc-client-1-84d49d4468-sbtc5 代表客户端的 Pod 名称,执行时要修改为当前客户端的 Pod 名称。

    下图表示路由规则已经下发。

    01
  2. 执行 kubectl get virtualservice -n default 命令,查看路由规则是否下发到 k8s APIServer

    说明

    virtualservice 是自定义的内容,执行时可根据实际情况进行修改。

    下图表示内容已经下发。

    02
  3. 执行 netstat -an|grep 15050 命令,查看 MOSN 和 Pilot 是否建立长连接。

    下图表示建立了长连接。

    03
  4. 执行 kubectl get pod -n cloudmesh -o wide 命令,检查 Pilot 应用和 APIServer 应用的 IP 配置的是否正确。

    下图中查看 openapi-7b794d6796-x2wp4 和 pilot-fb4777d78-f9nml 的 IP 配置。

    05

    OpenAPI 需要在两处进行配置,如下图所示:

    010envConfig ( ) 这个属性是为了服务网格中 Sidecar 管理使用的。

    011

    openApiUrl(OpenAPI 的地址)这个属性是将路由规则下发到 openApi。

    Pilot 地址需要在发布应用的 yaml 文件中配置,配置信息如下:

    - name: PILOT_SERVER_ADDRESS
      value: 30.102.208.144
  5. 查看所有的服务列表。

    进入客户端的 MOSN 容器,输入 curl localhost:13330/servicesnapshot 命令查看所有的服务列表。

如果看到的服务列表和在控制台看到的不一样,以在 MOSN 容器看到的为准。012

配置服务路由有以下注意事项:

  • 配置多条路由规则的情况,先匹配优先级更高的路由规则。

  • 分流开关:当流量目的地分组没有服务实例,是否转发到其他分组。

  • 降级开关:当前规则没有匹配的服务实例时,是否继续匹配其它规则。

  • 如果全都匹配不上,路由规则就会失效,就会优先选择本 Zone 的服务实例( Zone 信息在发布应用的 yaml 文件中)。

  • 应用名称是配置的服务端的应用名称。

  • 删除一个开启的路由规则,客户端随机选择一台服务端进行调用。

  • 流量精确匹配,先根据服务实例属性进行流量过滤,过滤之后的流量再按照流量目的地进行路由。

    p11
  • 多条服务实例分组条件是与的关系(需要同时满足)。

    p33
  • 如果为同一个应用,同一个接口服务重复配置多条规则,页面上会显示到一起。

  • 路由粒度:如果配置成应用级,可以在手写模式下填 *,或者在选择模式下,选择全部服务。

12 集群开通失败

集群开通流程: web 界面访问 DSRConsole 接口,DSRConsole 调用 Cloudmesh OpenAPI 接口开通集群。

  1. 检查下配置的 OpenAPI 地址是否正确。

    说明

    所属应用 DSRConsole 配置类: com.alipay.antcloud.dsrconsole.core.service.dispatcher.drm.DrmDispatcherConfig 配置标识: Alipay.dsrconsole:name=com.alipay.antcloud.dsrconsole.core.service.dispatcher.drm.DrmDispatcherConfig.openApiUrl,version=3.0@DRM

    成功配置类似下图:

    012
  2. 检查 OpenAPI 是否缺少配置。

    进入 OpenAPI 容器,在 /home/admin/logs/cloudmesh/openapi.log 文件查看请求的错误日志。

    /home/admin/logs/cloudmesh/request.log 文件查看请求和响应信息日志。

    下面列出一些错误示例和对应的解决方法。

    • 错误示例1,类似下图的错误信息:

      101解决方法如下:

      kubectl edit cm mesh-authentication -ncloudmesh
      jf
    • 错误示例2,类似下图的错误信息:

      102说明这个证书不对,检查证书的正确性。

    • 错误示例3,类似下图的错误信息:

      说明 tls-config 少了一些配置。105

      解决方案:

      输入 kubectl edit cm tls-config -oyaml -ncloudmesh 查看 tls-config 配置。

      以下是全量配置,进行对比检查,加上缺少的配置即可。

      apiVersion: v1
      data:
        destinationrule.json: |
          {
            "apiVersion": "networking.istio.io/v1alpha3",
            "kind": "DestinationRule",
            "plural": "destinationrules",
            "metadata": {
              "name": "mtls",
              "labels": {
                "cloudmesh/ignore-drm-store": "true"
              }
            },
            "spec": {
              "trafficPolicy": {
                "tls": {
                  "mode": "ISTIO_MUTUAL"
                }
              }
            }
          }
        guomi-mtls-policy.json: |
          {
            "apiVersion": "authentication.istio.io/v1alpha1",
            "kind": "Policy",
            "plural": "policies",
            "metadata": {
              "name": "default"
            },
            "spec": {
              "peers": [
                {
                  "mtls": {
                    "mode": "STRICT"
                  }
                }
              ],
              "tls_params": {
                "cipher_suites": [
                  "TLS_SM4_GCM_SM3",
                  "ECDHE-RSA-AES256-GCM-SHA384",
                  "ECDHE-ECDSA-AES256-GCM-SHA384"
                ]
              }
            }
          }
        guomi-policy.json: |
          {
            "apiVersion": "authentication.istio.io/v1alpha1",
            "kind": "Policy",
            "plural": "policies",
            "metadata": {
              "name": "default"
            },
            "spec": {
              "peers": [
                {
                  "mtls": {
                  }
                }
              ],
              "tls_params": {
                "cipher_suites": [
                  "TLS_SM4_GCM_SM3",
                  "ECDHE-RSA-AES256-GCM-SHA384",
                  "ECDHE-ECDSA-AES256-GCM-SHA384"
                ]
              }
            }
          }
        mtls-policy.json: |
          {
            "apiVersion": "authentication.istio.io/v1alpha1",
            "kind": "Policy",
            "plural": "policies",
            "metadata": {
              "name": "default"
            },
            "spec": {
              "peers": [
                {
                  "mtls": {
                    "mode": "STRICT"
                  }
                }
              ]
            }
          }
        scope-config.json: |
          {
            "apiVersion": "cloudmesh.alipay.com/v1",
            "kind": "PolicyScopeConfig",
            "metadata": {
              "name": "tls-sc"
            },
            "spec": {
              "scope": {
                "selectors": [
                  {
                    "confRef": {
                      "kind": "istio/authentication/v1alpha1/policies",
                      "name": "default"
                    }
                  }
                ]
              }
            }
          }
        tls-policy.json: |
          {
            "apiVersion": "authentication.istio.io/v1alpha1",
            "kind": "Policy",
            "metadata": {
              "name": "default"
            },
            "spec": {
              "peers": [
                {
                  "mtls": {
                  }
                }
              ]
            }
          }
      kind: ConfigMap
      metadata:
        annotations:
          kubectl.kubernetes.io/last-applied-configuration: |
            {"apiVersion":"v1","data":{"guomi-policy.json":"{\n  \"apiVersion\": \"authentication.istio.io/v1alpha1\",\n  \"kind\": \"Policy\",\n  \"metadata\": {\n    \"name\": \"default\"\n  },\n  \"spec\": {\n    \"peers\": [\n      {\n        \"mtls\": {\n        }\n      }\n    ],\n    \"tls_params\": {\n      \"cipher_suites\": [\n        \"ECDHE-RSA-SM4-SM3\",\n        \"ECDHE-ECDSA-SM4-SM3\",\n        \"ECDHE-RSA-AES256-GCM-SHA384\",\n        \"ECDHE-ECDSA-AES256-GCM-SHA384\"\n      ]\n    }\n  }\n}\n","scope-config.json":"{\n  \"apiVersion\": \"cloudmesh.alipay.com/v1\",\n  \"kind\": \"PolicyScopeConfig\",\n  \"metadata\": {\n    \"name\": \"tls-sc\"\n  },\n  \"spec\": {\n    \"scope\": {\n      \"selectors\": [\n        {\n          \"confRef\": {\n            \"kind\": \"istio/authentication/v1alpha1/policies\",\n            \"name\": \"default\"\n          }\n        }\n      ]\n    }\n  }\n}\n","tls-policy.json":"{\n  \"apiVersion\": \"authentication.istio.io/v1alpha1\",\n  \"kind\": \"Policy\",\n  \"metadata\": {\n    \"name\": \"default\"\n  },\n  \"spec\": {\n    \"peers\": [\n      {\n        \"mtls\": {\n        }\n      }\n    ]\n  }\n}\n"},"kind":"ConfigMap","metadata":{"annotations":{},"name":"tls-config","namespace":"cloudmesh"}}
        creationTimestamp: "2020-06-04T13:18:25Z"
        name: tls-config
        namespace: cloudmesh
        resourceVersion: "236858269"
        selfLink: /api/v1/namespaces/cloudmesh/configmaps/tls-config
        uid: df53398b-a665-11ea-947e-02420ba6b231

13 Sidecar未成功注入

检查是否带了 sidecar-operator 的启动参数。

12
--annotation-key-injection-policy=aks.cafe.sofastack.io/inject
--annotation-val-injection-policy=enabled

需要注入的 Pod 前置需要带上 Annotation , 只有配置了这个才会走下一步的注入流程, 当前这个配置必须要有 aks.cafe.sofastack.io/inject=enabled 这个 Annotation。

--run-mode=white-config 表示使用白名单模式配置是否注入。

--default-white-config-namespaces=cloudmesh 表示从哪个 ns 下取 mesh-sidecar-inject-config 这个 cm。

apiVersion: v1
kind: ConfigMap
metadata:
  name: mesh-sidecar-inject-config
  namespace: cloudmesh
data:
  whiteConfig: |-
    - sidecarName: mosn
      globalInject: true
    - sidecarName: hijack
      globalInject: true
    - sidecarName: filebeat
      globalInject: true

14.Sidecar 管理未看到对应的 Sidecar 信息

执行 kubectl -n cloudmesh logs -f <openapi podname> 查看 OpenAPI 日志。

日志示例如下:13

15.Trace 展示不出来

检查 TRACING_SWITCH 环境变量是否是合法的 SkyWalking 或 Zipkin。

  • 如果 TRACING_SWITCH=SkyWalking,则检查 SKY_WALKING_ADDRESS 和 SKY_WALKING_PORT 是否正确配置了 SkyWalking 地址。

  • 如果 TRACING_SWITCH=Zipkin,则检查 ZIPKIN_ADDRESS 和 ZIPKIN_PORT 是否正确配置了 Zipkin 地址。

16.Metric 数据未采集成功

查看 Prometheus 是否正确的配置了 业务采集 的地址。

执行 kubectl get po -o yaml 查看是否打上对应 Annotations。

执行 curl podip:34903/metrics 查看是否有指标输出。