次の方法で共有


Azure Kubernetes Service (AKS) で Azure CNI ネットワークの概要

既定では、AKS クラスターでは kubenet を使って、仮想ネットワークとサブネットが作成されます。 kubenet を使用すると、ノードでは仮想ネットワーク サブネットから IP アドレスが取得されます。 その後、ノードにネットワーク アドレス変換 (NAT) が構成されて、ポッドはノードの IP の背後に "隠ぺいされた" IP アドレスを受け取ります。 この方法では、ポッド用にネットワーク空間で予約する必要がある IP アドレスの数が減ります。

Azure Container Networking Interface (CNI) では、すべてのポッドにサブネットから IP アドレスが割り当てられ、すべてのポッドに直接アクセスできます。 AKS クラスターと同じ仮想ネットワーク内のシステムでは、ポッドの IP が、ポッドからのすべてのトラフィックの発信元アドレスとして認識されます。 AKS クラスター仮想ネットワークの外部にあるシステムでは、ノードの IP が、ポッドからのすべてのトラフィックの発信元アドレスとして認識されます。 これらの IP アドレスは、ネットワーク空間全体で一意である必要があり、事前に計画する必要があります。 各ノードには、サポートされるポッドの最大数に対する構成パラメーターがあります。 ノードごとにそれと同じ数の IP アドレスが、そのノードに対して事前に予約されます。 この方法では詳細な計画が必要であり、多くの場合、IP アドレスが不足するか、アプリケーション需要の拡大に伴い、より大きなサブネットでのクラスターの再構築が必要になります。

Note

この記事では、従来の Azure CNI のみを紹介しています。 Azure CNI オーバーレイ動的 IP 割り当て用 Azure CNI VNetAzure CNI VNet - 静的ブロック割り当て (プレビュー)。 代わりにそのドキュメントをご覧ください。

前提条件

  • AKS クラスターの仮想ネットワークでは、送信インターネット接続を許可する必要があります。

  • AKS クラスターでは、Kubernetes サービスのアドレス範囲、ポッド アドレス範囲、またはクラスターの仮想ネットワーク アドレス範囲に 169.254.0.0/16172.30.0.0/16172.31.0.0/16192.0.2.0/24 を使用することはできません。

  • AKS クラスターで使用されるクラスター ID には、少なくとも、ご利用の仮想ネットワーク内のサブネットに対するネットワーク共同作成者のクセス許可が必要です。 組み込みのネットワークの共同作成者ロールを使用する代わりに、カスタム ロールを定義する場合は、次のアクセス許可が必要です。

    • Microsoft.Network/virtualNetworks/subnets/join/action

    • Microsoft.Network/virtualNetworks/subnets/read

    • Microsoft.Authorization/roleAssignments/write

  • AKS ノード プールに割り当てられたサブネットを委任されたサブネットにすることはできません。

  • AKS では Network Security Groups (NSG) がそのサブネットに適用されず、そのサブネットに関連付けられている NSG が変更されることもありません。 独自のサブネットを指定し、そのサブネットに関連付けられている NSG を追加する場合は、NSG のセキュリティ規則で、ノードの CIDR 範囲内のトラフィックが許可されていることを確認する必要があります。 詳細については、「ネットワーク セキュリティ グループ」を参照してください。

展開のパラメーター

AKS クラスターを作成するときに、Azure CNI ネットワーク用に以下のパラメーターを構成できます。

仮想ネットワーク:Kubernetes クラスターをデプロイする仮想ネットワーク。 クラスターに新しい仮想ネットワークを作成する場合は、 [新規作成] を選択し、 [仮想ネットワークの作成] セクションの手順に従います。 既存の仮想ネットワークを選択する場合は、その場所と Azure サブスクリプションが Kubernetes クラスターと同じであることを確認します。 Azure 仮想ネットワークの制限とクォータについては、「Azure サブスクリプションとサービスの制限、クォータ、制約」を参照してください。

サブネット:クラスターをデプロイする仮想ネットワーク内のサブネット。 クラスターの仮想ネットワークに新しいサブネットを作成する場合は、 [新規作成] を選択し、 [サブネットの作成] セクションの手順に従います。 ハイブリッド接続する場合、ご使用の環境のその他の仮想ネットワークのアドレス範囲と重複しないようにする必要があります。

Azure ネットワーク プラグイン: Azure ネットワーク プラグインが使用されている場合、"externalTrafficPolicy=Local" が指定されている内部 LoadBalancer サービスには、AKS クラスターに属さない clusterCIDR の IP を持つ VM からアクセスすることはできません。

