- ナレッジセンター
- 匠コラム
SDN を利用したマルチハイパーバイザー(Kubernetes, vSphere)環境のネットワーク管理
- 匠コラム
- ネットワーク
- 可視化
ビジネス推進本部 第1応用技術部
データプラットフォームチーム
細谷 典弘
最近、コンテナの話題を聞くことが多くなりました。
それに伴い、コンテナ化されたアプリケーションのデプロイやスケーリングなどを自動化するオープンソースのソフトウェアである Kubernetes も注目されています。
Kubernetes で利用できるネットワークプラグインとして、Flannel や Calico などがありますが、物理ネットワークとの統合管理が出来ません。
また、Flannel や Calico などでは、いままで使われていた vSphere 環境の仮想マシンと Kubernetes 環境のコンテナとのネットワーク自動化も出来ません。
本コラムでは、Cisco ACI を用いて、マルチハイパーバイザー環境の構築方法をご紹介いたします。
まずは、Kubernetes と ACI の連携を紹介します。
Kubernetes と ACI を連携するメリット
Kubernetes が ACI と連携するメリットとして、次のようなものが挙げられます。
- アプリケーションをデプロイしたときに物理ネットワークを自動的に作成する
- 物理ネットワークで、アプリケーションのセキュリティを確保する
- ロードバランサー機能を自動的に作成する
- vSphere 環境の仮想マシンや、ベアメタルサーバーとのネットワークを自動化し、一元管理する
Kubernetes と ACI の連携方法
Kubernetes Master から、ACI 設定用の yaml ファイルを実行することで、Kubernetes 用のアプリケーションプロファイルが自動的に作成されれます(一部手動で作成する必要あり)。
図にあるそれぞれの EPG には、次のようなサーバやコンテナが入ります。
kube-default: kube-apply 等でデプロイしたコンテナ
kube-nodes: Kunbernetes の master や node のサーバ
kube-system: kube-dns, Kubernetes-dashboard
また、EPG 間は Contract で結ばれ、各 EPG 間で通信が可能になります。
次に、以下のように Web Server を2台デプロイし、Google Kubernetes Engine (GKE) と同じように Load Balancer が使えることを見ていきます。
デフォルトの状態では、Type は Nodeport になっており、EXTERNAL-IP は空白です。
「kubectl edit svc –namespace=webserver」で、Type を LoadBalancer に変更します。
Type を LoadBalancer に変更したことにより、EXTERNAL-IP が付与されていることが確認できます。
付与された 10.3.0.4 にブラウザでアクセスすると、2台の Web Server にロードバランスされていることが確認できます。
この EXTERNAL-IP にアクセスしたときのロードバランスは、ACI の機能であるサービスグラフの Policy-Based Redirect (PBR) を使って自動的に行われています。
デフォルトでは、デプロイしたコンテナは kube-default の EPG にアサインされますが、Namespace 毎に EPG を作成することも出来るため、デプロイしたコンテナを Namespace 毎の EPG にアサインすることも出来ます。
また、Deployment でも可能です。
Kubernetes と vSphere のネットワーク統合
ここからは、vSphere 環境の仮想マシンと Kubernetes 環境で作成した Web Server のコンテナを接続させます。
まず、vSphere 環境の仮想マシンを ACI ファブリックと接続させるため、vSphere 用の EPG を作成します。
そして、先ほど作成した LoadBalancer 機能が含まれている Contract と接続します。
APIC で vSphere 用の EPG を作成すると、vCenter にポートグループが作成されます。そのポートグループを、Windwos 仮想マシンのネットワークアダプターに適用します。
そのポートグループを適用した Windows から先ほどアクセスしていた IP と同じ 10.3.0.4 にアクセスすると、Kubernetes 環境の Web Server にアクセスすることが出来るようになります。
ここでは、仮想マシンとコンテナのネットワーク自動化を見てきましたが、ベアメタルサーバーにおいても、同じようにベアメタルサーバー用の EPG を作成し、コンテナと繋がっている Contact と接続すれば、ベアメタルサーバとコンテナの接続は出来るようになります。
最後に
ここまで見てきて分かりますように、コンテナをデプロイしたときに、物理ネットワークの設定を何も行わなくても、LoadBalancer を使ったネットワークが自動的に作成されてます。
さらに、Contract を使ったセキュアな環境を物理ネットワーク上に作成しています。
また、vSphere 環境の仮想マシンと Kubernetes 環境のコンテナを接続するときも、物理ネットワークの設定は何もせず、APIC 上でアプリケーションプロファイルを作成すれば、通信が可能になっています。
つまり、仮想ネットワークから物理ネットワーク、さらには vSphere や Kubernes などの違う仮想環境においても、ACI を用いることで、ネットワークの一元的管理が出来ます。
執筆者プロフィール
細谷 典弘
ネットワンシステムズ株式会社 ビジネス推進本部
第1応用技術部 データプラットフォームチーム 所属
クラウド基盤に用いられるハードウェアとソフトウェアの最先端テクノロジーに関する調査・検証と、案件の技術支援をする業務に従事。
- CCIE Routing and Switching (#16002)
- CCIE Data Center (#16002)
- Red Hat Certified System Administrator in Red Hat OpenStack(RHCSA) (EX210)
Webからのお問い合わせはこちらから
ナレッジセンターを検索する
カテゴリーで検索
タグで検索