LTN Blog 〜 Lenovo Technology Network 〜

レノボのソリューション・サーバー製品に関する技術情報、お役立ち情報をお届けします

VMware Project Pacific – Kubernatesをメインストリームに

皆さん、こんにちは レノボ・エンタープライズ・ソリューションズ 小宮です。

本日はVMwareのProject Pacificに関する内容を投稿しようと思います。

 

本ブログの原文はもともとLenovoのTechnical Product Marketing Managerで、Lenovo ThinkAgile 製品担当 そしてVMware vExpertとして活動しているBhavin Shar氏によるものです。
原文を参照したい方は、VMware Project Pacific – Making Kubernetes mainstream
をご確認下さい。情報は原文の投稿時のままの情報ですので、現時点では投稿時の情報と製品とで差異が出ている場合があります。

VMware Project Pacific – Kubernatesをメインストリームに
このブログでは、Project Pacificの様々な側面で説明し、開発者とオペレーターの両者がデンターセンター内でKubernates(K8s)を採用するためにvSphereの進化について説明致します。Project Pacificをより理解するためには、次の3つのことについて検討する必要があります。

  1. スーパーバイザークラスター (Supervisor Cluster):この機能により、ESXiクラスターをK8sクラスター自体として使用することでコンテナーをESXiホストで直接実行することが可能です。
  2. ネイティブポッド (Native Pods):K8sに似ていますが、ESXiのコンテナーランタイムがあります。また、1つ以上のコンテナのコレクションがあります。
  3. ゲストクラスター(Guest Cluster):これらはコンテナ―化されたアプリケーションを実行するための現在お客様が使用しているCNCF準拠のK8sクラスターです。

それでは、スーパーバイザークラスターとネイティブポッドについてお話しましょう。スーパーバイザークラスターとVMwareがESXiレイヤーに対して機能強化について理解するために、まず、通常のESXiクラスターがどのように見えるのかを見てみましょう。
(参考:このブログで使用されている画像はすべて、VMworldセッションスライドのスクリーンショットです)

f:id:t_komiya:20200118140044p:plain
各ESXiホストには、ローカル実行されているホストデーモン(hostd)が存在しており、VMを管理し、ホストにAPIを提供します。2つ以上のホストでESXiクラスターを作成し、すべてのホストとその上で実行されているVMをvCenterサーバーインスタンスで管理できます。Project Pacificの一部として、vCenterサーバーとESXiホストの両方に変更が加えられました。
vCetnerサーバーの場合、以下のイメージに示されるいくつかの追加コンポーネントがあります。

f:id:t_komiya:20200118140301p:plain

  1. ワークロードプラットフォームサービス(Workload Platform Service):このサービスは、クラスターのネームスペースの概念を有効にし、ネームスペースと双方向にやり取りするREST APIを公開します。
  2. K8s クライアント バインディング (K8s Client Bindings):ワークロードプラットフォームがK8s APIサーバーと通信できるようにします。オペレーターとして、vSphere HTML5クライアントを引き続き使用して様々な設定行うことができます。このサービスは、これらの設定をネームスペース内のK8sの設定に変換します。
  3. トークン交換サービス(Token Exchange Service): このサービスは、vSphere SSO SAMLトークンを取得して、K8sで利用するJSON Web Token(JWT)に変換します。
  4. イメージのバンドル:コントロールプレーンイメージおよびSphereletバンドルのイメージレポジトリ

新しいvCenterサーバーを展開した後、私の推測では現在のクラスターでvSANを有効にするのと同様に、Project Pacificの機能を有効にできると思います。Project Pacificを有効にするとすぐに、vCenterのワークロードプラットフォームサービスの処理が始まり、sphereletのバイナリをクラスター内の各ノードにインストールします。

f:id:t_komiya:20200118140445p:plain

