始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Create Namespaces
/ 10
Access Control in Namespaces
/ 25
Resource Quotas
/ 25
Monitoring GKE and GKE Usage Metering
/ 40
Create Namespaces
/ 10
Access Control in Namespaces
/ 25
Resource Quotas
/ 25
Monitoring GKE and GKE Usage Metering
/ 40
Google Kubernetes Engine(GKE)クラスタの基盤となる Google Cloud インフラストラクチャのコスト最適化を検討する際、重要なポイントは課金対象リソースの効果的な運用です。ユーザーまたはチームとクラスタを 1対 1 で割り当ててしまったばかりに、クラスタが乱立してしまったというのは、よくある手違いです。
マルチテナンシー クラスタを利用すれば、複数のユーザーやチームが 1 つのクラスタを共有し、厳密な分離と公平なリソース共有を実現しながら複数のワークロードを同時実行することができます。これは、Namespace を作成し、同じ物理クラスタ上に複数の仮想クラスタを存在させることにより実現できます。
このラボでは、複数の Namespace を使用してマルチテナント クラスタを構築し、リソースの使用を最適化することで、結果的にコストを最適化する方法を学びます。
このラボでは、次の方法について学びます。
こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 左側の [ラボの詳細] ペインには、以下が表示されます。
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。
ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
[ラボの詳細] ペインでもユーザー名を確認できます。
[次へ] をクリックします。
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
[ラボの詳細] ペインでもパスワードを確認できます。
[次へ] をクリックします。
その後次のように進みます。
その後、このタブで Google Cloud コンソールが開きます。
[ラボを開始]
ボタンをクリックすると、「ラボ用のリソースをプロビジョニングしています」という青色のメッセージと残り時間の目安が表示されます。これにより、マルチテナント
クラスタの管理をテストするための環境が作成、構成されます。約 5
分で、クラスタが作成され、BigQuery
データセットがコピーされ、各チームを表すサービス アカウントが生成されます。
このメッセージは、プロビジョニングが完了すると消えます。
このスタートアップ プロセスが完了し、メッセージが消えるのを待ってから、ラボを進めてください。
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン をクリックします。
ウィンドウで次の操作を行います。
接続した時点で認証が完了しており、プロジェクトに各自の Project_ID、
gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
出力:
出力:
gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
yaml ファイルを使用して Kubernetes
クラスタを構成します。Cloud Shell で、これらのファイルを Cloud Storage
バケットからダウンロードします。
gke-qwiklab に変更します。multi-tenant-cluster を認証します。
Kubernetes クラスタには、システムの Namespace がデフォルトで 4 つあります。
出力は次のようになります。
すべてのリソースが Namespace に属するわけではありません。たとえば、ノード、永続ボリューム、Namespace 自体は Namespace に属しません。
Namespace を指定してリソースを作成する場合、Namespace
との関連付けが必要です。関連付けを行うには、--namespace
フラグを含めるか、yaml のメタデータ フィールドで Namespace
を指定します。
kubectl get サブコマンドで Namespace を指定すると、その
Namespace のリソースを表示できます。次に例を示します。
これにより、kube-system Namespace 内のすべての Service
が出力されます。
team-a 用と team-b 用の 2 つの Namespace
を作成します。
kubectl get namespace を実行すると、出力に 2 つの新しい Namespace
が含まれているはずです。
--namespace タグを指定すると、指定された Namespace にクラスタ
リソースを作成できます。Deployment や Pod などのリソースの名前は、それぞれの
Namespace 内で一意であれば問題ありません。
kubectl get pods -A を実行すると、app-server
という名前の Pod が各 team の Namespace に 1 つずつ、合わせて 2
つあることがわかります。
出力:
[進行状況を確認]
をクリックして、上記のタスクを実行したことを確認します。
kubectl describe を実行すると、新しく作成された各 Pod
の詳細を確認できます。
--namespace フラグを使用するのではなく、次のように
kubectl コンテキストで一度設定すれば済みます。
--namespace
フラグを使用しなくても、指定されている Namespace に対して実行されます。
次のセクションでは、クラスタを整理できるように、Namespace にロールベース アクセス制御を構成します。
クラスタ内の Namespace が指定されたリソースへのアクセスをプロビジョニングするには、IAM ロールと Kubernetes に組み込みのロールベース アクセス制御(RBAC)を組み合わせて行います。IAM ロールはアカウントにプロジェクトへの初期アクセスを許可するのに対し、RBAC 権限はクラスタの Namespace が指定されたリソース(Pod、Deployment、Service など)へのきめ細かなアクセスを可能にします。
Kubernetes のアクセス制御を管理する際は、Identity and Access Management(IAM)を使用して、より上位の組織やプロジェクトのレベルでアクセスと権限を管理します。
IAM には、GKE でのアクセスレベルを管理するためにユーザーとサービス アカウントに割り当てることができる、いくつかのロールが用意されています。RBAC のきめ細かい権限は、IAM によって提供されているアクセス権を下地としたものであり、IAM によるアクセス権を制限することはできません。そのため、Namespace が指定されたマルチテナント クラスタでは、IAM ロールによって付与されるアクセス権を最小限にとどめる必要があります。
以下は、割り当て可能な一般的な GKE の IAM ロールの一覧です。
| ロール | 説明 |
|---|---|
|
Kubernetes Engine 管理者 |
クラスタとその Kubernetes API オブジェクトを完全に管理するためのアクセス権を付与します。このロールを持つユーザーは、任意のクラスタとその Namespace に含まれるすべてのリソースを作成、編集、削除できます。 |
|
Kubernetes Engine 開発者 |
クラスタ内の Kubernetes API オブジェクトへのアクセス権を付与します。このロールを持つユーザーは、任意のクラスタとその Namespace に含まれるリソースを作成、編集、削除できます。 |
|
Kubernetes Engine クラスタ管理者 |
クラスタを管理するためのアクセス権を付与します。このロールを持つユーザーは、クラスタまたはその Namespace に含まれるリソースを直接作成、編集することはできませんが、任意のクラスタを作成、編集、削除することができます。 |
|
Kubernetes Engine 閲覧者 |
GKE リソースへの読み取り専用アクセス権を付与します。このロールを持つユーザーには、Namespace とそのリソースへの読み取り専用アクセス権があります。 |
|
Kubernetes Engine クラスタ閲覧者 |
GKE クラスタの取得とリスト取得のアクセス権。これは、クラスタの Namespace 内のリソースにアクセスする必要があるユーザーに必要な最小限のロールです。 |
これらのロールのほとんどでは RBAC で制限できない過剰なアクセス権が付与されますが、Kubernetes Engine クラスタ閲覧者の IAM ロールでは、クラスタと Namespace が指定されたリソースにアクセスするのに必要十分な権限のみがユーザーに付与されます。
ラボのプロジェクトには、team-a Namespace
を使用する開発者を表すサービス アカウントがあります。
クラスタ内では、すべてのリソースタイプ(Pod、Service、Deployment など)へのアクセスは、ロールまたはクラスタロールのいずれかによって定義されます。Namespace にスコープを設定できるのは、ロールだけです。ロールは、リソースと各リソースで許可されるアクションを示し、ロール バインディングは、そのアクセス権をどのユーザー アカウントまたはグループに割り当てるかを示します。
現在の Namespace にロールを作成するには、リソースタイプと、許可されるアクションのタイプを示す verb を指定します。
kubectl create
で次のように作成できます。
複数のルールを持つロールは、yaml
ファイルを使用して作成できます。ラボで先ほどダウンロードしたファイルの中にサンプル
ファイルがあります。
yaml ファイルを調べます。出力例:
[進行状況を確認]
をクリックして、上記のタスクを実行したことを確認します。
Cloud Shell で、[+]
をクリックしてターミナルに新しいタブを開きます。
ここで、次のコマンドを実行してサービス アカウントを有効にします。これにより、そのアカウントとしてコマンドを実行できるようになります。
出力:
出力:
最初の Cloud Shell タブに戻るか、新しいタブを開きます。
クラスタの認証情報を更新し、コンテキストを team-a Namespace にリセットします。
マルチテナント環境でクラスタを共有する場合、ユーザーが割り当てられた以上のクラスタ リソースを使えないように管理することが重要です。リソース割り当てオブジェクト(ResourceQuota)は、Namespace でのリソースの使用量を制限する制約を定義します。リソースの割り当てでは、オブジェクト(Pod、Service、StatefulSet など)の数、ストレージ リソース(永続ボリュームの要求、エフェメラル ストレージ、ストレージ クラス)の合計数、コンピューティング リソース(CPU とメモリ)の合計数の上限を指定できます。
team-a Namespace
で許可される Pod の数を 2 つに、ロードバランサの数を 1 つに制限できます。
次のようなエラーが表示されるはずです。
kubectl describe で確認できます。
出力:
ここでは、リソースの割り当てが設定されているリソースの一覧、各リソースに設定されたハードリミット、現在の使用数が表示されています。
test-quota を更新し、Pod 数の上限を 6
つに設定します。
これにより、割り当てを更新するために kubectl で使用する
yaml ファイルを編集できるようになります。spec
の下にある count/pods が絶対的な割り当て値です。
count/pods の値を 6 に変更します。
次のコマンドを実行すると、更新された割り当てが出力に反映されているはずです。
出力:
CPU とメモリの割り当て
CPU とメモリの割り当てを設定する際には、リクエストの合計(コンテナにおいて必ず取得できる値)の割り当て、または上限の合計(コンテナにおいて超えることができない値)の割り当てを指定できます。
このラボで使用するクラスタには、4 つの e2-standard-2 マシンがあり、それぞれに 2 つのコアと 8 GB のメモリがあります。クラスタのリソースの割り当てを定義するサンプルの yaml ファイルが提供されています。
cpu-mem-quota.yaml
この割り当てを設定すると、すべての Pod の CPU とメモリのリクエストの合計がそれぞれ 2 CPU と 8 GiB に制限され、各上限が 4 CPU と 12 GiB に制限されます。
cpu-mem-demo-pod.yaml
を使用して新しい Pod を作成します。
cpu-mem-demo-pod.yaml:
出力:
[進行状況を確認]
をクリックして、上記のタスクを実行したことを確認します。
多くのマルチテナント クラスタでは、各テナントのワークロードとリソースの要件が変化し、リソース割り当ての調整が必要になることがよくあります。Monitoring を使えば、各 Namespace が使用しているリソースの全体像を把握することができます。
GKE 使用状況測定を使えば、リソースの使用状況をより詳細に把握し、その結果、各テナントに関連するコストをより正確に把握できます。
Monitoring のダッシュボード
プロジェクトのワークスペースが構築されるまでしばらく待ちます。
[GKE ダッシュボード] には、CPU、メモリ、ディスクの各使用率をいくつかのリソース別に集計した結果を示す複数の表が表示されます。
たとえば、[Namespace] の表には、クラスタの各 Namespace での使用状況が表示されます。
また、[ワークロード] 表にも、クラスタ上で実行されているワークロードでの使用状況データが表示されます。
[すべて表示] をクリックします。
[フィルタを追加] ボックスで [Namespace] >
[team-a] を選択します。
[適用] をクリックします。
これにより、ワークロードがフィルタされ、team-a Namespace 上で実行されているワークロードのみが表示されます。
Metrics Explorer
左側のペインで [Metrics Explorer] を選択します。
[指標を選択] フィールドで、[指標] プルダウンをクリックします。
[リソース名または指標名でフィルタ] に「Kubernetes Container」と入力します。
[Kubernetes Container] > [Container] の順にクリックします。
[CPU 使用時間] を選択します。
[適用] をクリックします。
kube-system Namespace を除外するには、[フィルタ] セクションで [フィルタを追加] をクリックします。
ラベルとして [namespace_name] を選択します。
比較法として !=(次と等しくない)、値として
kube-system を選択します。
次に、[集計] プルダウンで [Sum] を選択し、[by] プルダウンで [namespace_name] を選択して [OK] をクリックします。
これにより、コンテナの CPU 使用時間を Namespace 別に示したグラフが表示されます。
GKE 使用状況測定
GKE 使用状況測定では、GKE クラスタのリソースの使用率と使用量を BigQuery データセットにエクスポートし、Data Studio を使用して可視化できます。これにより、リソースの使用状況をより詳細に把握できます。使用状況測定を使用することで、リソースの割り当てや効率的なクラスタ構成について、より多くの情報に基づいた決定を行うことができます。
次の 2 つのデータセットがプロジェクトに追加されています。
cluster_dataset - クラスタ上で GKE 使用状況測定を有効にする前に手動で作成されたデータセットです。このデータセットには、GKE によって生成された 2 つのテーブル(gke_cluster_resource_consumption と gke_cluster_resource_usage)が含まれており、クラスタの使用状況の指標をもとに継続的に更新されます。
billing_dataset - 課金用に BigQuery Export を有効にする前に手動で作成されたデータセットです。このデータセットには 1 つのテーブル(gcp_billing_export_v1_xxxx)が含まれており、プロジェクトの 1 日あたりの費用をもとに毎日更新されます。
cluster_dataset を指定します。
cost_breakdown
テーブルは、プロジェクト内の課金テーブルとリソース使用量テーブルから生成できます。このテーブルは、usage_metering_query_template.sql
ファイルを使用してクラスタ データセット内で生成します。このテンプレートは、クラスタ リソースの使用方法についてで入手できます。
まず、Cloud Shell でいくつかの環境変数を設定します。
version_info を Cloud Shell に貼り付けます。
その後、転送構成が正常に作成されたことを示すメッセージが表示されます。
新しいデータソースを追加するには、左上の [作成] > [データソース] をクリックします。
最初に、[まず、アカウントの設定を完了します] のウィンドウが表示されます。
国を選択し、会社名を入力します。利用規約に同意するチェックボックスをオンにして、[続行] をクリックします。
これは一時的なラボ / アカウントなので、[どの更新情報を受け取るかを選択します] の各項目では [いいえ] を選択します。
[続行] をクリックします。
Data Studio が対応している Google コネクタのリストが表示されます。
[承認] ボタンをクリックして、Data Studio が BigQuery プロジェクトにアクセスできるようにします。
ページの左上で、データソースの名前を [無題のデータソース]
から「GKE 使用状況」に変更します。
最初の列で、[カスタムクエリ] を選択します。
プロジェクト列で、ご利用のプロジェクト ID を選択します。
[カスタムクエリを入力] ボックスに以下のクエリを入力し、[PROJECT-ID]
を Qwiklabs のプロジェクト ID に置き換えます。
[進行状況を確認]
をクリックして、上記のタスクを実行したことを確認します。
データソースが追加されたので、それを使ってレポートを作成してみましょう。
データソースから新しいレポートを作成する際に、レポートへのデータの追加を求めるメッセージが表示されます。
レポートでは、BigQuery テーブルに基づいて、データソースから使用状況の指標を可視化できます。
次のようなシンプルな表から始めます。
この表を、Namespace ごとの費用内訳を表示するように構成します。表を選択すると、関連するデータが右側のパネルに表示されます。
usage_start_time
namespace
cost
他のフィールドはデフォルト値のままにしておきます。
表に表示されるデータを、Namespace が指定されたリソースのものに制限するには、フィルタを適用します。
[保存] をクリックします。
[フィルタを追加] をもう一度クリックし、[フィルタを作成] をクリックして、データを request に制限する 2 つ目のフィルタを作成します。
次に、Namespace ごとの費用内訳を示す円グラフをレポートに追加します。
作成した表を右クリックし、[複製] を選択します。
複製した表オブジェクトをレポートの任意の場所にドラッグします。
次に、構成パネルの [グラフの種類] ヘッダーをクリックします。
表示される円グラフは次のようになります。
次に、リソースタイプ別に費用内訳を表示するドーナツグラフを追加します。
上部ツールバーの [グラフを追加] をクリックし、(ドーナツグラフ)を選択してドーナツグラフを作成します。
グラフをレポートの任意の場所にドラッグし、以下のように構成します。
usage_start_time
resource_name
cost
Namespace 別の内訳を追加するには、[コントロールを追加] をクリックして、[プルダウン リスト] を選択します。
ドーナツグラフの横にドラッグし、以下のように設定します。
usage_start_time
namespace
None
[フィルタを追加] をクリックします。
リストから [unallocated (namespace filter)] を選択します。
コントロールをドーナツグラフに対してのみ有効にするには、セレクタ カーソルを使ってコントロール オブジェクトとドーナツグラフの両方を選択し、両方のオブジェクトを囲むように四角形を描きます。
右クリックして [グループ] を選択し、これらのオブジェクトをグループ化します。
表示モードでは、ドーナツグラフの表示を特定の Namespace のものに絞ることができます。
Namespace を利用して、クラスタをマルチテナントとして構成すれば、リソースの過少利用やクラスタの乱立といったリスクを最小限に抑え、追加コストの発生を回避できます。また、Monitoring と GKE 使用状況測定を使用することで、Namespace ごとのリソース使用率を可視化し、リソースの割り当てやクラスタ構成について十分な情報に基づいた決定を行うことができます。
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2026 年 3 月 18 日
ラボの最終テスト日: 2026 年 3 月 18 日
Copyright 2026 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください
ラボを開始するには、この簡単な手順を完了してください。