Kubernetes サービスのアドレス範囲: このパラメーターは、Kubernetes によってクラスターの内部サービスに割り当てられる仮想 IP のセットです。 クラスターの作成後は、この範囲を更新することはできません。 次の要件を満たす任意のプライベート アドレス範囲を使用できます。

  • クラスターの仮想ネットワークの IP アドレス範囲に含まれていてはなりません
  • クラスターの仮想ネットワークがピアリングする他の仮想ネットワークと重複していてはなりません
  • オンプレミスのどの IP アドレスとも重複していてはなりません
  • 169.254.0.0/16172.30.0.0/16172.31.0.0/16、または 192.0.2.0/24 の範囲内にあってはなりません

技術的には、クラスターと同じ仮想ネットワーク内のサービス アドレス範囲を指定できますが、お勧めはしません。 重複する IP アドレス範囲を使うと、予期しない動作になる可能性があります。 詳細については、この記事の FAQ のセクションを参照してください。 Kubernetes サービスについて詳しくは、Kubernetes ドキュメントの「Services」(サービス) をご覧ください。

[Kubernetes DNS service IP address](Kubernetes DNS サービスの IP アドレス): クラスターの DNS サービスの IP アドレス。 [Kubernetes service address range](Kubernetes サービス アドレスの範囲) 内に含まれるアドレスを指定する必要があります。 アドレス範囲内の最初の IP アドレスは使用しないでください。 サブネット範囲の最初のアドレスは、kubernetes.default.svc.cluster.local アドレスに使用されます。

よく寄せられる質問

  • クラスター サブネットに VM を展開できますか。

    はい。 ただし、動的 IP 割り当てのための Azure CNI については、ポッドのサブネットには VM をデプロイできません。

  • Azure CNI 対応ポッドで発生したトラフィックに対して、外部システムではどのソース IP が認識されますか。

    AKS クラスターと同じ仮想ネットワーク内のシステムでは、ポッドの IP が、ポッドからのすべてのトラフィックの発信元アドレスとして認識されます。 AKS クラスター仮想ネットワークの外部にあるシステムでは、ノードの IP が、ポッドからのすべてのトラフィックの発信元アドレスとして認識されます。

    ただし、動的 IP 割り当てのための Azure CNI については、接続が同じ仮想ネットワーク内にあっても、仮想ネットワークを超えても関係なく、ポッドの IP は常に、ポッドからのトラフィックのソース アドレスになります。 これは、動的 IP 割り当てのための Azure CNI では、Microsoft Azure Container Networking インフラストラクチャが実装され、このインフラストラクチャからはエンドツーエンド エクスペリエンスが与えられるためです。 そのため、従来の Azure CNI でまだ使用されている ip-masq-agent を使用する必要がなくなります。

  • ポッドごとのネットワーク ポリシーを構成できますか。

    はい、Kubernetes ネットワーク ポリシーは AKS で使用できます。 開始するには、AKS でネットワーク ポリシーを使用してポッド間のトラフィックをセキュリティで保護する方法に関する記事を参照してください。

  • ノードに展開できるポッドの最大数は構成できますか。

    はい。Azure CLI または Resource Manager テンプレートを使用してクラスターをデプロイするときに構成することができます。 「ノードごとの最大ポッド数」を参照してください。

    既存のクラスターでノードごとのポッドの最大数を変更することはできません。

  • AKS クラスターの作成時に作成したサブネットの追加のプロパティを構成するにはどうすればよいですか。 たとえば、サービス エンドポイントなどのプロパティです。

    AKS クラスターの作成中時に作成する仮想ネットワークとサブネットのプロパティの詳細な一覧は、Azure portal の標準の仮想ネットワーク構成ページで構成できます。

  • "Kubernetes サービスのアドレス範囲" のクラスター仮想ネットワーク内で別のサブネットを使用できますか。

    お勧めはしませんが、この構成は可能です。 サービスのアドレス範囲は、Kubernetes によってクラスターの内部サービスに割り当てられる仮想 IP (VIP) のセットです。 Azure のネットワークには、Kubernetes クラスターのサービスの IP 範囲の可視性がありません。 クラスターのサービス アドレス範囲を可視化できないと、問題が発生する可能性があります。 後でクラスターの仮想ネットワークにサービスのアドレス範囲と重複する新しいサブネットが作成される可能性があります。 このような重複が発生した場合、Kubernetes は、サブネット内の他のリソースによって既に使用されている IP をサービスに割り当てる可能性があり、予期しない動作やエラーの原因となります。 クラスターの仮想ネットワークの外部のアドレス範囲を使用することで、この重複のリスクを回避できます。

次のステップ

AKS のネットワークの詳細については、次の記事を参照してください。