适用于 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 字段分为 allowed
、supported
和 blocked
值。 有关 Istio 加载项对功能和网格配置的支持策略的详细信息,请参阅 Istio 加载项支持策略文档。
对于 Istio 加载项,以下遥测 API 配置的值是 allowed
或 supported
。 此表中未包含的任何字段都是 blocked
。
遥测 API 字段 | 支持/允许 | 说明 |
---|---|---|
accessLogging.match |
支持 | - |
accessLogging.disabled |
受支持 | - |
metrics.overrides |
支持 | - |
tracing.* |
允许 | 所有跟踪配置均为 allowed ,但不受支持。 |