SphereletはESXiホスト用のkubeletのVMwareによる実装です。kubeletがK8sクラスターの各ノードのポッドのライフサイクルを担当するのと同様に、Sphereletはスーパーバイザークラスターの各ESXiホストのポッドのライフサイクルを担当します。また、ノードの正常性のレポートも担当します。Sphereletのインストールに加えて、vCenterは3つのVMをデプロイおよび構成して、マルチクラスターK8sコントロールプレーンを作成します。ご利用の環境でNSX-Tを実行しているのであれば、異なるコントロールプレーンVM間でNSX L4ロードバランサ―の負荷分散が行われます。
各スーパーバイザー K8sコントロールプレーンVMは、OSS K8sバイナリを使用して構築されていますが、いくつかのサービスが追加されています。

f:id:t_komiya:20200118140346p:plain

  1. スケジュール拡張:オペレーターがポッドをスケジュールしようとすると、スケジューラー拡張はVMware DRSと連携し、スーパーバイザークラスター内でそのポッドを展開する最適なノードを見つけます。
  2. NSXコンテナプラグイン(CNI)およびクラウドネイティブストレージ(CSI):これらのCNIおよびCSIプラグインにより、VMwareはK8sワークロードのネットワークおよびストレージサポートを提供できます。PKSを使用している場合、またはvSphere上でOSS K8sを実行している場合は、これらの2つのプラグインにすでに慣れている必要があります。NSX-TベースのCNIプラグインを使用すると、新しいK8sクラスターと作成する新しいネームスペース毎に新しい仮想スイッチが作成されます。しかし、ここには落とし穴があります。この統合のため、Project Pacificを実装および使用する場合は、クラスターでNSX-Tを使用する必要があります。クラウドネイティブストレージプラグインを使用すると、K8sの永続的なボリュームであるvSphereデータストア(VMFS, NFS, または vSAN)を利用することができます。vSANを使用する場合、ストレージポリシーベース管理(SPBM)機能をK8sストレージクラス定義に拡張できます。
  3. 認証プロキシ:K8sがvSphere SSOドメインと双方向にやり取りできるようにします。

 

f:id:t_komiya:20200118140558p:plain

各コントロールプレーンVMには、管理用とNSX Clusterトラフィック用の2つのvNICもあります。
この時点で、コンテナ―化されたアプリケーションを実行する準備が整ったvCenter サーバーとESXiホストができましたが、どうやってそれを行いますか?これは、ネイティブポッドの概念が登場するところです。Dockerのようなデフォルトのコンテナランタイムを使用する代わりに、VMwareはESXi専用のCRXと呼ばれる新しいコンテナランタイムを導入しました。そのため、ネイティブポッドの一部としてコンテナを実行すると、ネイティブポッドはVMのように見えます。これは事実になりますが、実際にはネイティブポッドを展開するたびに展開される最適化されたVMになります。


ネイティブポッドには、最適化されたvmxコンポーネントを含まれる最適化されたLinuxカーネルのCRXが含まれています。CRXはLinuxカーネルを起動し、ブートに直接ジャンプします。そのため、ネイティブポッド(最適化されたVM)は非常に高速に起動し、ESXiホスト上でコンテナをネイティブに実行することができます。ネイティブポッドもスーパーバイザークラスターに展開され、イメージの読み込みなどのシステムタスクの一部を実行します。これらのポッドは、実行するはずのタスコに基づいて行き来します。したがって、それらは長時間実行されるポッドではありません。Harbor コンテナレジストリをネイティブポッドとしてデプロイすることもできます。最後にスーパーバイザークラスターでのポッド間通信は、vanilla OSS K8sクラスターの場合、Kube-proxyの代わりに各ホストで実行される分散ロードバランサーによって有効化されます。
スーパーバイザークラスターとその上で実行されるネイティブポッドの全体像をようやくするために、VMworld EMEAから以下のスライドが紹介されると思います

f:id:t_komiya:20200118135935p:plain
ユーザーまたは開発者がスーパーバイザークラスターおよびネイティブポッドの概念を利用して、ESXiホスト上でコンテナーを直接実行できるようにvCenterサーバーおよびESXiホストに新しい機能が追加される方法を示します。
次回のブログでは、Kubernates-As-A-Service機能をお客様に提供するProject Pacificのゲストクラスター機能について紹介しようと思います。