Uncategorized Tanzu

TKG 1.3: ワークロードクラスタのライフサイクル管理

はじめまして。VMware の伊藤です。Tanzu 製品のプラットフォームアーキテクトとして働いており、開発と運用双方の経験があります。この記事では TKG のマネージメントクラスタ(管理用クラスタ)を使って、アプリを動かすワークロードクラスタのライフサイクル管理の方法を紹介します。

この記事の内容はすでに TKG (Tanzu Kubernetes Grid)のマネージメントクラスタが構築されていることを想定しています。もし構築されていない場合は以下の記事などをご参照ください。こちらで TKG の概要も解説しています。

vSphere環境への TKG 1.3.0 with NSX-ALB の簡易展開手順

 

VMware のマルチクラウド向け k8s 製品である TKG は、以下の図のような構成となっています。

まず、物理インフラとしての IaaS があり、オンプレミスの vSphere やパブリッククラウドなどが該当します。この IaaS 基盤のうえに k8s を管理するための基盤である TKG マネージメントクラスタを構築します。このマネージメントクラスタを操作することで、実際にアプリケーションを動かすワークロードクラスタを複数運用します。

ポイントとなるのは、作成/変更/削除の操作が予想されるワークロードクラスタを開発者や運用者が直接的に構築管理するのではなく、マネージメントクラスタに面倒な作業を代替してもらうという点です。これをしないと各クラスタごとに Linux を直接操作してクラスタ構築や維持管理する必要が発生します。

 

ワークロードクラスタの操作概要

ワークロードクラスタの操作概念は難しくなく、以下の図のようなものとなります。

まず、利用者や運用者は Windows なり Mac なりを使っているとします。このユーザーマシンで直接ワークロードクラスタを操作できるようにもできますが、マネージメントクラスタを構築した bootstrap マシン(一般的には Linux)が操作端末としての設定が施されているので SSH 接続します。その bootstrap マシンで「Tanzu CLI」を使うことによりワークロードクラスタを操作できます。

図にあるように bootstrap マシンは複数のマネージメントクラスタを操作することができますので、まず使いたいマネージメントクラスタを選択します。ただ、多くのユーザーは「1つの bootstrap マシンにつき、1つのマネージメントクラスタ」として運用しているので、この選択は通常不要です。

マネージメントクラスタを選択すると、その配下のワークロードクラスタを作成/更新/破棄することを Tanzu CLI で実施します。

 

後ほど各操作について解説しますが、Tanzu CLI によるワークロードクラスタ操作の全体像は以下の図のようになります。

操作の流れとしては、おおよそ

  1. ワークロードクラスタの作成
  2. ワークロードクラスタのコンテキストの取得。そして k8s としての利用
  3. (任意)ワークロードクラスタの基盤構成変更
  4. ワークロードクラスタの破棄

となります。

 

ワークロードクラスタの作成

ワークロードクラスタの利用は作成することから開始されます。作成方法にはいくつかの手法がありますが、主流は以下の流れです。

  • マネージメントクラスタなどの設定ファイルをコピー
  • コピーした設定ファイルの内容を更新し、ワークロードクラスタ用の設定にする
  • Tanzu CLI で設定ファイルの構成でワークロードクラスタを作成

以下に簡単な構築サンプル図を記載します。

 

上記のマネージメントクラスタの設定ファイルは Bootstrap マシンの「~/.tanzu/tkg/clusterconfigs」にありますが、ファイル名はランダムとなります。ただ、最初のマネージメントクラスタの構築直後だとファイルが1つしかないので、すぐに見つけられるはずです。仮に複数のファイルがある場合は「ls -l」コマンドなどでファイルの作成時刻や、そのファイルの中身(クラスタ名)などから特定してください。

この設定ファイルをコピーしてワークロードクラスタの設定ファイルを作成します。ワークロードクラスタの名前のファイル名(上記では  mycluster.yml)などとするのが分かりやすくてよいでしょう。

このファイルを編集してワークロードクラスタの設定を作成します。最低限の設定は「CLUSTER_NAME : クラスタ名」と「VSPHERE_CONTROL_PLANE_ENDPOINT : k8sの代表IP(vSphere上に構築した場合)」となりますが、構築するマシンをどのネットワークに作成するかや、リソースプール、マシンのスペックや台数なども調整できます。変更しなかった項目はマネージメントクラスタの設定がそのまま入っていますので、マネージメントクラスタと同じ構成で作成されます。

