この記事では、Azure Kubernetes Service (AKS) クラスターでの Azure CNI オーバーレイのセットアップ プロセス、デュアルスタック ネットワーク構成、およびワークロードデプロイの例について説明します。 Azure CNI オーバーレイ ネットワークの概要については、Azure Kubernetes Service (AKS) での Azure CNI オーバーレイ ネットワークの概要に関するページを参照してください。
重要
2025 年 11 月 30 日から、Azure Kubernetes Service (AKS) は、Azure Linux 2.0 のセキュリティ更新プログラムをサポートまたは提供しなくなりました。 Azure Linux 2.0 ノード イメージは、 202512.06.0 リリースでフリーズします。 2026 年 3 月 31 日以降、ノード イメージは削除され、ノード プールをスケーリングできなくなります。 ノード プールをサポートされている Kubernetes バージョンにアップグレードするか、osSku AzureLinux3 に移行して、サポートされている Azure Linux バージョンに移行します。 詳細については、 廃止に関する GitHub の問題 と Azure 更新プログラムの提供終了に関するお知らせを参照してください。 お知らせや更新情報を常に把握するには、 AKS のリリース ノートに従ってください。
前提条件
- Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
- Azure CLI バージョン 2.48.0 以降。 Azure CLI をインストールまたはアップグレードするには、「 Azure CLI のインストール」を参照してください。
- 既存の Azure リソース グループ。 作成する必要がある場合は、「 リソース グループの作成」を参照してください。
- 独自の仮想ネットワークを使用する場合は、 仮想ネットワークの前提条件を確認してください。
デュアルスタック ネットワークの場合は、お使いのリージョンで使用できる AKS でサポートされている Kubernetes バージョン を使用します。
Azure CNI オーバーレイ AKS クラスターの主要なパラメーター
次の表では、AKS クラスターで Azure CNI オーバーレイ ネットワークを構成するための主要なパラメーターについて説明します。
| パラメーター | Description |
|---|---|
--network-plugin |
Azure Container Networking Interface (CNI) ネットワークを使用するように azure に設定します。 |
--network-plugin-mode |
Azure CNI オーバーレイ ネットワークを有効にするには、 overlay に設定します。 この設定は、 --network-plugin=azure場合にのみ適用されます。 |
--pod-cidr |
クラスターのカスタム ポッド クラスレス Inter-Domain ルーティング (CIDR) ブロックを指定します。 既定値は 10.244.0.0/16です。 |
ネットワーク プラグインの既定の動作は、 --network-pluginを明示的に設定するかどうかによって異なります。
-
--network-pluginを指定しない場合、AKS は既定で Azure CNI オーバーレイに設定されます。 -
--network-plugin=azureを指定し、--network-plugin-modeを省略した場合、AKS は下位互換性のために仮想ネットワーク (ノード サブネット) モードを意図的に使用します。
Azure CNI オーバーレイ AKS クラスターを作成する
az aks createと--network-plugin=azureで --network-plugin-mode=overlay コマンドを使用して、Azure CNI オーバーレイ AKS クラスターを作成します。
--pod-cidrの値を指定しない場合、AKS は既定値の 10.244.0.0/16 を割り当てます。
az aks create \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--location $REGION \
--network-plugin azure \
--network-plugin-mode overlay \
--pod-cidr 192.168.0.0/16 \
--generate-ssh-keys
新しいノード プールを専用サブネットに追加する
同じ仮想ネットワーク内の別のサブネットにノード プールを追加して、仮想ネットワークまたはピアリングされた仮想ネットワーク リソースへのネットワーク トラフィックの仮想マシン (VM) ノード IP アドレスを制御します。
az aks nodepool add コマンドを使用してクラスターに新しいノード プールを追加し、--vnet-subnet-id パラメーターでサブネット リソース ID を指定します。 例えば次が挙げられます。
az aks nodepool add \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--name $NODE_POOL_NAME \
--node-count 1 \
--mode system \
--vnet-subnet-id $SUBNET_RESOURCE_ID
デュアルスタック ネットワークを使用した Azure CNI オーバーレイ AKS クラスターについて
Azure 仮想ネットワークを使用して、Azure CNI オーバーレイ AKS クラスターをデュアルスタック モードでデプロイできます。 この構成では、ノードで、Azure 仮想ネットワーク サブネットから IPv4 と IPv6 の両方のアドレスを受け取ります。 ポッドは、異なるアドレス空間からノードの Azure 仮想ネットワーク サブネットに IPv4 および IPv6 アドレスを受信します。 その後、ポッドで Azure 仮想ネットワークのリソースに到達できるように、ネットワーク アドレス変換 (NAT) が構成されます。 トラフィックの送信元 IP アドレスは、同じファミリの VM ノードのプライマリ IP アドレス (IPv4 から IPv4、IPv6 から IPv6 ) への NAT です。
Note
Cilium を利用した Azure CNI を使用して、デュアルスタック ネットワーク クラスターをデプロイすることもできます。 詳細については、「 Cilium を使用した Azure CNI を使用したデュアルスタック ネットワーク」を参照してください。
デュアルスタック ネットワークの制限事項
次の機能は、デュアルスタック ネットワークではサポートされていません。
- Azure ネットワーク ポリシー
- Calico ネットワーク ポリシー
- IPv4 のみをサポートする Standard NAT ゲートウェイ。 デュアルスタック エグレスの場合は、StandardV2 NAT ゲートウェイを使用します。 AKS マネージド
managedNATGatewayV2送信の種類はプレビュー段階です。 StandardV2 を使用する前に、既知の制限事項とリージョンの可用性と既知の問題を確認してください。 構成ガイダンスについては、「 AKS クラスターのマネージド NAT ゲートウェイまたはユーザー割り当て NAT ゲートウェイの作成」を参照してください。 - 仮想ノード アドオン
デュアルスタック ネットワークの主要なパラメーター
次の表では、Azure CNI オーバーレイ AKS クラスターでデュアルスタック ネットワークを構成するための主要なパラメーターについて説明します。
| パラメーター | Description |
|---|---|
--ip-families |
クラスターで有効にする IP ファミリのコンマ区切りの一覧を取得します。
ipv4 と ipv4,ipv6 のみがサポートされています。 |
--pod-cidrs |
ポッド IP を割り当てるためのクラスレス Inter-Domain Routing (CIDR) 表記のIP範囲を示す、コンマで区切られた一覧を使います。 このリスト内の範囲の数と順序は、--ip-families に指定されている値と一致する必要があります。 値を指定しない場合、パラメーターは既定値の 10.244.0.0/16,fd12:3456:789a::/64 を使用します。 |
--service-cidrs |
サービス IP を割り当てる CIDR 表記 IP 範囲のコンマ区切りの一覧を取得します。 このリスト内の範囲の数と順序は、--ip-families に指定されている値と一致する必要があります。 値を指定しない場合、パラメーターは既定値の 10.0.0.0/16,fd12:3456:789a:1::/108 を使用します。
--service-cidrsに割り当てられた IPv6 サブネットは、/108以下にすることができます。 |
CNI オーバーレイ AKS クラスター Azureデュアル スタックを作成する (Linux)
az group createコマンドを使用して、クラスターの Azure リソース グループを作成します。az group create --location $REGION --name $RESOURCE_GROUPaz aks createパラメーターを--ip-familiesに設定したipv4,ipv6コマンドを使用して、デュアルスタック AKS クラスターを作成します。az aks create \ --location $REGION \ --resource-group $RESOURCE_GROUP \ --name $CLUSTER_NAME \ --network-plugin azure \ --network-plugin-mode overlay \ --ip-families ipv4,ipv6 \ --generate-ssh-keys
CNI オーバーレイ AKS クラスター Azureデュアル スタックを作成する (Windows)
az aks createコマンドを使用して、Azure CNI オーバーレイを使用してクラスターを作成します。az aks create \ --name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP \ --location $REGION \ --network-plugin azure \ --network-plugin-mode overlay \ --ip-families ipv4,ipv6 \ --generate-ssh-keysaz aks nodepool addコマンドを使用して、Windows ノード プールをクラスターに追加します。az aks nodepool add \ --resource-group $RESOURCE_GROUP \ --cluster-name $CLUSTER_NAME \ --os-type Windows \ --name $WINDOWS_NODE_POOL_NAME \ --node-count 2
サンプル ワークロードを Azure CNI オーバーレイ AKS クラスターにデプロイする
仮想マシン ノードに IPv4/IPv6 アドレスを持つデュアルスタック AKS CNI オーバーレイ クラスターをデプロイします。 この例では、NGINX Web サーバーをデプロイし、IPv4 と IPv6 の両方のアドレスを持つ LoadBalancer サービスを使用して公開します。
ワークロードを公開する前に、クラスターで NGINX デプロイが実行されていることを確認します。 まだない場合は、デプロイを作成し、次のコマンドを使用して準備が整うのを待ちます。
kubectl create deployment nginx --image=nginx
kubectl rollout status deployment/nginx
Note
AKS クラスターのイングレスには、アプリケーション ルーティング アドオンを使用することをお勧めします。 ただし、デモンストレーションのために、この例では、アプリケーション ルーティング アドオンなしで NGINX Web サーバーをデプロイします。 アドオンの詳細については、「 アプリケーション ルーティング アドオンを使用したマネージド NGINX イングレス」を参照してください。
LoadBalancer サービスを使用してワークロードを公開する
kubectl コマンドまたは YAML マニフェストを使用して、NGINX デプロイを公開します。
このセクションでは、クラスターで nginx という名前の NGINX デプロイが実行されていることを前提としています。 デプロイが存在し、準備ができているかどうかを確認するには、 kubectl get deployment nginx 実行し、 READY 列に必要なすべてのレプリカが準備完了として表示されていることを確認します。
重要
現在、AKS の IPv6 サービスに関連する 2 つの制限があります 。
- Azure Load Balancer により、リンクローカル アドレスから IPv6 宛先に正常性プローブが送信されます。
Azure Linux ノード プールでは、このトラフィックをポッドにルーティングできないため、
externalTrafficPolicy: Clusterでデプロイされた IPv6 サービスにフローするトラフィックは失敗します。 -
externalTrafficPolicy: Localを使用して IPv6 サービスをデプロイする必要があります。これにより、kube-proxyがノード上のプローブに応答します。
kubectl expose deployment nginxコマンドを使用して NGINX デプロイを公開します。 最初のコマンドは、IPv4LoadBalancerサービスを作成します。 2 番目のコマンドは、IPv6LoadBalancerサービスを作成し、--overridesJSON を使用してipFamiliesをIPv6に設定し、必要なexternalTrafficPolicyをLocalに設定します。kubectl expose deployment nginx --name=nginx-ipv4 --port=80 --type=LoadBalancer kubectl expose deployment nginx --name=nginx-ipv6 --port=80 --type=LoadBalancer --overrides='{"spec":{"externalTrafficPolicy":"Local","ipFamilies":["IPv6"]}}'出力には、公開されているサービスが表示されます。 例えば次が挙げられます。
service/nginx-ipv4 exposed service/nginx-ipv6 exposedデプロイが公開され、
LoadBalancerサービスが完全にプロビジョニングされたら、kubectl get servicesコマンドを使用してサービスの IP アドレスを取得します。kubectl get services出力には、割り当てられた IP アドレスを持つサービスが表示されます。 例えば次が挙げられます。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx-ipv4 LoadBalancer 10.0.88.78 20.46.24.24 80:30652/TCP 97s nginx-ipv6 LoadBalancer fd12:3456:789a:1::981a 2603:1030:8:5::2d 80:32002/TCP 63skubectl get servicesコマンドを使用してサービス IP を取得し、環境変数に設定します。このコマンドでは、JSONPath 式
{.status.loadBalancer.ingress[0].ip}を使用して、サービスのロード バランサーのイングレス フィールドの最初のエントリから外部 IP アドレスを抽出し、SERVICE_IP変数に格納します。SERVICE_IP=$(kubectl get services nginx-ipv6 -o jsonpath='{.status.loadBalancer.ingress[0].ip}')IPv6 対応ホストからの
curl要求を使用して機能を確認します。 (Azure Cloud Shell は IPv6 対応ではありません)。curl -s "http://[${SERVICE_IP}]" | head -n5出力には、NGINX ウェルカム ページの HTML が表示されます。 例えば次が挙げられます。
<!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style>
関連コンテンツ
AKS での Azure CNI オーバーレイ ネットワークの詳細については、次の記事を参照してください。