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

Azure CNI Overlay

Azure CNI Overlayのpod CIDR、nodeごとのaddress allocation、SNAT、NSG、hybrid overlap、scale設計をpacket pathで理解する。

この記事の目次

Azure CNI Overlayを理解するための前提

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

Overlayではcluster nodeだけがVNet subnetからIPを取得し、podはcluster作成時に指定したprivate pod CIDRからIPを取得する。 Microsoft Learnは各nodeへpod CIDRから/24 address spaceを割り当てるmodelを説明している。scale-out nodeにも同じcluster pod CIDRからaddress spaceが供給される。

podからpod CIDR外のdestinationへ出るtrafficはnode IPへSNATされる。外部側では通常pod IPではなくnode sourceとして見える。 pod CIDRはnode subnetだけでなく、VNet peering、ExpressRoute、VPNなどdirectly connected networkのprefixとも重複させない。

Overlay pod-to-pod trafficはencapsulation tunnelを前提としないAzure networking stack上の別routing domainで処理される。 subnet NSGはOverlay trafficへ影響するため、Node CIDR↔Pod CIDR / Pod CIDR↔Pod CIDRなどcluster機能に必要なtrafficを誤ってdenyしない。

通信経路と責任境界

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

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

Address / identityWhere it lives運用上の意味
Node CIDRVNet subnet addressAzure-facing source/next-hop anchor。
Pod CIDRcluster-private overlay rangenodeごとのpod block供給元。connected networkと非重複必須。
Service CIDRcluster virtual-service rangepod/node/on-prem/VNetと重複させない。
External source通常node IPへSNATpod CIDR外destination側のallowlist/flow logはnode source前提で確認。
重要: IPアドレスそのものとworkload/service identityを混同しません。autoscale・reschedule・SNAT・load balancingでaddressは変化するため、Kubernetes metadataとAzure resource identityを合わせて記録します。

設計判断

判断軸確認する問い設計として固定すること
Pod CIDR size何node × /24 allocationを将来必要とするかcurrent node数ではなくmax scaleを基準にcluster pod CIDRを確保。
CIDR uniquenesspeered/on-prem/other clusterと重複しないかIPAMで全体予約し、再利用はrouting domainが交差しない場合だけ。
NSGnode/pod internal flowをどこで制御するかsubnet NSGはplatform guardrail、workload segmentationはNetworkPolicyを優先。
External source identityexternal側でpod IP識別が必要かOverlay SNATで要件を満たさない場合は別IPAM mode/egress identityを検討。
Dual-stackIPv6要件とegress方式は何かpod/service CIDRsとNAT optionのcurrent supportを事前検証。

実装・移行の順序

  1. cluster pod CIDR、service CIDR、node subnet、hybrid/peering prefixのnon-overlapを機械的に検査する。
  2. max node countからpod CIDR capacityを算出し、nodeごとの/24 allocationを前提に余裕を持たせる。
  3. node subnet NSGでrequired node/pod flowを遮断していないことを確認する。
  4. 代表pod間をsame-node/cross-nodeで試験し、Service経由も追加する。
  5. pod→VNet/on-prem/internetでdestination側が見るsource IPを記録し、SNAT expectationと照合する。
  6. NetworkPolicyを導入し、Azure NSGと責任分界を明確にする。

運用で残しておく情報

観点残すべき運用証拠
CIDR inventorypodCidr(s)、serviceCidr(s)、nodeSubnet ID、peering/on-prem prefixを一枚にする。
Node allocationnode追加前後でpod placementとnode scaleを確認。
Source identityexternal destination側でsourceがnode IPになることを検証。
NSGdeny追加時はpod↔pod、node↔pod、DNS、Service trafficをcanary検証。

変更前に確認する

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
az aks show -g <rg> -n <cluster> --query networkProfile -o jsonc
kubectl get nodes -o wide
kubectl get pods -A -o wide
kubectl get svc -A -o wide

Common failure modes

症状疑うboundary確認・是正
外部hostへ届かないpod CIDRが外部prefixと重複Microsoft guidance通りnon-overlapを確認。overlap時はoverlayへ吸われる経路を疑う。
cross-node podだけ失敗NSG/overlay dataplane/node healthsame-node比較後、Node CIDR↔Pod CIDRとPod CIDR↔Pod CIDRを確認。
source IPがpodでないOverlayの正常SNAT behaviornode IP sourceが設計通りか確認し、必要ならegress identityを設計。
scale-out失敗pod CIDR/node subnet capacitynode subnet IPとoverlay pod CIDRの両方を別々に確認。

Change safety / rollback

一括変更を避ける: pod CIDR overlapは後から発覚すると修正costが高い。cluster作成前のaddress reviewを必須gateとし、接続予定のfuture peering/on-prem prefixも予約対象にする。

Official sources