Azure Kubernetes Service (AKS) で Standard SKU ロード バランサーを使用するUse a Standard SKU load balancer in Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) で LoadBalancer 型の Kubernetes サービス経由でのアプリケーションへのアクセスを提供するために、Azure Load Balancer を使用できます。To provide access to applications via Kubernetes services of type LoadBalancer in Azure Kubernetes Service (AKS), you can use an Azure Load Balancer. AKS で実行されるロード バランサーは、内部または外部ロード バランサーとして使用できます。A load balancer running on AKS can be used as an internal or an external load balancer. 内部ロード バランサーは、AKS クラスターと同じ仮想ネットワークで実行されているアプリケーションに対してのみ Kubernetes サービスへのアクセスを可能にします。An internal load balancer makes a Kubernetes service accessible only to applications running in the same virtual network as the AKS cluster. 外部ロード バランサーは、1 つ以上のイングレス用のパブリック IP を受け取り、そのパブリック IP を使用して外部から Kubernetes サービスにアクセスできるようにします。An external load balancer receives one or more public IPs for ingress and makes a Kubernetes service accessible externally using the public IPs.

Azure Load Balancer は、BasicStandard の 2 つの SKU で使用できます。Azure Load Balancer is available in two SKUs - Basic and Standard. AKS クラスターを作成する場合、既定では Standard SKU が使用されます。By default, the Standard SKU is used when you create an AKS cluster. Standard SKU ロード バランサーを使用すると、より大きいバックエンド プール サイズ、Availability Zones など、追加のフィーチャーや機能が提供されます。Using a Standard SKU load balancer provides additional features and functionality, such as a larger backend pool size and Availability Zones. 使用するロード バランサーを選択する前に、StandardBasic ロード バランサーの違いを理解しておくことが重要です。It's important that you understand the differences between Standard and Basic load balancers before choosing which to use. AKS クラスターを作成した後は、そのクラスターのロード バランサー SKU は変更できません。Once you create an AKS cluster, you cannot change the load balancer SKU for that cluster. BasicStandard SKU の詳細については、「Azure Load Balancer の SKU の比較」をご覧ください。For more information on the Basic and Standard SKUs, see Azure load balancer SKU comparison.

この記事は、Kubernetes および Azure Load Balancer の基本的な概念を理解していることを前提としています。This article assumes a basic understanding of Kubernetes and Azure Load Balancer concepts. 詳細については、「Azure Kubernetes Services (AKS) における Kubernetes の中心概念」と「Azure Load Balancer の概要」を参照してください。For more information, see Kubernetes core concepts for Azure Kubernetes Service (AKS) and What is Azure Load Balancer?.

Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。If you don't have an Azure subscription, create a free account before you begin.

Azure Cloud Shell を使用するUse Azure Cloud Shell

Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Cloud Shell で Bash または PowerShell を使用して、Azure サービスを操作できます。You can use either Bash or PowerShell with Cloud Shell to work with Azure services. ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Azure Cloud Shell を開始するには:To start Azure Cloud Shell:

オプションOption 例とリンクExample/Link
コード ブロックの右上隅にある [使ってみる] を選択します。Select Try It in the upper-right corner of a code block. [使ってみる] を選択しても、コードは Cloud Shell に自動的にコピーされません。Selecting Try It doesn't automatically copy the code to Cloud Shell. Azure Cloud Shell の [使ってみる] の例
https://shell.azure.com に移動するか、 [Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. 新しいウィンドウで Cloud Shell を起動するLaunch Cloud Shell in a new window
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。Select the Cloud Shell button on the top-right menu bar in the Azure portal. Azure Portal の [Cloud Shell] ボタン

Azure Cloud Shell でこの記事のコードを実行するには:To run the code in this article in Azure Cloud Shell:

  1. Cloud Shell を開始します。Start Cloud Shell.

  2. [コピー] ボタンを選択して、コード ブロックをコードにコピーします。Select the Copy button on a code block to copy the code.

  3. Windows と Linux では Ctrl+Shift+V キーを選択し、macOS では Cmd+Shift+V キーを選択して、コードを Cloud Shell セッションに貼り付けます。Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Enter キーを選択して、コードを実行します。Select Enter to run the code.

CLI をローカルにインストールして使用する場合、この記事では、Azure CLI バージョン 2.0.74 以降を実行していることが要件となります。If you choose to install and use the CLI locally, this article requires that you are running the Azure CLI version 2.0.74 or later. バージョンを確認するには、az --version を実行します。Run az --version to find the version. インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。If you need to install or upgrade, see Install Azure CLI.

