IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

クラウド時代のオープンソース実践活用

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第65回 Flannelが実現するKubernetesの仮想ネットワーク (中井悦司) 2015年4月

はじめに

 前回のコラムでは、VXLANによる仮想ネットワーク、すなわち、「L2 over L3」のオーバーレイネットワークを実現する仕組みを解説しました。この際、VXLANに対応した物理スイッチを使用する前提で説明しましたが、実は、現在のLinuxカーネルには、すでにVXLANの機能が組み込まれています。つまり、特別な物理スイッチを用いずとも、Linuxの機能だけでVXLANを利用することが可能です。

 今回は、LinuxのVXLAN機能を用いてオーバーレイネットワークを実現するツール「Flannel」を紹介します。Flannelは、Dockerのオーケストレーションツールである「Kubernetes」と組み合わせて利用します。

Flannelが構成する仮想ネットワーク

 Kubernetesの環境でFlannelを利用すると、図1のような仮想ネットワークが構成されます。各サーバー(Minion)で起動するコンテナは、オーバーレイで構成された「内部ネットワーク」を介して相互に通信できるようになります。Linux上でVLANを構成すると、「eth0.100」のようなVLANデバイスが用意されるのはご存知かと思います。これと同様に、「flannel.1」というVXLANデバイスが用意されて、このデバイスによってパケットのカプセル化が行われます。

fig01

図1 Flannelのネットワーク構成概要

 ただし、Dockerが起動するコンテナは、「docker0」という仮想ブリッジに接続されるために、仮想ブリッジとVXLANデバイスの間を接続する必要があります。Flannelは、ここで少し面白い方法を用います。Linux自身のパケット転送機能を用いて、「docker0」と「flannel.1」の間でパケットを転送します。つまり、図2に示すように、ホストLinuxは、この間を接続する仮想ルーターの役割を担います。(この図にある「PoD」は、Kubernetesが起動するコンテナと考えてください。)

fig02

図2 コンテナから見た論理ネットワーク

 したがって、各Minionの「docker0」には、それぞれに異なるサブネットが割り当てられます。そして、物理ネットワーク上には、これらを集約したサブネットがVXLANで用意されます。たとえば、図2の左端のMinionには、次のようなルーティングテーブルが用意されますので、これにより、自身に割り当てられたサブネット宛のパケットは「docker0」に、他のサブネット宛のパケットは「flannel.1」に転送されるようになります。

# ip r
default via 192.168.122.1 dev eth0  proto static  metric 100 
10.1.0.0/16 dev flannel.1  proto kernel  scope link  src 10.1.11.0 
10.1.11.0/24 dev docker0  proto kernel  scope link  src 10.1.11.1 
192.168.122.0/24 dev eth0  proto kernel  scope link  src 192.168.122.101  metric 100 

 このようなサブネットの集約は、物理ネットワークの世界ではおなじみですが、それと同じものが仮想ネットワークの世界で再現されているというわけです。クラウドの世界では、ネットワークエンジニアとサーバーエンジニアの境界がなくなるという話はよく聞きますが、このようなネットワーク設計の基礎知識は、誰もが常識として身につけておきたいものです。

 また、今回紹介した、KubernetesとFlannelを組み合わせた環境は、RHEL7.1を用いて構築することが可能です(*1)。一度、実際に環境を構築して、このような仮想ネットワーク構成を自分の目で確かめてみてください。

次回予告

 最近、『ソフトウェアエンジニアのための「機械学習理論」入門』という資料を公開したところ、予想以上のダウンロード数で驚いたことがありました。機械学習に利用できるオープンソースのツールやクラウドサービスが増えていますが、実際にどのような計算をしているかという「中身」までは、なかなか理解が難しいものです。本コラムでも、次回から少し、機械学習について解説をしてみたいと思います。

 なお、次回はゴールデンウィークのため本連載はお休みをいただきます。次は、5月18日ごろに公開の予定です。

参考資料

*1RHEL7.1でKubernetesを実体験(構築編)

 

++ CTC教育サービスから一言 ++
このコラムでLinuxや周辺技術の技術概要や面白さが理解できたのではないかと思います。興味と面白さを仕事に変えるには、チューニングやトラブルシューティングの方法を実機を使用して多角的に学ぶことが有効であると考えます。CTC教育サービスでは、Linuxに関する実践力を鍛えられるコースを多数提供しています。興味がある方は以下のページもご覧ください。
 CTC教育サービス Linuxのページ
 http://www.school.ctc-g.co.jp/linux/
 

Linux研修トレーニングならCTC教育サービス


 

筆者書籍紹介

Software Design plusシリーズ
「独習Linux専科」サーバ構築/運用/管理
  ――あなたに伝えたい技と知恵と鉄則

本物の基礎を学ぶ!新定番のLinux独習書

中井悦司 著
B5変形判/384ページ
定価3,129円(本体2,980円)
ISBN 978-4-7741-5937-9
詳しくはこちら(出版社WEBサイト)
「独習Linux専科」サーバ構築/運用/管理

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes