通りすがりのminami-engineerのブログ

常に気持ちは新人エンジニア。

kubernetes紐解き講座~vol.2~

今回も前回に引き続き、kubernetesを支える技術について書いていこうと思います。

まずとりあえず思い限り、kubernetesに関連する技術、支える技術について書き並べてみます!

コンテナ
cgroup
名前空間
クラスタリング
Kubernetes Network Policy
CSIプラグイン
CNIプラグイン
pod、node、master
OSI参照モデル(主にL2~L4)
TCPUDP、MSS、MTU
VXLAN、VTEP
BGP
calico
サブネットマスク
iptables
etcd
flannel
docker
FIB、RIB
DSR
ARPテーブル、macアドレス
ネットワークのカプセル化
IPIP
API
ストレージ
ロードバランシング

このなかで、自身でもあまり馴染み無く、かつ最近の技術であるVXLANについて記載します。

(1)VXLANについて

VXLANは正式にはVirtual eXtensible Local Area Networkといいます。

今日では仮想化による大規模なサーバーの集約を行う事が当たり前とされており、データセンタにおいては、複数のクライント(企業もしくはサービス単位)を収容する事ができるインフラ環境の構築が必須となりました。

ここで大事になってくるのは、複数の顧客を収容する場合、異なる顧客同士のシステム間で通信できないように、ネットワークは分離されている 必要があります。

(2)ネットワークを分離するための技術

L2の分離に用いられていた技術に、VLAN(Virtual Local Area Network)があります。

VLANでは 約4000個のネットワーク(サブネット) を作る事ができます。
が、これだと大規模な環境ですと4000ネットワークでは足りません。

ここでVLANの欠点を補うためにVXLANが登場しました。

VXLANでは VNI(VXLAN Network Identifier) というネットワークの空間を使うことにより、 約1670万個のネットワーク(サブネット) を作る事ができます。

作られたネットワークは、 VTEP(Virtual Tunnel End Point) と呼ばれるゲートウェイを利用して L2トンネリング機能 を実現し、 既存のL3の世界の上で、L2の仮想環境を構築する ことで通信が可能になります。

VXLANを使うことにより複数のデータセンタをまたがるL2ネットワークを構築できるので、大規模でかつ柔軟なネットワーク設計が可能になるわけです!

・VXLANを構成する特徴的な技術
  1. UDP パケットの中にイーサネットフレームをカプセル化する
  2. VXLAN Network Identifier(VNI)24 ビットの ID にて約 1600 万の VLAN-ID が利用可能になる
  3. Virtual Tunnel End Point(VTEP)間でトンネリングする

まあ、ここまでお話しましたが、昨今ではAWSなどで、手軽にコンテナ技術を利用することができ、この辺りの知識はあまり意識しないでも問題なく構築は行なえます。しかし、ネットワークの部分をブラックボックスのように考えてしまうと、障害発生時や、オンプレからクラウドへの移行などにおいて調べるだけで余計に時間を費やしてしまうことになります。

次回も少し、VLANとそこから派生するflannelを説明していこうと思います。