開始する前にBefore you begin

この記事では、Standard SKU Azure Load Balancer を持つ AKS クラスターがあることを前提としています。This article assumes you have a AKS cluster with the Standard SKU Azure Load Balancer. AKS クラスターが必要な場合は、Azure CLI を使用した場合または Azure portal を使用した場合の AKS のクイックスタートを参照してください。If you need an AKS cluster, see the AKS quickstart using the Azure CLI or using the Azure portal.

既存のサブネットまたはリソース グループを使用する場合、AKS クラスターのサービス プリンシパルにはネットワーク リソースを管理するアクセス許可も必要です。The AKS cluster service principal needs also permission to manage network resources if you use an existing subnet or resource group. 一般に、委任されたリソースのサービス プリンシパルにはネットワーク共同作成者ロールを割り当てます。In general, assign the Network contributor role to your service principal on the delegated resources. アクセス許可の詳細については、他の Azure リソースへの AKS アクセスの委任に関する記事を参照してください。For more information on permissions, see Delegate AKS access to other Azure resources.

Basic SKU から Standard SKU にロード バランサーを移行するMoving from a Basic SKU Load Balancer to Standard SKU

既存のクラスターに Basic SKU ロード バランサーが与えられている場合、Standard SKU ロード バランサーでクラスターを使用する目的で移行するとき、動作に重大な違いがあることにご留意ください。If you have an existing cluster with the Basic SKU Load Balancer, there are important behavioral differences to note when migrating to use a cluster with the Standard SKU Load Balancer.

たとえば、load-balancer-sku 型のクラスターをクラスターの作成時にのみ定義できる場合、一般的に blue/green のデプロイでクラスターを移行します。For example, making blue/green deployments to migrate clusters is a common practice given the load-balancer-sku type of a cluster can only be defined at cluster create time. しかしながら、Basic SKU ロード バランサーでは、Standard SKU IP アドレスが必須の Standard SKU ロード バランサーとの間に互換性がない Basic SKU IP アドレスが使用されます。However, Basic SKU Load Balancers use Basic SKU IP Addresses which are not compatible with Standard SKU Load Balancers as they require Standard SKU IP Addresses. クラスターを移行してロード バランサー SKU をアップグレードするとき、IP アドレス SKU に互換性がある新しい IP アドレスが必須となります。When migrating clusters to upgrade Load Balancer SKUs, a new IP address with a compatible IP Address SKU will be required.

クラスターの移行方法に関して他に注意すべき事項については、移行時の考慮事項に関するドキュメントを参照してください。移行時に考慮すべき重要なトピックが一覧表示されています。For more considerations on how to migrate clusters, visit our documentation on migration considerations to view a list of important topics to consider when migrating. 以下の制限事項も、AKS で Standard SKU ロード バランサーを使用するときに注意すべき、動作上の重要な違いです。The below limitations are also important behavioral differences to note when using Standard SKU Load Balancers in AKS.

制限事項Limitations

