适用于 Azure Kubernetes 服务的基于 Istio 的服务网格加载项的遥测 API

Istio 可以为网格中的所有工作负载生成指标、分布式跟踪和访问日志。 基于 Istio 的 Azure Kubernetes 服务 (AKS) 服务网格加载项通过共享的 MeshConfig 和 Istio 遥测 API v1(适用于 Istio 插件次要修订版 asm-1-22 及更高版本)提供遥测自定义选项。

注意

虽然 Istio MeshConfig 还提供了在网格中全局配置遥测的选项,但遥测 API 可以根据每个服务或每个工作负载提供对遥测设置的更精细的控制。 随着 Istio 社区不断投资开发遥测 API,它现在已成为遥测配置的首选方法。 建议迁移到遥测 API,以便配置要在网格中收集的遥测数据。

先决条件

  • 必须使用修订版 asm-1-22 或更高版本。 有关如何执行次要版本升级的信息,请参阅 Istio 加载项升级文档

配置遥测资源

以下示例演示了如何使用 asm-1-22(根据需要调整修订),通过遥测 API 为 Istio 附加组件在多个网格中启用 Envoy 访问日志记录。 有关该加载项的其他遥测 API 自定义的指导,请参阅遥测 API 支持范围部分和 Istio 文档

部署示例应用程序

为挎斗注入标记命名空间:

kubectl label ns default istio.io/rev=asm-1-22

部署 sleep 应用程序并设置 SOURCE_POD 环境变量:

kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.22/samples/sleep/sleep.yaml
export SOURCE_POD=$(kubectl get pod -l app=sleep -o jsonpath={.items..metadata.name})

然后,部署 httpbin 应用程序:

kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.22/samples/httpbin/httpbin.yaml

使用 Istio 遥测 API 启用 Envoy 访问日志记录

部署以下 Istio v1 遥测 API 资源,为整个网格启用 Envoy 访问日志记录:

cat <<EOF | kubectl apply -n aks-istio-system -f -
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
  name: mesh-logging-default
spec:
  accessLogging:
  - providers:
    - name: envoy
EOF

测试访问日志

将请求从 sleep 发送到 httpbin

kubectl exec "$SOURCE_POD" -c sleep -- curl -sS -v httpbin:8000/status/418

验证访问日志是否对 sleep Pod 可见:

kubectl logs -l app=sleep -c istio-proxy

应会看到以下输出:

[2024-08-13T00:31:47.690Z] "GET /status/418 HTTP/1.1" 418 - via_upstream - "-" 0 135 12 11 "-" "curl/8.9.1" "cdecaca5-5964-48f3-b42d-f474dfa623d5" "httpbin:8000" "10.244.0.13:8080" outbound|8000||httpbin.default.svc.cluster.local 10.244.0.12:53336 10.0.112.220:8000 10.244.0.12:42360 - default

现在,验证访问日志是否对 httpbin Pod 可见:

kubectl logs -l app=httpbin -c istio-proxy

应会看到以下输出:

[2024-08-13T00:31:47.696Z] "GET /status/418 HTTP/1.1" 418 - via_upstream - "-" 0 135 2 1 "-" "curl/8.9.1" "cdecaca5-5964-48f3-b42d-f474dfa623d5" "httpbin:8000" "10.244.0.13:8080" inbound|8080|| 127.0.0.6:55401 10.244.0.13:8080 10.244.0.12:53336 outbound_.8000_._.httpbin.default.svc.cluster.local default

遥测 API 支持范围

对于 AKS 的 Istio 服务网格加载项,遥测 API 字段分为 allowedsupportedblocked 值。 有关 Istio 加载项对功能和网格配置的支持策略的详细信息,请参阅 Istio 加载项支持策略文档

对于 Istio 加载项,以下遥测 API 配置的值是 allowedsupported。 此表中未包含的任何字段都是 blocked

遥测 API 字段 支持/允许 说明
accessLogging.match 支持 -
accessLogging.disabled 受支持 -
metrics.overrides 支持 -
tracing.* 允许 所有跟踪配置均为 allowed,但不受支持。