Kubernetesクラスタの“Pod間通信”の基本 「3つのService」はなぜ必要か?コンテナネットワークの基礎知識【第8回】

Kubernetesクラスタの動作にはPod間で通信するための仕組みが必要です。「ClusterIP」「NodePort」「LoadBalancer」の3つの「Service」の仕組みをそれぞれ紹介します。

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

 コンテナオーケストレーター「Kubernetes」では複数のコンテナ実行ホストがクラスタ(以下、Kubernetesクラスタ)を構成します。これはコンテナ管理ツール「Docker」の一般的な環境において、コンテナ間通信がコンテナ実行ホスト内で完結することとは異なります。そのためKubernetesの場合、Kubernetesクラスタ内のホストを跨(また)がる「Pod」(Kubernetesクラスタにおけるアプリケーションの実行単位)間で通信する仕組みが必要になります。Kubernetesクラスタの外部からPodに接続するための仕組みも必要です。

Pod間ネットワークを実現するCNI

 KubernetesクラスタでPodが起動すると、Kubernetesは各Podに固有のIPアドレスを付与します。各Podが相互に通信するための仕組みとしてCNI(Container Network Interface)プラグインがあります。CNIプラグインは、コンテナ間の通信を定義するCNI(コンテナネットワークインタフェース)を実装したものです。代表的なものとして「Calico」や「Flannel」の他、SDN(ソフトウェア定義ネットワーク)製品を利用するためのCNIプラグインなどがあります。

  • Calico
    • 経路制御プロトコル「BGP」(Border Gateway Protocol)を用いたL3(レイヤー3)のルーティングを構築する、OSS(オープンソースソフトウェア)のCNIプラグイン
  • Flannel
    • 仮想ネットワーク用のプロトコル「VXLAN」(Virtual eXtensible Local Area Network)を用いたL2(レイヤー2)のオーバレイネットワークを構築する、OSSのCNIプラグイン
  • Cisco ACI CNI Plug-in
    • Cisco SystemsのSDN製品「Cisco ACI」のCNIプラグイン
  • NSX Container Plug-in(NCP)
    • VMwareのSDN製品「VMware NSX-T Data Center」のCNIプラグイン
  • OpenShift SDN
    • Red Hatのコンテナ管理製品群「Red Hat OpenShift」のCNIプラグイン

 Kubernetesのセキュリティ機能「Network Policy」のサポート状況がCNIプラグインによって異なります。例えばCalicoでは、Network PolicyによりPod間通信を細かく制御することができますが、FlannelではNetwork Policyを利用できません。このような違いがあるため、要件に合ったCNIプラグインを選択してKubernetesのコンテナネットワークを構成することになります。

ServiceによるPodの公開

 Podグループ(複数のPod)にアクセスするための「Service」というリソースを利用することで、Podグループに対するアクセスを効率良く管理することが可能です。Serviceには幾つかのタイプが存在します。本稿では「ClusterIP」「NodePort」「LoadBalancer」の3つを取り上げます。

Kubernetesクラスタ内ロードバランサーを提供するClusterIP

 Kubernetesクラスタ内だけで使えるServiceがClusterIPです。これを構成することで、単一のPodからPodグループ宛ての通信をロードバランシング(負荷分散)することが可能になります。ClusterIPのIPアドレスは、Podグループに対して、ロードバランサーのVIP(Virtual IP)のような働きをするIPアドレスになります。VIPとは、各アクセス対象が持つIPアドレスとは別の仮想的なIPアドレスであり、ClusterIPにおいては、このVIPにアクセスするとVIPの背後にあるPodにアクセスすることが可能になります。

画像 図1 PodネットワークとClusterIP《クリックで拡大》

 ClusterIPはKubernetesクラスタ内でのみ利用する負荷分散機能です。Kubernetesクラスタ外部からの接続にはNodePortとLoadBalancerというタイプのService(後述)を利用することが可能です。

ノードIPアドレスを利用してPodを公開するNodePort

