CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
前回のコラムでは、VXLANによる仮想ネットワーク、すなわち、「L2 over L3」のオーバーレイネットワークを実現する仕組みを解説しました。この際、VXLANに対応した物理スイッチを使用する前提で説明しましたが、実は、現在のLinuxカーネルには、すでにVXLANの機能が組み込まれています。つまり、特別な物理スイッチを用いずとも、Linuxの機能だけでVXLANを利用することが可能です。
今回は、LinuxのVXLAN機能を用いてオーバーレイネットワークを実現するツール「Flannel」を紹介します。Flannelは、Dockerのオーケストレーションツールである「Kubernetes」と組み合わせて利用します。
Kubernetesの環境でFlannelを利用すると、図1のような仮想ネットワークが構成されます。各サーバー(Minion)で起動するコンテナは、オーバーレイで構成された「内部ネットワーク」を介して相互に通信できるようになります。Linux上でVLANを構成すると、「eth0.100」のようなVLANデバイスが用意されるのはご存知かと思います。これと同様に、「flannel.1」というVXLANデバイスが用意されて、このデバイスによってパケットのカプセル化が行われます。
図1 Flannelのネットワーク構成概要
ただし、Dockerが起動するコンテナは、「docker0」という仮想ブリッジに接続されるために、仮想ブリッジとVXLANデバイスの間を接続する必要があります。Flannelは、ここで少し面白い方法を用います。Linux自身のパケット転送機能を用いて、「docker0」と「flannel.1」の間でパケットを転送します。つまり、図2に示すように、ホストLinuxは、この間を接続する仮想ルーターの役割を担います。(この図にある「PoD」は、Kubernetesが起動するコンテナと考えてください。)
図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日ごろに公開の予定です。
*1 「RHEL7.1でKubernetesを実体験(構築編)」
++ CTC教育サービスから一言 ++
このコラムでLinuxや周辺技術の技術概要や面白さが理解できたのではないかと思います。興味と面白さを仕事に変えるには、チューニングやトラブルシューティングの方法を実機を使用して多角的に学ぶことが有効であると考えます。CTC教育サービスでは、Linuxに関する実践力を鍛えられるコースを多数提供しています。興味がある方は以下のページもご覧ください。
CTC教育サービス Linuxのページ
http://www.school.ctc-g.co.jp/linux/
筆者書籍紹介 Software Design plusシリーズ 「独習Linux専科」サーバ構築/運用/管理 ――あなたに伝えたい技と知恵と鉄則 本物の基礎を学ぶ!新定番のLinux独習書 中井悦司 著 B5変形判/384ページ 定価3,129円(本体2,980円) ISBN 978-4-7741-5937-9 詳しくはこちら(出版社WEBサイト) |
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes