はじめまして。VMware の伊藤です。Tanzu 製品のプラットフォームアーキテクトとして働いており、開発と運用双方の経験があります。触りながら学ぶ TKGm の第二回では「実際にユーザーアプリケーションを動かすワークロードクラスタ自体の管理操作」をハンズオン環境を使って実施し、そのなかで一般的な Kubernetes や TKGm の解説をおこないます。
詳しい Tanzu Kubernetes Grid multi-cloud (TKGm) の製品コンセプトは第一回記事を参照いただきたいですが、おおまかには以下の図のようなものとなっています。
オンプレミスである vSphere や、パブリッククラウドである AWS や Azure 上に「マネージメントクラスタ」を展開し、そのマネージメントクラスタを使って実際にアプリケーションを動かす複数の「ワークロードクラスタ」を管理します。このような構成にすることで「個別にアプリ用の Kubernetes クラスタを作る際に発生する中長期的運用コスト(作成/変更/削除)を削減できる」ことや「管理機能の利用方法が統一されるので、IaaS 基盤ごとに異なるマネージド Kubernetes の利用法を学ばなくてよい」といった利点が得られます。
この記事では TKGm の利用法を以下の流れで学びます。
- VMware が提供する無料のハンズオンラボ(HOL)環境にアクセスする
- ワークロードクラスタの操作(クラスタのスケール変更。Worker ノードを増やす)を試す
- kubectl コマンドでワークロードクラスタを操作できるようにする
- TKG コマンドの操作概念まとめ
なお、次回の第三回ではワークロードクラスタ上に実際に K8s アプリを展開します。
ハンズオンラボ環境(HOL)へのアクセス
VMware HOL を利用するにはユーザー登録が必要です。以下のページにアクセスして右上の Register からユーザー登録をしてください。登録/ログイン後にページの言語を右上から変更して日本語にできます。
https://labs.hol.vmware.com/HOL/
ログインしたらハンズオンラボが利用できるので、目的の TKGm のラボを検索欄に「HOL-2133」などといれて探してください。利用するのは「HOL-2133-01-MAP – VMware Tanzu Kubernetes Grid (TKG)」というものです。
ラボを開始するために「登録/再登録」をし、説明にしたがって進めてラボを開始します。ラボが始まってしばらくすると、以下のような操作画面があらわれます。
画面左にリモートデスクトップ画面があり、右にラボシナリオがあり、上部にラボの残り時間が表示されています。「延長」ボタンを押すことでラボの残り時間を増やすことができます。マニュアルのページ操作などは特に難しくないと思いますが、ローカルマシンからのコピーアンドペーストは左上の「テキストの送信」ボタンからおこないます。これを押すとテキストボックスが開くので、そこにリモートの Windows にペーストしたい文字列を貼り付けて「送信」ボタンをクリックします。そうすることで Windows に文字列が貼り付けられます。画面上で直接Ctrl+vで貼り付けられないので気をつけてください。なお、リモートマシン内でのコピペは Ctrl+c -> Ctrl+v で実施できます。
ラボシナリオは左右にある矢印で前ページ、次ページへ移動できます。目次を参照して指定ページへ移動するには上部の目次ボタンを押してモジュールやセクションを選択してください。
この記事ではマニュアルのモジュール3のワークロードクラスタの基本操作(前半)を扱います。飛ばしたモジュール1はTKGmの説明ですので第一回相当の内容となります。モジュール2はマネージメントクラスタの構築ですが、構築よりも使い勝手を試したいユーザーのほうが多いと思いますので先にモジュール3を扱うこととしました。
ワークロードクラスタの管理操作
モジュール3の最初のラボはワークロードクラスタの管理操作となります。おおまかには以下の図のように事前に用意された操作端末から「(1)マネージメントクラスタを選択」し、「(2)マネージメントクラスタが管理するワークロードクラスタを指定して拡張(スケール)操作を実施する」というものです。
詳細は別記事で扱う「TKGm のマネージメントクラスタ構築」の際に説明しますが、ワークロードクラスタの基本設定の多く(図の灰色部分)はマネージメントクラスタの設定を継承します。たとえば基盤上のどのネットワークを利用するかといった設定は、ワークロードクラスタ構築時ではなくマネージメントクラスタ構築時に指定したパラメータが利用されます。マネージメントクラスタが多くの高度にカスタマイズされたワークロードクラスタを管理するのではなく、多数のほぼ似たような構成のワークロードクラスタを管理します。大きく異なる構成のワークロードクラスタを複数作りたいのであれば、図にあるように複数のマネージメントクラスタごとに分けます。
運用者がマネージメントクラスタを使って様々な実利用者にワークロードクラスタを払い出すのであれば、ワークロードクラスタごとに細かな調整をしたいと思うかもしれません。ただ、セルフサービス型の TKG では「実際の利用者にマネージメントクラスタを与えて、複数のワークロードクラスタを自由に作って使ってもらう」ことを目指しています。その背景を考えると、マネージメントクラスタにワークロードクラスタの基本設定をおこなうという設計理由がわかるかと思います。
マネージメントクラスタへの接続
モジュール3の解説にしたがって、操作端末である Linux に putty で接続をおこないます。この演習では「TKG コマンド」という TKG 操作用の CLI ツールが Linux にインストールされているので操作端末に Linux を使いますが、これを Windows や Mac にインストールすれば自分のノート PC で直接マネージメントクラスタやワークロードクラスタを操作できるようになります。
解説にしたがって Linux にログインしたら、まず TKG コマンドが使えるかを「tkg version」コマンドで確認します。
このコマンドで作業用端末にインストールされている TKG CLI のバージョンが分かります。HOL 環境の TKG は少し古いのでご注意ください。
次にこの TKG CLI が認識するマネージメントクラスタの一覧を「tkg get management-clusters」コマンドで取得し、利用するマネージメントクラスタを「tkg set management-cluster <クラスタ名>」で選択します。
図にあるように今回は「tkg-mgmt」というマネージメントクラスタが1つだけですが、複数あれば列挙されます。そしてすでにそのマネージメントクラスタが選択(*印)されていますが、ここではあえて「tkg set」コマンドで再選択しています。
今回のようにマネージメントクラスタが1つしかなければ気にする必要はありませんが、2つ以上のマネージメントクラスタが存在する場合は管理/作成したいワークロードクラスタに応じて、適切なマネージメントクラスタを選択する必要があります。たとえば先ほどの操作概念図ですと右側のワークロードクラスタ1-3を操作したい場合は、右側のマネージメントクラスタ2を選択している必要があります。
マネージメントクラスタの操作の詳細は以下のドキュメントを参照ください。
Manage Your Management Clusters
なお、作成したマネージメントクラスタは自動でその操作端末上の TKG ツールに登録されますが、他の端末で作成されたマネージメントクラスタは手動で追加しなければ利用できません。シンプルに利用したいのであれば、マネージメントクラスタごとに操作専用端末(VM)を用意して、その端末経由で全てのマネージメントクラスタの操作とワーククラスタの操作をおこなうのが簡単です。その操作端末を仮想マシンとして定期バックアップしておけば、誤って操作端末を壊してしまってもマネージメントクラスタへのアクセスを簡単に復元できます。
ワークロードクラスタの操作(ノードのスケールアウト)
次にワークロードクラスタの管理を実施します。マネージメントクラスタの構築直後ですとワークロードクラスタが存在しないので、その場合はワークロードクラスタを先に作成します(残念ながら HOL 環境ではこの操作はセキュリティ上の理由などで IP 払い出しができずに失敗します)。
ワークロードクラスタの管理にはクラスタのバージョンアップなど様々なものがありますが、この環境ではバージョンアップ用のイメージなどは準備されていないので、HOL のシナリオどおりにクラスタノードのスケールアウトを実施します。スケールアウトを実施するには「tkg scale cluster <クラスタ名>」コマンドを発行します。今回はクラスタ名が tkg-workload で、ワーカーノード(オプション -w)を3台から5台にスケールアウトしますので、「tkg scale cluster tkg-workload -w 5」というコマンドとなります。
以下にサンプル出力を記載します。
しばらく待っていると、「tkg get clusters」コマンドの出力からクラスタのワーカー(WORKERS)が3/5から5/5に増えていることがわかります。その裏側では vSphere 上でワーカーノードの VM が自動で2つ作成されています。同じことをスクラッチで導入したバニラの K8s クラスタにたいして実施すると、マシンの作成や K8s のインストールから始まりますので手間がかかります。
ワーカーノードの数を現在展開されている数よりも少ない値を指定することで、スケールダウンをさせることもできます。たとえば「tkg scale cluster tkg-workload -w 3」とすれば、5台あったワーカーノードから2台が削除され、3台構成になります。
ワークロードクラスタのスケールの詳細は以下のドキュメントを参照ください。
Scale Tanzu Kubernetes Clusters
ワークロードクラスタへの接続(kubectlのコンテキスト取得)
ワークロードクラスタの基盤自体の操作は TKG コマンドでおこないますが、ワークロード(アプリ)を展開するという一般的な利用法は標準的なツールである kubectl コマンドを利用します。kubectl コマンドでの K8s クラスタ操作にはコンテキストが必要ですが、そのコンテキストは TKG コマンドで取得できます。操作概念図は以下となります。
上記図の流れにそって、「tkg get credentials <クラスタ名>」でコンテキストをローカルの kubectl コマンドに登録し、「kubectl config get-contexts」で kubectl コマンドが認識するコンテキスト一覧を取得、そして「kubectl config use-context <コンテキスト名>」でワークロードクラスタのコンテキストを選択します。こうすることで、kubectl コマンドで TKG で作成したワークロードクラスタを操作できるようになります。図にあるリソース作成は第三回のマイクロセグメンテーションアプリを展開する記事で扱いますので、今回は「kubectl get nodes」コマンドでクラスタのノード数を確認します。正しくコンテキストが使われていれば、みなさんがtkgコマンドで操作したワークロードクラスタのノード一覧が得られるはずです。
以下にサンプル出力を記載します。この例ではワーカーノード数は3台ですが、スケールダウンを試していなければ5台表示されるはずです。
今回はTKGコマンドでマネージメントクラスタ(およびその配下のワークロードクラスタ)にアクセスできるマシン上で、コンテキストを取得してkubectl コマンドを利用しました。「TKGコマンドでアクセスできないが、ワーカーノードは利用したい」といった場合は、tkg コマンドを使える操作端末でワークロードクラスタへのアクセス情報が書かれた kubeconfig というファイルを「–export-file」オプションで書き出し、そのファイルを目的のマシンに送付してアクセスに利用します。
ワークロードクラスタへのアクセス方法の詳細は以下のドキュメントの「Obtain Tanzu Kubernetes Cluster Credentials」を参照ください。
Connect to and Examine Tanzu Kubernetes Clusters
kubeconfigファイルを使ったK8sクラスタへのアクセス方法は以下のK8s公式ドキュメントを参照ください。
モジュール3のワークロードクラスタ操作は以上となります。HOL のオリジナルのシナリオでは第3章は続きますが、以後は Octant というツールの利用法になります。この記事のトピックとそぐわない内容ですので割愛します。
TKG CLIの操作概念
ここまで扱った内容をベースに TKG コマンドの操作を概念図にまとめます。
まず、TKG CLI を使うことで図の左下のようにマネージメントクラスタを操作することができます。これに加えて、マネージメントクラスタの作成も TKG コマンドでおこなえますが、オプションが難しいため慣れるまでは第4回で紹介予定の GUI を用いたインストールをおすすめします。同様にマネージメントクラスタの削除も TKG CLI で実施可能です。
次に TKG CLI は図の左上にあるようにワークロードクラスタのライフサイクル管理機能を提供しています。作成から破棄されるまで、ひととおりのクラスタ自体に対する管理を実現できます。
そして TKG CLI には kubectl へクラスタのコンテキストを提供する機能もあるので、実際の K8s クラスタ上の操作は VMware に依存しない標準的な手法で実現できます。誰がクラスタにアクセスできるかということを「誰にコンテキストを渡すか」として管理してもよいのですが、より厳密に「誰がどのクラスタで何をできるか」といった管理が必要であれば Tanzu スタンダード版ライセンスに付属する Tanzu Mission Control (TMC) という製品を使うと簡単に実現できます。
TKG コマンドの一覧は以下のドキュメントにあり、そこから各コマンドごとに詳細なドキュメントにリンクされています。
Tanzu Kubernetes Grid CLI Reference
以上でこの記事を終えます。第3回はワークロードクラスタにたいしてマイクロサービスのアプリを展開するというハンズオンを HOL 環境でおこないます。ご拝読ありがとうございました。