会員登録(無料)が必要です

 NodePortはKubernetesクラスタを構成する「ノード」のIPアドレスにPodグループを公開するためのポート番号を割り当てて、クラスタの外部からアクセスを可能にするServiceです。NodePortはPodグループ向けのServiceにポート番号を割り当てます。Podグループに対しては、ノードのIPアドレスと割り当てられたポート番号を組み合わせてアクセスします。ポート番号の範囲はデフォルトでは30000~32767となり、アクセスしたいPodグループごとに異なるポート番号が割り当てられます。

 PodグループをKubernetesクラスタ内で起動する場合、各Podはクラスタ内のいずれかのノードで起動します。Kubernetesクラスタ外からこれらのPodにアクセスする際の宛先ノードのIPアドレスは、Podを実行しているノードのIPアドレスである必要はありません。もしアクセス先のノードにアクセスしたいPodグループのPodが存在しなくても、NodePortはそのPodが存在しているノードに転送します。Podグループの各Podが複数のノードに存在している場合でも、PodごとにノードのIPアドレスを変える必要はなく、1つのノードのIPアドレスで、Podグループの各Podにアクセスすることが可能です。設定により、指定したノードのIPアドレスのPodだけに負荷分散を許可することも可能です。

 NodePortの次の問題には注意が必要です。

  • アクセス先として指定したノードがダウンしていた場合、Podグループにアクセスできなくなる
  • 通常KubernetesクラスタのノードのIPアドレスは外部に公開しないが、ノードIPアドレスを外部に公開する必要があることから、利用が難しい場合もある

 これらの問題を解決するためには、これから紹介するServiceのLoadBalancerや、「Ingress」というリソースを使う必要があります。

画像 図2 NodePortの仕組み《クリックで拡大》

外部のロードバランサーと連携してPodを外部向けに公開するLoadBalancer

 ServiceのタイプとしてLoadBalancerを指定することで、Kubernetesクラスタ外部に公開するIPアドレスをパブリックなものにすることが可能になります。NodePortの場合はPodグループに対してアクセスする際にポート番号を使用しますが、LoadBalancerの場合はポート番号を意識する必要がありません。

 LoadBalancerを使用する場合、Kubernetesクラスタ内でNodePortを利用する構成が一般的です。Kubernetesクラスタ外部のロードバランサーは、図3のようにNodePortに負荷分散します。

 実際にオンプレミスインフラでKubernetesクラスタ外部のロードバランサーを構築する場合はハードウェア型のロードバランサーや、「MetalLB」といったソフトウェア型のロードバランサーが用いられます。MetalLBはGoogleが開発したオンプレミスでも使えるソフトウェア型のロードバランサーです。BGPモードとL2モードがあり、モードごとに動作が変わります。BGPモードではKubernetesクラスタ外部のルーターとBGPにより連携して、各ノードに負荷分散してパケットを転送します。L2モードはシンプルにノード間で代表を決定し、代表ノードがリクエストを処理する動作になります。

画像 図3 LoadBalancerの仕組み《クリックで拡大》

レイヤー7の負荷分散によりPodへのアクセスを提供するIngress

 IngressはServiceと同じように、Kubernetesのリソースの一つです。ここまで紹介してきたServiceはL4(レイヤー4)のロードバランシングを提供しますが、IngressはHTTP/HTTPS通信に対するL7(レイヤー7)のロードバランシングを提供します。オンプレミスインフラでは「NGINX Ingress Controller」を用いて構築する方法があります。NGINX Ingress ControllerはWebサーバやプロキシサーバとして開発されているオープンソースのNGINXを、Kubernetesクラスタと連携して利用するためのソフトウェアです。

 同じFQDN(完全修飾ドメイン名:ドメイン名やホスト名を省略しない名称)に対するアクセスであっても、Ingressは「http://AAA.co.jp/red」と「http://AAA.co.jp/blue」のようにパスごとに異なるPodグループにアクセスさせることが可能です。図4のように「/red」用の「Service red」と「/blue」用の「Service blue」を定義することで、アクセス先のパスに応じて異なるServiceに負荷分散することが可能です。