Standard SKU を使用するロード バランサーをサポートする AKS クラスターを作成し、管理する場合、次の制限が適用されます。The following limitations apply when you create and manage AKS clusters that support a load balancer with the Standard SKU:

  • AKS クラスターからのエグレス トラフィックを許可するために、パブリック IP または IP プレフィックスが少なくとも 1 つ必要です。At least one public IP or IP prefix is required for allowing egress traffic from the AKS cluster. パブリック IP または IP プレフィックスは、コントロール プレーンとエージェント ノードの間の接続を維持するためと、前のバージョンの AKS との互換性を維持するためにも必要です。The public IP or IP prefix is also required to maintain connectivity between the control plane and agent nodes as well as to maintain compatibility with previous versions of AKS. Standard SKU ロード バランサーでパブリック IP または IP プレフィックスを指定するための次のオプションがあります:You have the following options for specifying public IPs or IP prefixes with a Standard SKU load balancer:
    • 独自のパブリック IP を指定する。Provide your own public IPs.
    • 独自のパブリック IP プレフィックスを指定する。Provide your own public IP prefixes.
    • 最大 100 までの数字を指定し、AKS クラスターとして作成された同じリソース グループでそれだけの数の Standard SKU パブリック IP を作成することを AKS クラスターに許可します。名前は通常、MC_ で始まります。Specify a number up to 100 to allow the AKS cluster to create that many Standard SKU public IPs in the same resource group created as the AKS cluster, which is usually named with MC_ at the beginning. AKS により、パブリック IP が Standard SKU ロード バランサーに割り当てられます。AKS assigns the public IP to the Standard SKU load balancer. 既定では、パブリック IP、パブリック IP プレフィックス、または IP の数が指定されていない場合、同じリソース グループでパブリック IP が 1 つ自動的に作成されます。By default, one public IP will automatically be created in the same resource group as the AKS cluster, if no public IP, public IP prefix, or number of IPs is specified. また、パブリック アドレスを許可する必要があり、IP 作成を禁止する Azure Policy は作成しないようにする必要があります。You also must allow public addresses and avoid creating any Azure Policy that bans IP creation.
  • ロード バランサーに対して Standard SKU を使用する場合、Kubernetes バージョン 1.13 以降を使用する必要があります。When using the Standard SKU for a load balancer, you must use Kubernetes version 1.13 or greater.
  • ロード バランサー SKU は、AKS クラスターの作成時にのみ定義できます。Defining the load balancer SKU can only be done when you create an AKS cluster. AKS クラスターが作成された後にロード バランサー SKU を変更することはできません。You cannot change the load balancer SKU after an AKS cluster has been created.
  • 1 つのクラスターで使用できるロード バランサー SKU (Basic または Standard) の種類は 1 つのみです。You can only use one type of load balancer SKU (Basic or Standard) in a single cluster.
  • Standard SKU ロード バランサーでは、Standard SKU IP アドレスのみがサポートされています。Standard SKU Load Balancers only support Standard SKU IP Addresses.

Standard SKU のロード バランサーを使用するUse the Standard SKU load balancer

AKS クラスターを作成すると、既定では、そのクラスターでサービスを実行するときに、Standard SKU ロード バランサーが使用されます。When you create an AKS cluster, by default, the Standard SKU load balancer is used when you run services in that cluster. たとえば、Azure CLI を使用したクイックスタートでは、Standard SKU ロード バランサーを使用してサンプル アプリケーションをデプロイしています。For example, the quickstart using the Azure CLI deploys a sample application that uses the Standard SKU load balancer.

ロード バランサーを内部として構成するConfigure the load balancer to be internal

また、ロード バランサーを内部にして、パブリック IP を公開しないように構成することもできます。You can also configure the load balancer to be internal and not expose a public IP. ロード バランサーを内部として構成するには、LoadBalancer サービスにアノテーションとして service.beta.kubernetes.io/azure-load-balancer-internal: "true" を追加します。To configure the load balancer as internal, add service.beta.kubernetes.io/azure-load-balancer-internal: "true" as an annotation to the LoadBalancer service. サンプルの yaml マニフェストと内部ロード バランサーの詳細について、こちらで確認できます。You can see an example yaml manifest as well as more details about an internal load balancer here.

管理対象のパブリック IP の数をスケーリングするScale the number of managed public IPs

既定で作成される管理対象の送信パブリック IP と共に Standard SKU ロード バランサーを使用するとき、load-balancer-managed-ip-count パラメーターを使用し、管理対象の送信パブリック IP の数を拡大縮小できます。When using a Standard SKU load balancer with managed outbound public IPs, which are created by default, you can scale the number of managed outbound public IPs using the load-balancer-managed-ip-count parameter.

既存のクラスターを更新するには、次のコマンドを実行します。To update an existing cluster run the following command. このパラメーターをクラスター作成時に設定し、複数の管理対象送信パブリック IP を与えることもできます。This parameter can also be set at cluster create-time to have multiple managed outbound public IPs.

az aks update \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --load-balancer-managed-outbound-ip-count 2

上の例では、myResourceGroupmyAKSCluster クラスターに対して、管理対象の送信パブリック IP の数が 2 に設定されます。The above example sets the number of managed outbound public IPs to 2 for the myAKSCluster cluster in myResourceGroup.

また、load-balancer-managed-ip-count パラメーターを使用して、--load-balancer-managed-outbound-ip-count パラメーターを追加し、それを希望する値に設定するときに、クラスターの作成時に管理対象の送信パブリック IP の初期数を設定することもできます。You can also use the load-balancer-managed-ip-count parameter to set the initial number of managed outbound public IPs when creating your cluster by appending the --load-balancer-managed-outbound-ip-count parameter and setting it to your desired value. 管理対象の送信パブリック IP の既定数は 1 です。The default number of managed outbound public IPs is 1.

