適用対象: ✔️ AKS 自動 ✔️ AKS Standard
ほとんどの運用ワークロードでは、AKS の推奨される運用環境対応の既定値は AKS Automatic です。 AKS 自動クラスターには、事前構成済みのマネージド NAT ゲートウェイが含まれます。
AKS Standard では、クラスターの AKS で管理される送信接続が必要な場合に、マネージド NAT ゲートウェイを作成または構成できます。 Bring Your Own (BYO) ネットワーク シナリオでは、ユーザー割り当て NAT ゲートウェイを使用します。
Azure Load Balancer経由でエグレス トラフィックをルーティングできますが、使用できるトラフィックの送信フローの数には制限があります。 Azure NAT Gatewayでは、IP アドレスあたり最大 64,512 個の送信 UDP および TCP トラフィック フローがサポートされ、最大 16 個の IP アドレスがサポートされます。 NAT ゲートウェイをサポートする送信の種類は、 managedNATGatewayV2 (プレビュー)、 managedNATGateway、 userAssignedNATGatewayの 3 種類です。
この記事では、送信トラフィック用にマネージド NAT ゲートウェイとユーザー割り当て NAT ゲートウェイを使用して AKS クラスターを作成する方法について説明します。 また、Windowsの OutboundNAT を無効にする方法についても説明します。
重要
managedNATGatewayV2送信の種類は現在プレビュー段階です。
Azureのベータ版、プレビュー版、またはまだ一般公開されていない機能に適用される法的条件については、Microsoft Azure プレビューの追加利用規約をご覧ください。
前提条件
AKS 自動クラスターには、事前構成済みのマネージド NAT ゲートウェイが含まれます。 この記事の手順は、主に AKS Standard とカスタム ネットワークのシナリオを対象にしています。
- 最新バージョンの Azure CLIを使用していることを確認します。
- Kubernetes バージョン 1.20.x 以降を使用していることを確認します。
- マネージド NAT ゲートウェイは、カスタム仮想ネットワークと互換性がありません。
重要
非プライベート クラスターでは、API サーバー クラスター のトラフィックは、クラスターの送信の種類を通じてルーティングされ、処理されます。 API サーバー トラフィックがパブリック トラフィックとして処理されることを防ぐには、プライベート クラスターの使用を検討するか、API Server VNet 統合機能を確認してください。
AKS のマネージド NAT ゲートウェイ
AKS Automatic では、事前構成済みの運用対応の既定値の一部としてマネージド NAT ゲートウェイが使用されます。 このセクションは、AKS Standard を使用している場合、または AKS クラスターでのマネージド NAT ゲートウェイの動作を理解する必要がある場合に使用します。
マネージド NAT ゲートウェイは、AKS で管理される送信オプションです。 AKS は、クラスター ノードに送信接続を提供するために NAT ゲートウェイを作成および管理します。
必要な場合は、マネージド NAT ゲートウェイを使用します。
- 運用上のオーバーヘッドが少ない AKS で管理された送信接続。
- 運用環境に優しい既定の送信パス。
- カスタマー マネージド NAT ゲートウェイのデプロイよりも簡単なエグレス管理。
- 独自の NAT ゲートウェイ リソースを持ち込まない標準的な AKS ネットワーク モデル。
マネージド NAT Gateway を使用して AKS クラスターを作成する
送信 IP パラメーター
次の表では、各送信 IP パラメーターとその使用方法について説明します。
| パラメーター | 入力 | IP バージョン | パブリック IP を管理するのは誰か |
|---|---|---|---|
--nat-gateway-managed-outbound-ip-count |
[1, 16] の範囲の値。 希望のアウトバウンド IPv4 の数は、NAT ゲートウェイのアウトバウンド接続用です。 | IPv4 | Azure |
--nat-gateway-managed-outbound-ipv6-count |
[1, 16] の範囲の値。 NAT ゲートウェイの送信接続における必要なアウトバウンド IPv6 の数。 | IPv6 | Azure |
--nat-gateway-outbound-ips |
NAT ゲートウェイ送信接続用のコンマ区切りのパブリック IP リソース ID。 | IPv4 または IPv6 | カスタマー |
--nat-gateway-outbound-ip-prefixes |
NAT ゲートウェイ送信接続用のコンマ区切りのパブリック IP プレフィックス リソース ID。 | IPv4 または IPv6 | カスタマー |
マネージド StandardV2 NAT ゲートウェイを使用して AKS クラスターを作成する (managedNATGatewayV2)
重要
AKS のプレビュー機能は、セルフサービスのオプトイン単位で利用できます。 プレビューは、"現状有姿のまま" および "利用可能な限度" で提供され、サービス レベル アグリーメントおよび限定保証から除外されるものとします。 AKS プレビューは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。 そのため、これらの機能は運用環境での使用を目的としていません。 詳細については、次のサポート記事を参照してください。
-
az aks create、--outbound-type managedNATGateway、--nat-gateway-outbound-ips、--nat-gateway-outbound-ip-prefixes、--nat-gateway-managed-outbound-ip-count、および--nat-gateway-managed-outbound-ipv6-countパラメーターを使用して、--nat-gateway-idle-timeoutコマンドを使用して、マネージド StandardV2 NAT ゲートウェイを使用して AKS クラスターを作成します。 -
managedNATgatewayV2の送信 IP を構成する場合は、次のいずれかの方法を使用します。 Azureマネージド IP と顧客定義の送信 IP の両方を使用することはできません。-
Azure 管理 IP:
--nat-gateway-managed-ip-outbound-countと--nat-gateway-managed-outbound-ipv6-countを使用すると、Azure によって送信元パブリック IP が自動的に割り当てられ、管理されます。 -
顧客定義 IP:
--nat-gateway-outbound-ipsと--nat-gateway-outbound-ip-prefixesを使用して、事前にプロビジョニングされたパブリック IP アドレスまたはプレフィックスを独自に取り込み、送信トラフィックに使用される特定のアドレスを完全に制御できます。 StandardV2 NAT ゲートウェイでは、新しい StandardV2 パブリック IP を使用する必要があります。 既存の Standard SKU パブリック IP は、StandardV2 NAT ゲートウェイでは機能しません。
-
Azure 管理 IP:
aks-preview Azure CLI 拡張機能をインストールする
managedNATGatewayV2送信の種類は現在プレビュー段階です。 この送信の種類を使用するには、aks-preview Azure CLI拡張機能をインストールし、ManagedNATGatewayV2Preview機能フラグを登録します。
az extension add または az extension update コマンドを使用して、Azure CLI プレビュー拡張機能をインストールまたは更新します。
aks-preview Azure CLI 拡張機能の最小バージョンは20.0.0b1。
# Install the aks-preview extension
az extension add --name aks-preview
# Update the extension to make sure you have the latest version installed
az extension update --name aks-preview
ManagedNATGatewayV2Preview フィーチャーフラグを登録する
ManagedNATGatewayV2Previewコマンドを使用して、az feature register機能フラグを登録します。az feature register --namespace "Microsoft.ContainerService" --name "ManagedNATGatewayV2Preview"az feature showコマンドを使用して、登録が成功したことを確認します。 登録が完了するまで数分かかります。az feature show --namespace "Microsoft.ContainerService" --name "ManagedNATGatewayV2Preview"機能に
Registeredが表示されたら、Microsoft.ContainerServiceコマンドを使用して、az provider registerリソース プロバイダーの登録を更新します。
マネージド StandardV2 NAT ゲートウェイを使用して AKS クラスターを作成する
次のコマンドでは、必要なリソース グループ、NAT ゲートウェイにアタッチするパブリック IP およびパブリック IP プレフィックス リソース、およびマネージド StandardV2 NAT ゲートウェイを持つ AKS クラスターを作成します。
az group createコマンドを使用して、リソース グループを作成します。# Set environment variables for resource group, AKS cluster, public IP, and public IP prefix names export RANDOM_SUFFIX=$(openssl rand -hex 3) export MY_RG="myResourceGroup$RANDOM_SUFFIX" export MY_AKS="myNatV2Cluster$RANDOM_SUFFIX" export MY_IP="myNatOutboundIP$RANDOM_SUFFIX" export MY_IP_PREFIX="myNatOutboundIPPrefix$RANDOM_SUFFIX" # Create the resource group az group create --name $MY_RG --location "eastus2"az network public-ip createコマンドを使用して、ゾーン冗長 IPv4 パブリック IP アドレスとパブリック IP プレフィックスを作成します。 マネージド StandardV2 NAT ゲートウェイの送信 IP として使用する$MY_IPと$MY_IP_PREFIXを格納します。# Create a zone redundant IPv4 public IP address and store the ID to $MY_IP_ID for later use export MY_IP_ID=$(az network public-ip create \ --resource-group $MY_RG \ --name $MY_IP \ --location eastus2 \ --sku StandardV2 \ --allocation-method Static \ --version IPv4 \ --zone 1 2 3 \ --query publicIp.id \ --output tsv) # Create a zone redundant IPv4 public IP prefix and store the ID to $MY_IP_PREFIX_ID for later use export MY_IP_PREFIX_ID=$(az network public-ip prefix create \ --resource-group $MY_RG \ --name $MY_IP_PREFIX \ --location eastus2 \ --length 31 \ --sku StandardV2 \ --version IPv4 \ --zone 1 2 3 \ --query id \ --output tsv)AKS クラスターを作成し、
$MY_IP_ID、$MY_IP_PREFIX_ID、およびaz aks createパラメーターで--outbound-type managedNATGatewayV2コマンドを使用して、パブリック IP アドレス (--nat-gateway-outbound-ips) とパブリック IP プレフィックス (--nat-gateway-outbound-ip-prefixes) を参照します。az aks create \ --resource-group $MY_RG \ --name $MY_AKS \ --node-count 3 \ --outbound-type managedNATGatewayV2 \ --nat-gateway-outbound-ips $MY_IP_ID \ --nat-gateway-outbound-ip-prefixes $MY_IP_PREFIX_ID \ --nat-gateway-idle-timeout 4 \ --generate-ssh-keys
az aks update、--nat-gateway-outbound-ips、--nat-gateway-outbound-ip-prefixes、--nat-gateway-managed-outbound-count、または--nat-gateway-managed-outbound-ipv6-count パラメーターを使用して、--nat-gateway-idle-timeout コマンドを使用して、送信 IP、送信 IP プレフィックス、マネージド送信 IP 数、またはアイドル タイムアウトを更新します。
managedNATGatewayV2を更新して、作成後に顧客が定義した送信 IP アドレスと管理対象の送信 IP アドレスを切り替えることはできません。 送信 IP 構成は、StandardV2 NAT ゲートウェイが最初に作成され、不変のままである場合に決定されます。
マネージド Standard NAT ゲートウェイを使用して AKS クラスターを作成する (managedNATGateway)
-
az aks create、--outbound-type managedNATGateway、および--nat-gateway-managed-outbound-ip-countパラメーターを指定して--nat-gateway-idle-timeoutコマンドを使用して、マネージド Standard NAT ゲートウェイを使用して AKS クラスターを作成します。 NAT ゲートウェイを特定の可用性ゾーンから操作する場合は、--zonesを使用してゾーンを指定します。 - 複数の可用性ゾーン間でマネージド NAT ゲートウェイ リソースを使用することはできません。 ゾーン冗長送信接続の場合は、
managedNATgatewayV2の使用を検討してください。 - マネージド NAT ゲートウェイの作成時にゾーンを指定しない場合、NAT ゲートウェイは既定で ゾーンなし にデプロイされます。 NAT ゲートウェイがゾーンに存在しない場合、Azureはリソースをゾーンに配置します。 非ゾーン デプロイ モデルの詳細については、「非 ゾーン NAT ゲートウェイ」を参照してください。
を使用して AKS クラスターを作成する userAssignedNatGateway
この構成では、(Azure CNI 経由で) 独自のネットワークを使用し、NAT ゲートウェイがサブネットに事前構成されている必要があります。 この outbound-typeでは、Standard と StandardV2 の両方の NAT ゲートウェイがサポートされています。 次のコマンドでは、AKS クラスターの StandardV2 NAT ゲートウェイ リソースをデプロイするために必要なリソースを作成します。
az group createコマンドを使用して、リソース グループを作成します。# Set environment variables for resource group, AKS cluster, public IP, and public IP prefix names export RANDOM_SUFFIX=$(openssl rand -hex 3) export MY_RG="myResourceGroup$RANDOM_SUFFIX" # Create the resource group az group create --name $MY_RG --location southcentralusネットワークアクセス許可のマネージド ID を作成し、後で使用するために
$IDENTITY_IDに ID を格納します。export IDENTITY_NAME="myNatClusterId$RANDOM_SUFFIX" export IDENTITY_ID=$(az identity create \ --resource-group $MY_RG \ --name $IDENTITY_NAME \ --location southcentralus \ --query id \ --output tsv)出力例:
/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myNatClusterIdxxxaz network public-ip createコマンドを使用して、NAT ゲートウェイの StandardV2 パブリック IP を作成します。 StandardV2 NAT ゲートウェイには、StandardV2 パブリック IP アドレスが必要です。export PIP_NAME="myNatGatewayPip$RANDOM_SUFFIX" az network public-ip create \ --resource-group $MY_RG \ --name $PIP_NAME \ --location southcentralus \ --allocation-method Static \ --version IPv4 \ --zone 1 2 3 \ --sku standard-v2az network nat gateway createコマンドを使用して StandardV2 NAT ゲートウェイを作成します。export NATGATEWAY_NAME="myNatGateway$RANDOM_SUFFIX" az network nat gateway create \ --resource-group $MY_RG \ --name $NATGATEWAY_NAME \ --location southcentralus \ --public-ip-addresses $PIP_NAME \ --sku StandardV2 --idle-timeout 4重要
ゾーンの冗長性を確保するには、リージョン内の複数の可用性ゾーンにまたがる StandardV2 NAT ゲートウェイ リソースをデプロイします。 この構成により、1 つのゾーンで障害が発生した場合でも、継続的な送信接続が保証されます。 StandardV2 NAT ゲートウェイとその利点の詳細については、「 StandardV2 NAT ゲートウェイ」を参照してください。 これに対して、Standard NAT ゲートウェイ リソースは、デプロイする可用性ゾーン内でのみ回復性を提供します。
az network vnet createコマンドを使用して、仮想ネットワークを作成します。export VNET_NAME="myVnet$RANDOM_SUFFIX" az network vnet create \ --resource-group $MY_RG \ --name $VNET_NAME \ --location southcentralus \ --address-prefixes 172.16.0.0/20NAT ゲートウェイを使用して仮想ネットワークにサブネットを作成し、後で使用できるように ID を
$SUBNET_IDに保存します。export SUBNET_NAME="myNatCluster$RANDOM_SUFFIX" export SUBNET_ID=$(az network vnet subnet create \ --resource-group $MY_RG \ --vnet-name $VNET_NAME \ --name $SUBNET_NAME \ --address-prefixes 172.16.0.0/22 \ --nat-gateway $NATGATEWAY_NAME \ --query id \ --output tsv)az aks createコマンドを使用して、NAT ゲートウェイがあるサブネットとマネージド ID を使用する AKS クラスターを作成します。export AKS_NAME="myNatCluster$RANDOM_SUFFIX" az aks create \ --resource-group $MY_RG \ --name $AKS_NAME \ --location southcentralus \ --network-plugin azure \ --vnet-subnet-id $SUBNET_ID \ --outbound-type userAssignedNATGateway \ --assign-identity $IDENTITY_ID \ --generate-ssh-keys
実稼働に関する考慮事項
運用環境でマネージド NAT ゲートウェイを使用する場合は、送信トラフィックの動作、API サーバーのアクセス、ワークロードの回復性を計画します。
- ほとんどの AKS ワークロードで推奨される運用環境対応の既定値が必要な場合は、AKS Automatic を使用します。
- 独自の NAT ゲートウェイを使用せずに AKS で管理される送信接続が必要な場合は、AKS Standard でマネージド NAT ゲートウェイを使用します。
- API サーバー トラフィックの露出を減らす場合は、プライベート クラスターまたは API Server VNet 統合を使用します。
- 公開する前に、送信 IP 要件を確認します。
- ワークロードが固定の送信アドレスに依存している場合は、デプロイ前にマネージド NAT ゲートウェイがこれらの要件を満たしていることを検証します。
- AKS とは別に NAT を管理する必要がある場合は、ユーザー割り当て NAT ゲートウェイを使用します。
Windows のアウトバウンドNATを無効にする
outboundNAT Windows、AKS ポッドとの特定の接続と通信の問題を引き起こす可能性があります。 問題問題の一例として、ノード ポートの再利用があります。 この例では、Windows OutboundNAT はポートを使用してポッド IP を Windows ノード ホスト IP に変換します。これにより、ポート不足の問題が原因で外部サービスへの接続が不安定になる可能性があります。
Windowsは、既定で OutboundNAT を有効にします。 新しいWindows エージェント プールを作成するときに、OutboundNAT を手動で無効にできるようになりました。
前提条件と制限事項
- v1.26 以降の既存の AKS クラスターが必要です。 Kubernetes バージョン 1.25 以前を使用している場合は、 デプロイ構成を更新します。
- クラスターの送信の種類を LoadBalancer に設定することはできません。 NAT ゲートウェイまたは UDR に設定できます。
- NAT ゲートウェイ: NAT ゲートウェイは NAT 接続を自動的に処理し、Standard Load Balancerよりも強力です。 このオプションを使用すると、追加料金が発生する場合があります。
- UDR (UserDefinedRouting): ルーティング規則を構成する場合は、ポートの制限事項に留意する必要があります。
- ロード バランサーから NAT ゲートウェイに切り替えるには、NAT ゲートウェイを VNet に追加するか、
az aks upgrade実行して送信の種類を更新します。
注
UserDefinedRouting には次の制限があります。
- Load Balancerによる SNAT (既定の送信NAT を使用する必要があります) には、ホスト IP に 64 個のポートがあります。
- SNAT by Azure Firewall (アウトバウンドNAT を無効にする) には、パブリック IP あたり 2,496 ポートがあります。
- SNAT by NAT ゲートウェイ (アウトバウンド NAT を無効にする) には、パブリック IP あたり 64,512 ポートがあります。
- Azure Firewallポート範囲がアプリケーションに対して十分でない場合は、NAT ゲートウェイを使用する必要があります。
- 宛先 IP アドレスが IANA RFC 1918 または IANA RFC 6598 ごとの共有アドレス空間のプライベート IP アドレス範囲にある場合、Azure Firewallはネットワーク 規則を使用して SNAT を行いません。
Windowsの OutboundNAT を手動で無効にする
az aks nodepool addフラグを指定して--disable-windows-outbound-natコマンドを使用して新しいWindows エージェント プールを作成するときに、Windowsの outboundNAT を手動で無効にします。注
既存の AKS クラスターを使用できますが、送信の種類を更新し、ノード プールを追加して
--disable-windows-outbound-natを有効にすることが必要な合があります。export WIN_NODEPOOL_NAME="win$(head -c 1 /dev/urandom | xxd -p)" az aks nodepool add \ --resource-group $MY_RG \ --cluster-name $MY_AKS \ --name $WIN_NODEPOOL_NAME \ --node-count 3 \ --os-type Windows \ --disable-windows-outbound-nat出力例:
{ "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ContainerService/managedClusters/myNatClusterxxx/agentPools/mynpxxx", "name": "mynpxxx", "osType": "Windows", "provisioningState": "Succeeded", "resourceGroup": "myResourceGroupxxx", "type": "Microsoft.ContainerService/managedClusters/agentPools" }
関連するコンテンツ
Azure NAT Gatewayと AKS Automatic の詳細については、次の記事を参照してください。