画像 図4 IngressとService《クリックで拡大》

 パブリッククラウドのKubernetesサービスでは、IngressやLoadBalancerとしてクラウドサービスのロードバランサーサービスを利用することができます。そうした仕組みをオンプレミスで構築するのは簡単ではありません。ただし第7回で紹介したオンプレミスインフラ向けKubernetes製品や、次回紹介するSDN製品のCNIを使うことで、オンプレミスインフラにおいてもパブリッククラウドのようにKubernetesのネットワークを構築することが可能になります。


 次回は、Cisco ACIとVMware NSX-Tを使ったKubernetesのネットワークを紹介します。Cisco ACIとVMware NSX-Tを使って、仮想マシンとコンテナを接続する方法も説明します。

執筆者紹介

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

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

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

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

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

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


Copyright © ITmedia, Inc. All Rights Reserved.

新着ホワイトペーパー

製品資料 日本ヒューレット・パッカード合同会社

ネットワークの複雑性の課題をどう解消する? 鍵は可視性と制御性

今日の企業における複雑化したITシステム環境においては、ビジネスの安全性や効率性が損なわれている。そこで求められるのがクラウドを活用したインテリジェントな自動化だが、これを実現するには、ネットワークの可視性と制御性が必要だ。

製品資料 日本ヒューレット・パッカード合同会社

複雑化したネットワークシステム、クラウド並みのアジリティを確保するには?

顧客や従業員のエクスペリエンスを向上させるとともに、インベーションを促進するには「アジリティ」の強化が鍵となる。しかし昨今、組織のネットワークは複雑化が著しく、アジリティの確保すら難しい。そこで求められるのが「簡素化」だ。

市場調査・トレンド 日本ヒューレット・パッカード合同会社

管理負担もリスクも軽減、自動化&統合で変わるデータセンターネットワークの姿

クラウド移行の加速やIoTの普及により、日々、データセンターのネットワーク環境に接続するエンドポイントが増加している。しかし、レガシーアーキテクチャでは、このような状況に対応できず、セキュリティリスクが生じている状況だ。

製品資料 日本ヒューレット・パッカード合同会社

分散/多様化する職場環境、ネットワークのモダナイゼーションは何から始める?

既存のネットワークが今日の職場環境の急進的な変化に対応できず、パフォーマンスやセキュリティの質の低下を招いているケースが散見される。ネットワークのモダナイゼーションで、こうした状況から脱却するための2つのステップとは何か。

製品資料 ゾーホージャパン株式会社

帯域の逼迫が問題となる企業LAN、最適なトラフィックの測定方法とは

企業ネットワークの安定運用には、増加するLANトラフィックの正確な把握と迅速な原因特定が重要となる。しかし、従来の手法では効果的な管理が困難であった。本資料では、可視化・分析・監視を強化する帯域可視化ツールを紹介する。

From Informa TechTarget

いまさら聞けない「仮想デスクトップ」と「VDI」の違いとは

いまさら聞けない「仮想デスクトップ」と「VDI」の違いとは
遠隔のクライアント端末から、サーバにあるデスクトップ環境を利用できる仕組みである仮想デスクトップ(仮想PC画面)は便利だが、仕組みが複雑だ。仮想デスクトップの仕組みを基礎から確認しよう。

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

news023.png

「パーソナライゼーション」&「A/Bテスト」ツール売れ筋TOP5(2025年5月)
今週は、パーソナライゼーション製品と「A/Bテスト」ツールの国内売れ筋各TOP5を紹介し...

news025.png

「マーケティングオートメーション」 国内売れ筋TOP10(2025年5月)
今週は、マーケティングオートメーション(MA)ツールの売れ筋TOP10を紹介します。

news014.png

「サイト内検索」&「ライブチャット」売れ筋TOP5(2025年4月)
今週は、サイト内検索ツールとライブチャットの国内売れ筋TOP5をそれぞれ紹介します。