AKS & Container Networking参照資料確認: 2026-09-11

Container Network Observability

AKS Container Network ObservabilityをHubble metrics、node/pod/TCP/DNS metrics、flow logs、Azure Monitor/Managed Prometheusで運用runbookへ組み込む。

この記事の目次

Container Network Observabilityを理解するための前提

AKS networkingは変化が速いため、旧方式とcurrent recommendationを区別して記載しています。実装直前には下記Microsoft Learnのcurrent constraints / region / version supportを再確認してください。

Advanced Container Networking ServicesのContainer Network ObservabilityはCiliumとnon-Ciliumの両data planeで利用できるcurrent capability。 eBPFを利用してnode-level metricsとHubble metricsを提供し、DNS resolution、pod-to-pod、Service interactionなどを観測できる。

container network logsはsource/destination IP、pod/service、namespace、port、protocol等のflow metadataを記録し、allow/dropや通信主体の切り分けに使う。 Azure Monitor managed service for PrometheusとAzure Managed Grafanaへmetricsを統合でき、cluster-localだけでなくcentral monitoringへ持ち込める。

障害時だけtelemetryを見るのではなく、正常時のDNS latency、TCP reset/retransmit、drop rate、top talker等のbaselineを持つことが重要。 ログ量・retention・table plan・costはnetwork volumeに比例し得るため、stored logs/on-demand、aggregation、scopeを要件で使い分ける。

通信経路と責任境界

調査原則: Kubernetes objectが正しいことはAzure data pathの正常性を保証せず、Azure resourceがHealthyであることもpod-to-pod/pod-to-serviceの成功を保証しません。source・destination・protocol・port・時刻を固定して両layerを照合します。

アドレスと識別情報の考え方

Address / identityWhere it lives運用上の意味
Pod/namespaceKubernetes contextephemeral IPだけでなくworkload metadataで検索できるようにする。
Servicevirtual frontend + backend setService-level symptomをactual Endpoint flowへ降ろす。
Flow tuplesrc/dst IP・port・protocol時刻とdecisionを固定して他logと相関する。
DNS namequery/response/latencyFQDN policyやSaaS障害ではIP flowとDNS signalを結び付ける。
重要: IPアドレスそのものとworkload/service identityを混同しません。autoscale・reschedule・SNAT・load balancingでaddressは変化するため、Kubernetes metadataとAzure resource identityを合わせて記録します。

設計判断

判断軸確認する問い設計として固定すること
Metrics vs logs常時計測と詳細調査をどう分けるかSLO/alertはmetrics、who/why調査はflow logsを中心。
Retention何日・どのscopeを保持するかincident/regulatory requirementとcostから決定。
Cardinalitypod/flow labelをどこまで保持するかhigh-cardinalityを無制限にcentralizeしない。
Cilium dependencysecurity機能も必要かobservability単体はnon-Ciliumでも利用可能。securityはCilium要件を別評価。
Runbookalertからどのqueryへ降りるかDNS/drop/TCP/hot podごとに固定playbookを用意。

実装・移行の順序

  1. 正常clusterでnode/pod/TCP/DNS metricsと代表flowを採取しbaseline化する。
  2. DNS failure、policy drop、backend unavailable等のcontrolled fixtureでsignalを対応付ける。
  3. Azure Monitor/Prometheus/Grafanaのretention・workspace・RBACを設計する。
  4. alertからpod/namespace/service/flowへdrilldownするdashboard/queryを作る。
  5. incident runbookへKubernetes object snapshotとAzure route/NSG evidenceを併記する。
  6. 月次でingestion量と未使用metric/logをreviewし、costとsignal qualityを調整する。

運用で残しておく情報

観点残すべき運用証拠
DNSquery rate/error/latencyとsource workloadを確認。
Dropspolicy/forwarding dropをnamespace/pod/serviceで絞る。
TCPreset/retransmit/connection failuresをapplication symptomと時刻同期。
Traffic balancetop talker/hot pod/uneven backend flowを確認。

変更前に確認する

Control state

AKS networkProfile、Kubernetes object、Azure associationをread-onlyで採取し、desired configurationを固定する。

Data plane

同じ5-tupleで実通信し、forward path・return path・source translation・policy decisionを証明する。

Observability

DNS/TCP/flow/drop/backend health等、障害点に対応するsignalを同一時刻で収集する。

Negative test

allowだけでなく、禁止すべき通信が明示的に失敗することもsecurity acceptanceへ含める。

Read-only / discovery commands
kubectl get pods -A -o wide
kubectl get svc,endpointslices -A
kubectl get networkpolicy -A
az aks show -g <rg> -n <cluster> --query "{dataplane:networkProfile.networkDataplane,plugin:networkProfile.networkPlugin}" -o jsonc

Common failure modes

症状疑うboundary確認・是正
dashboardは赤いが原因不明metricだけでflow context不足該当時刻のnetwork logsへ降りsource/destination/port/decisionを確認。
flow logsが多すぎるscope/retention/cardinality過大stored/on-demandとaggregationを見直す。
DNS errorのみ増加upstream/CoreDNS/policy/egressDNS signalからsource namespaceを特定しquery pathを追う。
non-Ciliumだから使えないと思い込むobservabilityとsecurity要件混同current docsではObservabilityはCilium/non-Cilium双方に対応。

Change safety / rollback

一括変更を避ける: telemetry設定変更もproduction impact/costを持つ。大量flow logをいきなり全cluster長期保存せず、計測目的・retention・budget・incident requirementを先に定義する。

Official sources