「AWS」「Azure」「GCP」などのクラウドサービスは、「Kubernetes」のコンテナ間通信を実現する独自のサービスを提供しています。それぞれのネットワークを用意する際に知っておくべきポイントを紹介します。
第9回「『Kubernetes』を使うなら、まず知っておきたい『Flannel』と『Calico』の通信」は、「Pod」(コンテナの集合体)同士の通信を実現する仕組みとして、オープンソースのCNI(Container Networking Interface)プラグインを紹介しました。コンテナオーケストレーター「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と通信する仕組みにより、パケットをカプセル化(プロトコル用のヘッダ情報の付与)することなくインスタンスやデータベースなどの仮想ネットワーク内の機能を利用でき、通信が効率的になります。
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の機能)を利用することも可能です。
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のうちどちらかを選択することができます。
GCPのKubernetesサービス「Google Kubernetes Engine」(GKE)も、Kubernetesクラスタ構成時のネットワークとしてVPCの機能を利用することが可能です。GKEで「VPCネイティブクラスタ」を作成すると、VPC内のサブネットをPodのネットワークとして利用することが可能になります。PodのIPアドレスはノードのエイリアスIPアドレス(1つのネットワークインタフェースに割り当てる複数のIPアドレス)となり、Pod間通信をVPCによってルーティングすることが可能になります(図1)。
VPCネイティブクラスタは、コンテナ単位で負荷分散するロードバランサー機能を利用することができます。第8回「Kubernetesクラスタの“Pod間通信”の基本 『3つのService』はなぜ必要か?」で紹介した「Ingress」というリソースは通常、着信したパケットを各ノードに負荷分散し、ノード内でさらにPodに対して負荷分散します。一方、コンテナ単位で負荷分散するロードバランサーを利用してIngressを構成すると、Ingressに着信したパケットを負荷分散対象のPodに直接負荷分散することが可能になり、効率良く通信を処理できます。
次回はオンプレミスインフラ向けのSDN(ソフトウェア定義ネットワーク)製品によるCNIプラグインを紹介します。
通信事業者のデータセンターにおいてネットワークやサーバの運用を経験後、ネットワンシステムズに入社。帯域制御やWAN高速化製品、仮想化関連製品を担当後、主にクラウドや仮想インフラの管理、自動化、ネットワーク仮想化の分野に注力している。
データセンターネットワークの他、マルチクラウド向けのハードウェアやソフトウェアの最先端技術に関する調査・検証、技術支援などを担当。注目分野は「Kubernetes」。放送システムのIP化に向けた技術調査・検証も担当している。
IaaS(Infrastructure as a Service)をはじめとしたクラウド基盤技術および管理製品を担当。コンテナ技術を中心とした開発・解析基盤の構築から運用、コンテナに関連した自動化技術や監視製品の技術検証などに注力している。
Copyright © ITmedia, Inc. All Rights Reserved.
ハロウィーンの口コミ数はエイプリルフールやバレンタインを超える マーケ視点で押さえておくべきことは?
ホットリンクは、SNSの投稿データから、ハロウィーンに関する口コミを調査した。
なぜ料理の失敗写真がパッケージに? クノールが展開する「ジレニアル世代」向けキャンペーンの真意
調味料ブランドのKnorr(クノール)は季節限定のホリデーマーケティングキャンペーン「#E...
業界トップランナーが語る「イベントDX」 リアルもオンラインも、もっと変われる
コロナ禍を経て、イベントの在り方は大きく変わった。データを駆使してイベントの体験価...