vm.gowatana.jp

NEOにほんごVMware(仮)

vSphere with Tanzu だけではない お手軽 Kubernetes 環境構築(vctl kind)

Japan VMUG vExpert が語る #27 で紹介した、お手軽 Kubernetes 環境構築についての話です。VMware Workstation Pro で、Kubernetes クラスタを作成してみます。

vmug-jp.connpass.com

 

今回の内容です。

 

録画はこちら。

www.youtube.com

 

はじめに

今年も vExpert Application Modernization 受賞できたので、これから Kubernetes を始めてみようかと思えそうなおもしろ機能を紹介します。

 

Tanzu と vSphere with Tanzu の復習

Application Modernization といえば Tanzu ですよね。これは、「Tanzu が Kubernetes です」というわけでななく、「Kubernetes の世界で利用されるものが用意できる」ブランドです。

そして、Kubernetes を便利に使うツールなど(Velero、Sonobuoy ...)も含まれます。

 

そのなかで話題の? vSphere with Tanzu は・・・

  • vSphere が Kubernetes になる
  • ESXi で、CRX コンテナ ランタイムによる vSphere Pod が起動できる

といったものです。

 

しかしながら「Kubernetes が簡単に使えるようになる」わけではありません。私は、「すでに Kubernetes を使い慣れた人むけに、オンプレ Kubernetes を用意しやすくする」といった感じのものであると思っています。(モダンなアプリのオンプレ回帰といったケースでは刺さりそうではあります)

 

vSphere with Tanzu や TKG よりもお手軽な Kubernetes 用意

ところで、vSphere with Tanzu よりも、さらに簡単に手元にちょっとした Kubernetes クラスタが欲しい場合は、もう少し手軽なツールがあります。しかも、すでに手元の PC に、そのツールがインストールされているかもしれません。

今回は、VMware Workstation Pro 16 以降で利用できる、vctl というツールで Kubernetes クラスタを用意してみます。

 

VMware Workstation Pro 17 のドキュメントだと下記のあたりです。

 

vctl kind による Kubernetes クラスタ作成

Windows マシンに、VMware Workstation Pro をインストールしておきます。今回の環境では、バージョン 16.2.5(古め)を利用しています。

まず、PowerShell のコンソールから、コンテナ ランタイムを起動します。

PS> vctl system start

 

そして vctl kind コマンドを実行すると、別の PowerShell ウィンドウが開きます。

PS> vctl kind

 

新たに起動されたウインドウで、Kubernetes クラスタを作成します。

PS> kind create cluster

 

これで、シングル ノードの Kubernetes クラスタが作成されました。kubectl も実行できるようになっており、Kubernetes ノードの情報が取得できます。

PS> kubectl config get-contexts
PS> kubectl get nodes

 

Pod が起動されている様子も確認できます。 

PS> kubectl get pods -A

 

このように、最近の VMware Workstation では、kind(Kubernetes in Docker)による Kubernetes 作成ができるようになっています。

 

Kubernetes クラスタは、下記のように削除できます。

PS> kind create cluster

 

vctl 関連ファイルの様子

VMware Workstation Pro がインストールされたディレクトリ配下を確認してみると、crx といった、vSphere Pod でも利用されているコンテナ ランタイムの名前を含むファイルがみつかります。vctl は、vSphere Pod と同様に、Pod ごとに仮想マシンを作成する仕組みになっているようです。

 

ホーム ディレクトリ($HOME)配下には .vctl というディレクトリが作成され、kubectl や kind コマンド、そして crx.vmdk というファイルが配置されています。

vctl kind で新たに起動された PowerShell ウインドウでは、PATH 環境変数にこのディレクトリも追加されるため、さきほどのように kind / kubectl コマンドが実行できるようになっています。

 

vctl でのコンテナ起動

vctl は、kind による Kubernetes 作成をしなくても、「vctl run ~」といったコマンドを実行するとコンテナが起動できます。ほかにも docker CLI のように、vctl ps で起動されたコンテナの確認、vctl exec でコンテナの中に入ることができます。

今回は例として、Docker Hub にある CentOS 7 の自作コンテナ イメージを起動していますが、CRX コンテナ ランタイムを利用しているだけあり、uname -r などを実行すると、vSphere Pod と同様に Photon OS の Linux カーネル(~.ph3-esx)が使用されていることがわかります。

 

exit でコンテナから抜けて、vctl rm コマンドでコンテナを削除しておきます。コンテナを起動したまま削除するので「-f」オプションを付与しています。

 

ちょっとした Tanzu 関連ツールの確認などに使えるかもしれません。バージョン 16 同梱の kind だとだいぶ Kubernetes バージョンが古いですが・・・

ちなみに、手元に環境がないので試せてませんが、vctl は最近の VMware Fusion にも含まれているようです。

以上、これから Kubernetes を始めてみようかと思えそうなおもしろ機能の話でした。