「EKS」「AKS」「GKE」のコンテナ理解に役立つVPCやVNetの通信とは?コンテナネットワークの基礎知識【第10回】

「AWS」「Azure」「GCP」などのクラウドサービスは、「Kubernetes」のコンテナ間通信を実現する独自のサービスを提供しています。それぞれのネットワークを用意する際に知っておくべきポイントを紹介します。

2021年12月17日 05時00分 公開
[奈良昌紀, 細谷典弘, 千葉 豪ネットワンシステムズ]

 第9回「『Kubernetes』を使うなら、まず知っておきたい『Flannel』と『Calico』の通信」は、「Pod」(コンテナの集合体)同士の通信を実現する仕組みとして、オープンソースのCNI(Container Networking Interface)プラグインを紹介しました。コンテナオーケストレーター「Kubernetes」はクラウドサービスで利用することも一般的になっています。今回はクラウドサービスにおけるKubernetesのネットワークの仕組みを紹介します。

クラウドサービスのKubernetesネットワーク

 「Microsoft Azure」(以下、Azure)や「Amazon Web Services」(以下、AWS)、「Google Cloud Platform」(以下、GCP)などのクラウドサービスには、それぞれ独自のKubernetesサービスがあります。いずれもKubernetesクラスタを管理するコントロールプレーン(マスター)をサービスとして提供しています。利用者はこのコントロールプレーンに対してコンピュートサービスとして提供される仮想マシン(インスタンス)を「ノード」として登録し、Kubernetesクラスタとして利用できます。

 いずれのKubernetesサービスもコントロールプレーンはリージョン(データセンターが位置する地域)内の複数のアベイラビリティゾーン(または可用性ゾーン、ゾーン)で冗長化しており、ノードも複数のアベイラビリティゾーンに分散して配置することで可用性を高めることが可能です。AWSとGCPの場合はVPC(Virtual Private Cloud)、Azureの場合はVNet(Virtual Network)といった仮想ネットワーク機能と、Kubernetesサービスを連携させることができます。仮想ネットワーク内に存在する仮想マシンが直接Podと通信する仕組みにより、パケットをカプセル化(プロトコル用のヘッダ情報の付与)することなくインスタンスやデータベースなどの仮想ネットワーク内の機能を利用でき、通信が効率的になります。

Amazon EKSのCNI

 AWSのKubernetesサービス「Amazon Elastic Kubernetes Service」(Amazon EKS)は、VPCのKubernetes向けのネットワークインタフェースとなる「Amazon VPC CNI」をデフォルトで提供しています。Amazon EKSはノードに複数の「ENI」(Elastic Network Interface、VPCのネットワークインタフェース)を構成し、VPC内に作成するサブネット(ネットワークを小分けにした単位)からPodのIPアドレスを割り当てます。PodのIPアドレスはENIに対するセカンダリIPアドレス(同一ネットワークインタフェースに対する別のIPアドレス)となり、VPC内でPodのIPアドレスとして機能してパケットの転送を可能にします。Amazon EKSはCalicoをポリシーエンジンとして有効化することにより、Network Policy(Pod間通信を制御するKubernetesの機能)を利用することも可能です。

AKSのCNI

 AzureのKubernetesサービス「Azure Kubernetes Service」(AKS)は、Kubernetesクラスタ作成時にネットワークとして「kubenet」と「Azure CNI」のいずれかを選択することが可能です。Azure CNIはVNet内のサブネットアドレス(サブネットのIPアドレスの範囲)からPod向けのIPアドレスを割り当て、VNet内でパケットをカプセル化することなく転送することが可能です。Amazon EKSと同じように、各ノードにPodのIPアドレスをセカンダリIPアドレスとして割り当て、VNetによるルーティングを可能にします。AKSでNetwork Policyを利用する場合は、CalicoとAzure CNIのうちどちらかを選択することができます。

GKEのCNI

 GCPのKubernetesサービス「Google Kubernetes Engine」(GKE)も、Kubernetesクラスタ構成時のネットワークとしてVPCの機能を利用することが可能です。GKEで「VPCネイティブクラスタ」を作成すると、VPC内のサブネットをPodのネットワークとして利用することが可能になります。PodのIPアドレスはノードのエイリアスIPアドレス(1つのネットワークインタフェースに割り当てる複数のIPアドレス)となり、Pod間通信をVPCによってルーティングすることが可能になります(図1)。

画像 図1 GKEにおけるVPCのKubernetesネットワーク(「eth0」はネットワークインタフェース。「veth」は仮想ネットワークインタフェース。「cbr0」はブリッジのインタフェース)《クリックで拡大》

 VPCネイティブクラスタは、コンテナ単位で負荷分散するロードバランサー機能を利用することができます。第8回「Kubernetesクラスタの“Pod間通信”の基本 『3つのService』はなぜ必要か?」で紹介した「Ingress」というリソースは通常、着信したパケットを各ノードに負荷分散し、ノード内でさらにPodに対して負荷分散します。一方、コンテナ単位で負荷分散するロードバランサーを利用してIngressを構成すると、Ingressに着信したパケットを負荷分散対象のPodに直接負荷分散することが可能になり、効率良く通信を処理できます。


 次回はオンプレミスインフラ向けのSDN(ソフトウェア定義ネットワーク)製品によるCNIプラグインを紹介します。

執筆者紹介

奈良昌紀(なら・まさのり) ネットワンシステムズ ビジネス開発本部第1応用技術部

通信事業者のデータセンターにおいてネットワークやサーバの運用を経験後、ネットワンシステムズに入社。帯域制御やWAN高速化製品、仮想化関連製品を担当後、主にクラウドや仮想インフラの管理、自動化、ネットワーク仮想化の分野に注力している。

細谷典弘(ほそや・のりひろ) ネットワンシステムズ ビジネス開発本部第3応用技術部

データセンターネットワークの他、マルチクラウド向けのハードウェアやソフトウェアの最先端技術に関する調査・検証、技術支援などを担当。注目分野は「Kubernetes」。放送システムのIP化に向けた技術調査・検証も担当している。

千葉 豪(ちば・ごう) ネットワンシステムズ ビジネス開発本部第1応用技術部

IaaS(Infrastructure as a Service)をはじめとしたクラウド基盤技術および管理製品を担当。コンテナ技術を中心とした開発・解析基盤の構築から運用、コンテナに関連した自動化技術や監視製品の技術検証などに注力している。


ITmedia マーケティング新着記事

news193.jpg

IASがブランドセーフティーの計測を拡張 誤報に関するレポートを追加
IASは、ブランドセーフティーと適合性の計測ソリューションを拡張し、誤報とともに広告が...

news047.png

【Googleが公式見解を発表】中古ドメインを絶対に使ってはいけない理由とは?
Googleが中古ドメインの不正利用を禁止を公式に発表しました。その理由や今後の対応につ...

news115.jpg

「TikTok禁止法案」に米大統領が署名 気になるこれからにまつわる5つの疑問
米連邦上院が、安全保障上の理由からTikTokの米国事業の売却を要求する法案を可決し、バ...