Oracle Cloud Hangout Cafe Season 4 #2「Kubernetesのネットワーク」(2021年5月12日開催)

2024年2月20日(火)
仁井田 拓也
第2弾の連載第3回では、2021年5月12日に開催された 「Oracle Cloud Hangout Cafe Season4 #2『Kubernetesのネットワーク』」の発表内容に基づいて紹介していきます。

はじめに

Oracle Cloud Hangout Cafe」(通称「おちゃかふぇ」/以降、OCHaCafe)は、日本オラクルが主催するコミュニティの1つです。定期的に、開発者・エンジニアに向けたクラウドネイティブな時代に身につけておくべきテクノロジーを深堀する勉強会を開催しています。

連載第3回の今回は、2021年5月12日に開催された「Oracle Cloud Hangout Cafe Season 4 #2『Kubernetesのネットワーク』」の発表内容に基づいて紹介していきます。

Dockerのネットワークから始まり、Kubernetesクラスタを実現するネットワークや、そのインタフェースであるContainer Network Interface(CNI)の仕組み、代表的なCNIプラグイン、CNIプラグインを使用したファイアウォールの仕組みであるNetworkPolicyを見ていきます。

アジェンダ

今回は、以下のアジェンダの流れに従って、順に解説します。

  • Dockerのネットワーク
    • bridge、host、none
  • Kubernetesのネットワークの仕組み
    • ネットワーク名前空間、Container Network Interface(CNI)、Cluster Networking
  • Container Network Interface(CNI)の代表的なプラグイン
    • flannel、Calico、Weave Net、Cilium、kube-router、Antrea
  • NetworkPolicyとPod間セキュリティ
    • NetworkPolicy

発表資料と動画については、下記のリンクを参照してください。
資料リンク
動画リンク

Dockerのネットワーク

まず、Kubernetesのネットワークに入る前に、Dockerのネットワークをおさらいします。Dockerのネットワークには、以下の3つの要素があります。

  • 仮想ブリッジ
    • Linux上に仮想的なL2スイッチを構成する機能
    • 仮想マシンやホスト同士を通信させるために利用
  • veth
    • 仮想的なL2ネットワークインタフェース(仮想NIC)
    • 2つのインタフェースをペアとして作成
  • iptables
    • Linuxに実装されたパケットフィルタリング/ネットワークアドレス変換の機能
    • ファイアウォール/NAT(SNAT/DNAT/Masquerade)などの機能を提供

Dockerがデフォルトで用意しているネットワーク

Dockerのネットワークは、デフォルトで以下の3パターンが実装されています。これらはDockerインストール直後から利用できるネットワークで、docker network lsで表示できます。

  • bridge
    • Dockerのデフォルトのネットワークであり、最も利用される仕組み
      • Linuxのbridge機能を利用してLinux上にDockerおよびコンテナ用のネットワークを構築
        • Dockerがdocker0(仮想ブリッジ)というbridge networkを作成
          • コンテナ側とDockerデーモン側のネットワーク(≠ホストネットワーク)をvethペアで接続
          • docker0はDockerデーモン側のネットワークとホストネットワークのvethと接続
    • コンテナそれぞれにIPを付与
    • ホストの任意ポートをコンテナの任意のポートにマッピングできる(docker runコマンドの-p(--publish)オプションの利用)
    • 独自のbridge networkも作成できる

bridge-network

  • host
    • ホスト側のネットワークインタフェースに接続
      • ネットワーク設定はホストと同一
    • bridgeのようなポートマッピングは不可(docker runコマンドの-p(--publish)オプションの利用)
      • 特定のポートで起動するコンテナを2つ以上起動させることはできない

host-network

  • none
    • ループバックアドレス(localhost)のみが利用できるネットワーク
    • 主にコンテナのネットワークを無効化したい場合に利用

none-network

ここまでは同一ホスト上のコンテナネットワークについて見てきましたが、参考として、異なるホスト上に存在するコンテナのネットワークの仕組みであるoverlay networkという仕組みも紹介します。

overlay networkはVXLAN(L2 over L3)の技術を利用して実現するもので、Dockerホストが異なる拠点やデータセンタに存在しても、同じネットワーク上に存在しているものとしてアクセスできます。overlay networkにはKVS(Key-Value Store)が必須になっており、Dockerホストのディスカバリなどに利用します。Key-Value StoreはConsul/etcd/ZooKeeperをサポートしています。

overlay-network

bridgeネットワークの操作

ここでは、Dockerネットワークについて実際にCLIでの操作を見ていきます。今回は先ほど紹介した3パターンの中から、最もよく利用されるbridgeについて解説します。

  • Dockerネットワークの作成
    $ docker network create --driver bridge <ネットワーク名>
  • Dockerネットワークの詳細確認
    $ docker network inspect <作成したネットワーク名>
  • 作成したbridgeネットワークの利用(1)
    $ docker run --net=<作成したネットワーク名> --name=<コンテナ名> image名
  • 作成したbridgeネットワークの利用(2)
    $ docker network connect <作成したネットワーク名> <コンテナ名>

Dockerのネットワークにおける課題

Dockerのネットワークの仕組みには課題があります。特に最もよく利用されるbridgeネットワークでは、iptablesによるNAT形式での通信を利用(overlay networkは除く)します。この仕組みはコンテナが増えるたびにiptable(NATテーブル)に追記していくことになり、コンテナが増えれば増えるほどNATテーブルの管理が煩雑になります。

この後で紹介するKubernetesは、特にコンテナ間の通信について「NAT不要のテクノロジーを利用してフラットなネットワークを構築しよう」という世界観に基づいて設計されています。

docker-issue

日本オラクル株式会社

Oracle Groundbreaker Advocate
Senior Cloud Solution Engineer

日本オラクル株式会社所属。SIerにて様々なOSSを活用したシステム開発を経験し現職。現在は、SIer時代の知見を活かし、ソリューションアーキテクトとしてクラウドでのアプリケーション開発やクラウドネイティブ技術に関する技術/案件支援に従事。

Community:
Oracle Cloud Hangout Cafe メンバー(#ochacafe)

連載バックナンバー

仮想化/コンテナ技術解説
第4回

Oracle Cloud Hangout Cafe Season6 #4「Pythonで作るAPIサーバー」(2022年12月7日開催)

2024/3/21
第2弾の連載第4回では、2022年12月7日に開催された 「Oracle Cloud Hangout Cafe Season6 #4『Pythonで作るAPIサーバー』」の発表内容に基づいて紹介していきます。
仮想化/コンテナ技術解説
第3回

Oracle Cloud Hangout Cafe Season 4 #2「Kubernetesのネットワーク」(2021年5月12日開催)

2024/2/20
第2弾の連載第3回では、2021年5月12日に開催された 「Oracle Cloud Hangout Cafe Season4 #2『Kubernetesのネットワーク』」の発表内容に基づいて紹介していきます。
仮想化/コンテナ技術解説
第2回

Oracle Cloud Hangout Cafe Season7 #2「IaC のベストプラクティス」(2023年7月5日開催)

2024/1/18
第2弾の連載第2回では、2023年7月5日に開催された 「Oracle Cloud Hangout Cafe Season7 #2『IaC のベストプラクティス』」の発表内容に基づいて紹介していきます。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています