コンテナーで Azure Virtual Network の機能を使用できるようにするEnable containers to use Azure Virtual Network capabilities

仮想マシンと同ソフトウェア定義ネットワーク スタックを利用することにより、Azure ネットワークの豊富な機能をコンテナーで使用できます。Bring the rich set of Azure network capabilities to containers, by utilizing the same software defined networking stack that powers virtual machines. Azure Virtual Network コンテナー ネットワーク インターフェイス (CNI) プラグインは、Azure 仮想マシンにインストールされます。The Azure Virtual Network container network interface (CNI) plug-in installs in an Azure Virtual Machine. そのプラグインは仮想マシンで起動されたコンテナーに仮想ネットワークからの IP アドレスを割り当て、それを仮想ネットワークにアタッチして、他のコンテナーと仮想ネットワーク リソースに直接接続します。The plug-in assigns IP addresses from a virtual network to containers brought up in the virtual machine, attaching them to the virtual network, and connecting them directly to other containers and virtual network resources. プラグインは接続のためにオーバーレイ ネットワークまたはルートに頼らず、仮想マシンと同等のパフォーマンスを提供します。The plug-in doesn’t rely on overlay networks, or routes, for connectivity, and provides the same performance as virtual machines. 大まかに言えば、プラグインは次の機能を提供します。At a high level, the plug-in provides the following capabilities:

  • 1 つまたは複数のコンテナーで構成できるすべてのポッドに、仮想ネットワークの IP アドレスが割り当てられます。A virtual network IP address is assigned to every Pod, which could consist of one or more containers.
  • ポッドは、ExpressRoute またはサイト間 VPN 経由でピアリングされた仮想ネットワークおよびオンプレミスに接続できます。Pods can connect to peered virtual networks and to on-premises over ExpressRoute or a site-to-site VPN. ポッドには、ピアリングされたネットワークおよびオンプレミスのネットワークからも到達可能です。Pods are also reachable from peered and on-premises networks.
  • ポッドは、仮想ネットワーク サービス エンドポイントによって保護されている Azure Storage や Azure SQL Database などのサービスにアクセスできます。Pods can access services such as Azure Storage and Azure SQL Database, that are protected by virtual network service endpoints.
  • ネットワーク セキュリティ グループとルートを、ポッドに直接適用できます。Network security groups and routes can be applied directly to Pods.
  • 仮想マシンと同様に、Azure 内部またはパブリック ロード バランサーの後方にポッドを配置できます。Pods can be placed directly behind an Azure internal or public Load Balancer, just like virtual machines
  • ポッドにはパブリック IP アドレスを割り当てることができ、インターネットから直接アクセスできます。Pods can be assigned a public IP address, which makes them directly accessible from the internet. ポッド自体もインターネットにアクセスできます。Pods can also access the internet themselves.
  • サービス、イングレス コントローラー、Kube DNS など、Kubernetes リソースとシームレスに連携します。Works seamlessly with Kubernetes resources such as Services, Ingress controllers, and Kube DNS. Azure Load Balancer を使用して、Kubernetes サービスを外部または内部に公開できます。A Kubernetes Service can also be exposed internally or externally through the Azure Load Balancer.

次の図では、プラグインが Azure 仮想ネットワークの機能をポッドに提供する方法を示します。The following picture shows how the plug-in provides Azure Virtual Network capabilities to Pods:

コンテナー ネットワークの概要

プラグインは、Linux プラットフォームと Windows プラットフォームの両方をサポートします。The plug-in supports both Linux and Windows platforms.

ポッドを仮想ネットワークに接続Connecting Pods to a virtual network

ポッドは仮想ネットワークの一部である仮想マシンで起動されます。Pods are brought up in a virtual machine that is part of a virtual network. ポッド用の IP アドレスのプールは、仮想マシンのネットワーク インターフェイス上のセカンダリ アドレスとして構成されます。A pool of IP addresses for the Pods is configured as secondary addresses on a virtual machine's network interface. Azure CNI は、ポッドの基本的なネットワーク接続を設定し、プール内の IP アドレスの使用を管理します。Azure CNI sets up the basic Network connectivity for Pods and manages the utilization of the IP addresses in the pool. ポッドが仮想マシンで起動すると、Azure CNI はプールから使用可能な IP アドレスを割り当て、ポッドを仮想マシン内のソフトウェア ブリッジに接続します。When a Pod comes up in the virtual machine, Azure CNI assigns an available IP address from the pool and connects the Pod to a software bridge in the virtual machine. ポッドが終了すると、IP アドレスはプールに戻されます。When the Pod terminates, the IP address is added back to the pool. 次の図では、ポッドが仮想ネットワークに接続するしくみを示します。The following picture shows how Pods connect to a virtual network:

コンテナー ネットワークの詳細

インターネットへのアクセスInternet access

ポッドがインターネットにアクセスできるようにするため、プラグインはポッドからのインターネット バインド トラフィックをネットワーク アドレス変換 (NAT) するための iptables を構成します。To enable Pods to access the internet, the plug-in configures iptables rules to network address translate (NAT) the internet bound traffic from Pods. パケットの送信元 IP アドレスは、仮想マシンのネットワーク インターフェイスのプライマリ IP アドレスに変換されます。The source IP address of the packet is translated to the primary IP address on the virtual machine's network interface. Windows 仮想マシンは、仮想マシンが属するサブネットの外部の IP アドレスに宛てられたトラフィックの source NAT (SNAT) を自動的に行います。Windows virtual machines automatically source NAT (SNAT) traffic destined to IP addresses outside the subnet the virtual machine is in. 通常、仮想ネットワークの IP 範囲外の IP アドレスに送信されるすべてのトラフィックが変換されます。Typically, all traffic destined to an IP address outside of the IP range of the virtual network is translated.

制限Limits

プラグインは、仮想マシンごとに最大 250 個のポッド、1 つの仮想ネットワーク内で最大 16,000 個のポッドをサポートします。The plug-in supports up to 250 Pods per virtual machine and up to 16,000 Pods in a virtual network. これらの制限は、Azure Kubernetes Service の場合と異なります。These limits are different for the Azure Kubernetes Service.

プラグインの使用Using the plug-in

プラグインを次の方法で使用して、ポッドまたは Docker コンテナーに基本的な仮想ネットワーク接続を提供できます。The plug-in can be used in the following ways, to provide basic virtual network attach for Pods or Docker containers:

  • Azure Kubernetes Service:プラグインは Azure Kubernetes Service (AKS) に統合されており、[Advanced Networking](高度ネットワーク) オプションを選択することで使用できます。Azure Kubernetes Service: The plug-in is integrated into the Azure Kubernetes Service (AKS), and can be used by choosing the Advanced Networking option. 高度ネットワークを使用すると、既存または新規の仮想ネットワークに Kubernetes クラスターを展開できます。Advanced Networking lets you deploy a Kubernetes cluster in an existing, or a new, virtual network. 高度ネットワークの詳細とその設定手順については、Azure Kubernetes Service (AKS) のネットワーク構成に関するページをご覧ください。To learn more about Advanced Networking and the steps to set it up, see Network configuration in AKS.
  • AKS エンジン:AKS エンジンは、Azure での Kubernetes クラスター デプロイ用 Azure Resource Manager テンプレートを生成するツールです。AKS-Engine: AKS-Engine is a tool that generates an Azure Resource Manager template for the deployment of a Kubernetes cluster in Azure. 詳しくは、AKS エンジン Kubernetes クラスター用プラグインのデプロイに関する記事をご覧ください。For detailed instructions, see Deploy the plug-in for AKS-Engine Kubernetes clusters.
  • Azure で独自の Kubernetes クラスターを作成する:プラグインを使用すると、AKS や、AKS エンジンなどのツールに頼ることなく、ご自身でデプロイした Kubernetes クラスター内のポッドに対する基本ネットワークを提供できます。Creating your own Kubernetes cluster in Azure: The plug-in can be used to provide basic networking for Pods in Kubernetes clusters that you deploy yourself, without relying on AKS, or tools like the AKS-Engine. この場合、プラグインはクラスター内のすべての仮想マシンにインストールされて有効にされます。In this case, the plug-in is installed and enabled on every virtual machine in a cluster. 詳細については、自身でデプロイした Kubernetes クラスター用プラグインのデプロイに関するページをご覧ください。For detailed instructions, see Deploy the plug-in for a Kubernetes cluster that you deploy yourself.
  • Azure 内の Docker コンテナーに対する仮想ネットワークのアタッチ:Kubernetes クラスターを作成したくなく、仮想マシン内に Docker コンテナーと仮想ネットワーク アタッチを作成したい場合は、プラグインを使用できます。Virtual network attach for Docker containers in Azure: The plug-in can be used in cases where you don’t want to create a Kubernetes cluster, and would like to create Docker containers with virtual network attach, in virtual machines. 詳しくは、「Docker コンテナー用プラグインのデプロイ」をご覧ください。For detailed instructions, see Deploy the plug-in for Docker.

次の手順Next steps

Kubernetes クラスターまたは Docker コンテナー用のプラグインをデプロイしますDeploy the plug-in for Kubernetes clusters or Docker containers