エグレスのために独自のパブリック IP またはプレフィックスを指定するProvide your own public IPs or prefixes for egress

Standard SKU ロード バランサーの使用時、AKS クラスターによって、AKS クラスターに対して作成された同じリソース グループでパブリック IP が自動的に作成され、そのパブリック IP が Standard SKU ロード バランサーに割り当てられます。When using a Standard SKU load balancer, the AKS cluster automatically creates a public IP in same resource group created for the AKS cluster and assigns the public IP to the Standard SKU load balancer. あるいは、クラスター作成時に独自のパブリック IP を割り当てたり、既存のクラスターのロード バランサー プロパティを更新したりできます。Alternatively, you can assign your own public IP at cluster creation time or you can update an existing cluster's load balancer properties.

複数の IP アドレスまたはプレフィックスを導入することで、1 つのロード バランサー オブジェクトの背後で IP アドレスを定義するとき、複数のバックアップ サービスを定義できます。By bringing multiple IP addresses or prefixes, you are able to define multiple backing services when defining the IP address behind a single load balancer object. 特定のノードのエグレス エンドポイントは、そのノードが関連付けられているサービスに依存します。The egress endpoint of specific nodes will depend on what service they are associated with.

重要

Standard SKU ロード バランサーと共に、エグレス用の Standard SKU パブリック IP を使用する必要があります。You must use Standard SKU public IPs for egress with your Standard SKU your load balancer. az network public-ip show コマンドを使用することで、パブリック IP の SKU を検証できます。You can verify the SKU of your public IPs using the az network public-ip show command:

az network public-ip show --resource-group myResourceGroup --name myPublicIP --query sku.name -o tsv

az network public-ip show コマンドを使用すると、パブリック IP の ID が一覧表示されます。Use the az network public-ip show command to list the IDs of your public IPs.

az network public-ip show --resource-group myResourceGroup --name myPublicIP --query id -o tsv

上のコマンドでは、myResourceGroup リソース グループの myPublicIP パブリック IP の IP が表示されます。The above command shows the ID for the myPublicIP public IP in the myResourceGroup resource group.

load-balancer-outbound-ips パラメーターを指定して az aks update コマンドを使用すると、パブリック IP でクラスターが更新されます。Use the az aks update command with the load-balancer-outbound-ips parameter to update your cluster with your public IPs.

次の例では、load-balancer-outbound-ips パラメーターと共に前のコマンドからの ID が使用されます。The following example uses the load-balancer-outbound-ips parameter with the IDs from the previous command.

az aks update \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --load-balancer-outbound-ips <publicIpId1>,<publicIpId2>

Standard SKU ロード バランサーと共に、エグレス用のパブリック IP プレフィックスを使用することもできます。You can also use public IP prefixes for egress with your Standard SKU load balancer. 次の例では、az network public-ip prefix show コマンドを使用し、パブリック IP プレフィックスの IP が一覧表示されます。The following example uses the az network public-ip prefix show command to list the IDs of your public IP prefixes:

az network public-ip prefix show --resource-group myResourceGroup --name myPublicIPPrefix --query id -o tsv

上のコマンドでは、myResourceGroup リソース グループの myPublicIPPrefix パブリック IP プレフィックスの IP が表示されます。The above command shows the ID for the myPublicIPPrefix public IP prefix in the myResourceGroup resource group.

次の例では、load-balancer-outbound-ip-prefixes パラメーターと前のコマンドからの ID が使用されています。The following example uses the load-balancer-outbound-ip-prefixes parameter with the IDs from the previous command.

az aks update \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --load-balancer-outbound-ip-prefixes <publicIpPrefixId1>,<publicIpPrefixId2>

重要

パブリック IP と IP プレフィックスは、AKS クラスターと同じリージョンにあり、同じサブスクリプションに含まれている必要があります。The public IPs and IP prefixes must be in the same region and part of the same subscription as your AKS cluster.

クラスター作成時に独自のパブリック IP またはプレフィックスを定義するDefine your own public IP or prefixes at cluster create time

エグレス エンドポイントをホワイトリストに記載するといったシナリオを支援する目的で、クラスター作成時、エグレス用に独自の IP アドレスや IP プレフィックスを導入することがあります。You may wish to bring your own IP addresses or IP prefixes for egress at cluster creation time to support scenarios like whitelisting egress endpoints. クラスター作成手順に上のコードと同じパラメーターを追加し、クラスターのライフサイクルの開始時に独自のパブリック IP と IP プレフィックスを定義します。Append the same parameters shown above to your cluster creation step to define your own public IPs and IP prefixes at the start of a cluster's lifecycle.

