今日は、NUCを使って、どんなものを構築していくかについて紹介します。
VMware Tanzu
1日目 にも軽く触れましたが、今VMwareは、かなりKubernetesに力を入れています。
私がこれからNUCを使って、vSphereインフラ上にKubernetesのマルチクラスタ環境を構築していきたい訳ですが、それを実現するためのソリューション群が提供されていて、その名称が VMware Tanzu です。
そもそもvSphereって何?
VMwareの主力製品であり、「VMware ESXi」や「VMware vCenter Server」などの製品郡で構成される仮想化基盤を示します。AWSやGCPやAzureなどの主要なパブリッククラウドベンダーのインフラ基盤も、vSphere上で構築されてたりします。つまり、理論的には(すごーーく頑張れば)、vSphereさえあれば、あなたもAWSを創ることができちゃいます
2020年3月に、最新版である「vSphere7」が発表され、一番の目玉として、 TanzuによるKubernetes対応 を発表しています。 (こちらの記事 の方が分かりやすいかも)
Tanzu って何?
KubernetesのRUN(様々な環境へのクラスタ導入)、BUILD(APPの作成)、MANAGE(マルチクラスタ管理)を促進する製品群の総称です。なおTanzuとは、 スワヒリ語で枝(=新しいイノベーションの分岐)、または日本語の箪笥(タンス=コンテナを表現)を象徴した 名前のようです。
Tanzuの製品ラインナップのことを、 Tanzu Portfolio(ポートフォリオ) と呼びます。これらの製品は、VMwareが近年買収してきた、Pivotal/Bitnami/Wavefront/Heptioの製品や技術が元になっています。2020年11月30日現在のポートフォリオは以下の通りです。
カテゴリ | 製品名 | 提供形態 | 概要 |
---|---|---|---|
Build |
Tanzu Application Service (旧Pivotal Application Service) |
ソフトウェア | PaaS基盤。"cf push"コマンドでAPPをデプロイすると、自動的に依存関係管理、負荷分散、ロギング、監査等を実行し、本番環境で稼働されます。 VM上で動作する TAS for VMs と、現在評価利用のみ可能な TAS for Kubernetes が存在。 |
Build |
Tanzu Build Service (旧Pivotal Build Service) |
ソフトウェア | Cloud-Native Buildpacksをベースとして、コンテナの作成、管理、ガバナンスを自動化するソフトウェア。 |
Build | Tanzu Application Catalog | SaaS | Bitnami Application CatalogをベースとしたOSSカタログと、Base OSの組み合わせを管理し、メンテナンスされた最新状態のコンテナBase Imageを提供するするサービス |
Build |
Tanzu Data Services (旧Pivotal GemFire) (旧Pivotal RabbitMQ) (旧Pivotal ) |
ソフトウェア | データ関連ミドルウェアの製品スイート。現在はTAS for VM向けにリリースされており、Kubernetes向けにはベータ提供中。ラインナップとして、Tanzu GemFireとTanzu RabbitMQとTanzu SQLがある。 |
Run |
Tanzu Kubernetes Grid (以下、TKGと省略) |
K8s | TKGは2つの意味を持ちます。 1つ目は、VMwareによってテスト、署名、サポートされた、アップストリーム(OSS版)と互換性のあるKubernetesランタイムを指します。なお、TKGで構築されたKubetrnetesクラスタを、Tanzu Kubernetes Cluster(以下、TKC)と呼びます。 2つ目は、様々なクラウドやオンプレ環境に、TKCを導入する仕組みのことを指します。現時点では、vSphere / Microsoft Azure / Amazon EC2 / VMC on AWS に対応。(今後GCPにも対応予定) |
Run | vSphere with Tanzu | K8s | vSphere UIに統合されたTKCの導入を行う仕組みを提供。(つまりvSphere環境には、2種類のTKCの導入方法が存在) こちらの特徴として、vCenter SSO、コンテンツライブラリ、vSphereネットワーク、vSphereストレージ、vSphere HA、DRS、vSphereセキュリティなどが統合され、vSphere上での包括的な管理・運用が可能。 |
Manage | Tanzu Mission Control | SaaS | 様々なマルチクラウド上のKubernetesクラスタのライフサイクルやポリシーを一元管理するサービス。複数のKubernetesクラスタに対し、さまざまな一括操作をが行える。 (一括でポリシー適用など) |
Manage |
Tanzu Observability (旧Wavefront) |
SaaS | フルスタックAPPからクラウドインフラに至るまで、メトリクス、トレース、スパン・ログ、アナリティクスまで、あらゆるものを統合監視するソリューション。分析駆動型のカスタムメトリクスが特徴。 |
Manage | Tanzu Service Mesh | SaaS | NSXをベースに、にオープンソースのサービスメッシュ製品「Istio」を統合したソリューション。 |
各製品の技術ドキュメントは、 Tanzu Docs のページにまとまっています。
NUCにはvSphere環境を入れるため、 TKG 、および、vSphere with Tanzu を導入するところまでをゴールとしたいと思います。
ハードウェア要件
vSphereにKubernetesクラスタ基盤なんて、必要リソースが多そうで、果たしてNUCに入るんだろうかと、不安になりますよね?まずは、それぞれの製品の必要スペックを抑えていきましょう。
vSphere with Tanzu のコンピューティング要件
まず、NSX-T(ネットワークの仮想化製品)の有無によって条件が変わってきます。
今回はNSX-Tなしで検討します。余力があったらNSX-Tの導入もやりたいところですね・・
ポイントは以下の通りです。
ESXi台数
ESXiとは、ハードウェア上に直接、仮想マシンを動作させるための基盤(ハイパーバイザー)を導入する製品です。(なお小ネタとして、ESXの名前の由来は、当時の製品名である「Elastic Sky X」という名前の略称で、命名理由は、当時のマーケッターが「良い名前と思ったから」だそうですw)
シンプルに考えると、ESXiは物理サーバを担当するので、ESXi1台=NUC1台と考えることができます。
3 台の ESXi ホストと、ホストあたり 1 つの固定 IP アドレス。
2 つ以上の NIC を搭載した vSAN 用の 4 台の ESXi ホスト
ドキュメントを見ると、「どっちやねん!」という書きっぷりですが、これは、vSANを使うかどうかで変わってきます。(vSAN = Virtual Software-Defined Storage。ESXiホストの物理ストレージリソースを仮想化し、1つの共有データストアとして提供する製品)
また、vSAN利用時の推奨構成が4台以上なのですが、検証用途であれば、一応3台でもvSAN構築可能です。
つまり、愚直に作ろうとすると、ESXiが3台必要なので、NUCが3台も必要です。さらに問題なのは、NUCには1つのNICしかついていません。正攻法でいくなら、30万かけて3台のNUCを用意し、さらにUSB NICを用意して、USB NICが使えるようにドライバを当てる必要があります。
ここでドン引きしたあなた、ご安心下さい。そんな負担はかけたくないと思うので、後日、Nested ESXiと呼ばれる、ESXiの中にESXiを入れる方法をご紹介して、この2つの問題を解決したいと思います。
必要リソース(CPU/メモリ/ストレージ)
以下の点がポイントとなります。
- まずここに記載のCPUとは、論理CPUのことなので、NUCのthread数(i7モデルなら12、i5モデルなら8)に該当します。また、CPUは圧縮可能なリソースなので、デプロイできないといった制約にはなりません。ただ、オーバーコミットしすぎると、非常にもっさりするため、なるべく要件通りが望ましいです。
- 一方メモリは、リソースの確保が必要なので、最小要件を守っていく必要があります。
- ストレージは、シンプロビジョニングすればよいし、検証用途だと余りがちなので、忘れて大丈夫です。
- ぱっと見で一番やっかいなのは、ESXiです。ホストあたり8CPU/64GBと要件は厳しくみえますが、この値は、本番環境で様々なワークロードを快適に動作させるための最小要件と思われます。実際の必要量は、ESXi上で動作させたいものに依存するため、一旦忘れていただいて大丈夫です。
- 実際にESXi上で最低限インストールが必要なものは、ここに書いてある通り、「vCenter Server 7.0」(vSphere基盤の管理コンソール)と、「K8s ControlPlane VM」(ここの説明は後日・・)です。特に後者の方は、3台必要なので厄介です。今回はリソースをケチって、2CPU/8GB Mem/16GB Diskにしようと思いますが、ちょっとモッサリします。(さらに低いスペックも選択可能ですが、実用に耐えません。)もし潤沢にリソースがある場合は、最小要件に書かれた通りにしましょう。
- Nested ESXi構成を予定しているので、ある程度仮想ESXi分のオーバーヘッドが必要なはずです。
上記を踏まえると、本当に最低限必要なリソース量は、以下の通りとなります。
システム | CPU | メモリ |
---|---|---|
vCenter Server 7.0 | 2 | 16GB |
K8s ControlPlane x3 | 6(=2x3) | 24GB(=8GB x3) |
Nested ESXi x3 | ? | ? |
合計 | 8+α | 40GB+α |
ただし、この上でK8sクラスタを立てたり、アプリ等をちょっと試すことも考慮すると、NUC1台ではちょっと厳しく、NUC2台以上は欲しいところです。 |
TKG のコンピューティング要件
TKGのハードウェア要件は、純粋にK8sクラスタの要件になるので、vSphere with Tanzuが導入できるなら、TKGも問題ないでしょう。