ワークロードクラスタの設定ファイルが作成できたら、「tanzu cluster create -f <設定ファイル>」コマンドでワークロードクラスタの作成を開始します。構築する IaaS 基盤のスペックや、構築するワークロードクラスタのサイズにもよりますが、5-10分ほどでワークロードクラスタの構築は完了します。

詳細は以下のドキュメントをご参照ください

Deploy Tanzu Kubernetes Clusters

 

ワークロードクラスタの利用

ワークロードクラスタの利用法は一般的な k8s と全く変わらず、kubectl を利用します。TKG のワークロードクラスタはサービスのロードバランサーや共有ストレージが最初から使えるという特徴はありますが、ほとんどバニラ(OSS)の k8s と利用勝手は同じで癖があまりありません。kubectl を使うには、その対象クラスタのコンテキスト(kubeconfig)が必要ですので、ここでは kubeconfig の取得方法を紹介します。

作成したワークロードクラスタのコンテキストを取得するには、作成したマネージメントクラスタにたいして Tanzu CLI でコンテキストをファイル出力させます。そのコンテキストファイルを操作したいマシンに移して使うことで、ワークロードクラスタを操作できます。

このサンプルでは「kubectl get nodes」を実施していますが、同様にアプリの展開なども実施できます。

このコンテキストファイルは「認証あり(利用時にログインが求められる)」と「認証なし(コンテキストがあればクラスタのadmin権限を持つ)」がありますが、詳しい話は以下などをご参照ください。今回は「–admin」オプションで認証なしとしています。

TKG1.3: ユーザー認証機能(LDAP編)

なお、認証周りを Tanzu の管理 SaaS である TMC に任せることも可能です。大規模利用の場合は TMC のほうが管理効率がよいので利用を推奨します。

Tanzuコマンドによるコンテキスト取得の詳細については以下のドキュメントをご参照ください。

Connect to and Examine Tanzu Kubernetes Clusters

 

ワークロードクラスタの変更

ワークロードクラスタの変更操作はいくつかありますが、代表的なものは以下の3つです。

  • スケールアウト(ノード台数の増加/縮小)
  • スケールアップ(ノードのスペック向上/低下)
  • k8s のバージョンアップ

ここでは最もよく使うスケールアウトの利用法を紹介します。

スケールアウトの利用法も非常にシンプルで、「tanzu cluster scale コマンドでマスターとワーカーの台数を指定する」というだけです。以下に操作サンプルを記載します。

ここでは mycluster というワークロードクラスタを指定して、ワーカーノードを3に増やしています。今回の例ですと、おおよそ3分程度で増強は終わっています。この操作の裏では「仮想マシンの作成、k8sの設定、ワークロードクラスタへの参加」といった作業がされていますが、それらは全て利用者からは隠蔽されています。

 

これと同じように「tanzu cluster upgrade」コマンドでクラスタのアップグレードができます。多くのユーザーは常にインストールした TKG がサポートする最新版の k8s のバージョンを使うでしょうから、あまりアップデートの機会は多くないと思います。アップグレードが必要なシナリオでは、k8sのアップグレードの前に TKG 自体のアップグレードがあるのが一般的です。

このワークロードクラスタでは最新版の k8s をいれてしまったので、以下にアップグレード作業の仕組みを記載した図をのせます。重要なのは「1ノードずつローリング形式でアップグレードするので、クラスタとしてダウンは発生しない」ということです。ただ、 VMware に限らない話となりますが、コンテナがノード間を動くタイミングでは裏では「コンテナの破棄と新規作成」がされています。正しいコンテナの設計をしていれば問題ないでしょうが、注意してください。

ワークロードクラスタの構成変更の詳細は以下のドキュメントをご参照ください。

 

ワークロードクラスタの削除

利用が終わったワークロードクラスタはリソース開放のために破棄します。これも Tanzu CLI で「tanzu cluster delete <クラスタ名>」コマンドで実施します。以下にサンプルを記載します。

ワークロードクラスタの破棄をすると、クラスタが使っていた仮想マシン(ノード)やストレージ(PV)、ネットワーク(ロードバランサーのIP)などのリソースは開放されます。

詳細は以下のドキュメントをご参照ください。

Delete Tanzu Kubernetes Clusters

 

以上で TKG のワークロードクラスタのライフサイクル管理の紹介を終えます。同様の操作を OSS で実施することや、様々な IaaS 基盤で様々な k8s の管理ツールを併用することに比べると、TKG の「様々な IaaS でも Tanzu CLI で k8s 環境のライフサイクル管理が実現できる」ことの利便性を感じていただければ幸いです。