load-balancer-outbound-ips パラメーターを指定して az aks create コマンドを使用し、開始時に自分のパブリック IP で新しいクラスターを作成します。Use the az aks create command with the load-balancer-outbound-ips parameter to create a new cluster with your public IPs at the start.

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --vm-set-type VirtualMachineScaleSets \
    --node-count 1 \
    --load-balancer-sku standard \
    --generate-ssh-keys \
    --load-balancer-outbound-ips <publicIpId1>,<publicIpId2>

load-balancer-outbound-ip-prefixes パラメーターを指定して az aks create コマンドを使用し、開始時に自分のパブリック IP プレフィックスで新しいクラスターを作成します。Use the az aks create command with the load-balancer-outbound-ip-prefixes parameter to create a new cluster with your public IP prefixes at the start.

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --vm-set-type VirtualMachineScaleSets \
    --node-count 1 \
    --load-balancer-sku standard \
    --generate-ssh-keys \
    --load-balancer-outbound-ip-prefixes <publicIpPrefixId1>,<publicIpPrefixId2>

ロード バランサーのアウトバウンド規則を表示するShow the outbound rule for your load balancer

ロード バランサーで作成されたアウトバウンド規則を表示するには、az network lb outbound-rule list を使用して、AKS クラスターのノード リソース グループを指定します。To show the outbound rule created in the load balancer, use az network lb outbound-rule list and specify the node resource group of your AKS cluster:

NODE_RG=$(az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv)
az network lb outbound-rule list --resource-group $NODE_RG --lb-name kubernetes -o table

上記のコマンドを実行すると、次の例に示すように、ロード バランサーのアウトバウンド規則が一覧表示されます。The previous commands will list the outbound rule for your load balancer, for example:

AllocatedOutboundPorts    EnableTcpReset    IdleTimeoutInMinutes    Name             Protocol    ProvisioningState    ResourceGroup
------------------------  ----------------  ----------------------  ---------------  ----------  -------------------  -------------
0                         True              30                      aksOutboundRule  All         Succeeded            MC_myResourceGroup_myAKSCluster_eastus  

この出力例では、AllocatedOutboundPorts は 0 です。In the example output, AllocatedOutboundPorts is 0. この AllocatedOutboundPorts の値は、バックエンド プール サイズに基づいて SNAT ポートの割り当てが自動割り当てに戻ることを意味します。The value for AllocatedOutboundPorts means that SNAT port allocation reverts to automatic assignment based on backend pool size. 詳細については、Load Balancer のアウトバウンド規則に関するページと「Azure のアウトバウンド接続」を参照してください。See Load Balancer outbound rules and Outbound connections in Azure for more details.

特定の IP 範囲へのアクセスを制限Restrict access to specific IP ranges

既定では、ロード バランサーの仮想ネットワークに関連付けられているネットワーク セキュリティ グループ (NSG) には、すべての受信外部トラフィックを許可する規則があります。The Network Security Group (NSG) associated with the virtual network for the load balancer, by default, has a rule to allow all inbound external traffic. この規則を更新して、受信トラフィックに特定の IP 範囲のみを許可することができます。You can update this rule to only allow specific IP ranges for inbound traffic. 次のマニフェストでは loadBalancerSourceRanges を使用して、受信外部トラフィックの新しい IP 範囲を指定します。The following manifest uses loadBalancerSourceRanges to specify a new IP range for inbound external traffic:

apiVersion: v1
kind: Service
metadata:
  name: azure-vote-front
spec:
  type: LoadBalancer
  ports:
  - port: 80
  selector:
    app: azure-vote-front
  loadBalancerSourceRanges:
  - MY_EXTERNAL_IP_RANGE

上の例では、MY_EXTERNAL_IP_RANGE 範囲からの外部トラフィックのみを許可するように規則を更新します。The above example updates the rule to only allow inbound external traffic from the MY_EXTERNAL_IP_RANGE range. この方法を使用してロード バランサー サービスへのアクセスを制限する方法の詳細については、Kubernetes のドキュメントを参照してください。More information about using this method to restrict access to the load balancer service is available in the Kubernetes documentation.

次のステップNext steps

Kubernetes サービスのドキュメントで Kubernetes サービスについて学習する。Learn more about Kubernetes services at the Kubernetes services documentation.