適用於 Azure Kubernetes Service 的 Istio 型服務網格附加元件遙測 API
Istio 可以 產生網格中所有工作負載的計量、分散式追蹤和存取記錄 。 適用於 Azure Kubernetes Service 的 Istio 型服務網格附加元件 (AKS) 會透過 共用 MeshConfig 和 Istio Telemetry API v1
for Istio 附加元件次要修訂 asm-1-22
和更高版本提供遙測自定義選項。
注意
雖然 Istio MeshConfig 也提供跨網格全域設定遙測的選項,但遙測 API 會針對每個服務或每個工作負載的遙測設定提供更細微的控制。 隨著 Istio 社群繼續投資遙測 API,它現在是遙測設定的慣用方法。 我們鼓勵移轉至遙測 API,以設定要收集在網格中的遙測。
必要條件
- 您必須在修訂
asm-1-22
或更新版本。 如需如何執行次要版本升級的資訊,請參閱 Istio 附加元件升級檔。
設定遙測資源
下列範例示範如何使用 來透過遙測 API asm-1-22
,跨 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
確認 Pod 可以看到 sleep
存取記錄:
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
現在,請確認 Pod 可以看到 httpbin
存取記錄:
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 附加 元件支持原則檔。
下列遙測 API 元件是 allowed
Istio 附加元件或 supported
。 此資料表中未包含的任何欄位都是 blocked
。
遙測 API 欄位 | 支援/允許 | 注意事項 |
---|---|---|
accessLogging.match |
支援 | - |
accessLogging.disabled |
支援 | - |
accessLogging.providers |
允許 | 支援預設 envoy 存取記錄提供者。 如需記錄收集與查詢的受控體驗,請參閱 Azure 監視器 Container Insights Log Analytics。 第三方或開放原始碼記錄收集和分析解決方案不受 allowed 支援。 |
metrics.overrides |
支援 | - |
metrics.providers |
允許 | 支援使用 Azure 監視器受控 Prometheus 的計量集合。 第三方或開放原始碼計量會擷取解決方案 allowed ,但不受支援。 |
tracing.* |
允許 | 所有追蹤組態都 allowed 不受支援。 |