Create a private cluster

進行状況を確認

/ 10

Create a VM instance

進行状況を確認

/ 10

Authorize your external address range

進行状況を確認

/ 20

Delete the Kubernetes cluster

進行状況を確認

/ 20

Create a subnetwork and secondary ranges in us-central1 region

進行状況を確認

/ 10

Create a private cluster that uses your subnetwork

進行状況を確認

/ 10

Authorize your external address range for private cluster in custom subnetwork

進行状況を確認

/ 20

このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。

GSP178

Google Cloud セルフペース ラボ

概要

Kubernetes Engine におけるプライベート クラスタとは、公共のインターネットからマスターにアクセスできないようにするクラスタのことです。プライベート クラスタのノードにはプライベート アドレスのみが指定されている(パブリック IP アドレスが指定されていない)ため、隔離された環境でワークロードが実行されます。ノードとマスターは、VPC ピアリングを使用して相互に通信します。

Kubernetes Engine API では、アドレス範囲がクラスレス ドメイン間ルーティング(CIDR)ブロックとして表されます。

このラボでは、プライベート Kubernetes クラスタを作成する方法を学びます。

演習内容

  • プライベート Kubernetes クラスタを作成します。

前提条件

  • Kubernetes クラスタの作成と起動の経験があり、CIDR 範囲での IP アドレス指定について熟知している必要があります。

設定と要件

[ラボを開始] ボタンをクリックする前に

こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。

このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。

このラボを完了するためには、下記が必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モード(推奨)またはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生しないようにすることができます。
  • ラボを完了するための時間(開始後は一時停止できません)
注: このラボでは、受講者アカウントのみを使用してください。別の Google Cloud アカウントを使用すると、そのアカウントに料金が発生する可能性があります。

ラボを開始して Google Cloud コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 右側の [ラボの設定とアクセス] パネルには、以下が表示されます。

    • [Google Cloud コンソールを開く] ボタン
    • このラボで使用する一時的な認証情報(ユーザー名とパスワード)
    • このラボを行うために必要なその他の情報(ある場合)

    ラボのタイマーはページの上部に表示され、残り時間が示されます。

  2. [Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。

    ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

    注: [アカウントの選択] ダイアログが表示された場合は、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。

    {{{user_0.username | "Username"}}}

    [ラボの設定とアクセス] パネルでもユーザー名を確認できます。

  4. [次へ] をクリックします。

  5. 以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。

    {{{user_0.password | "Password"}}}

    [ラボの設定とアクセス] パネルでもパスワードを確認できます。

  6. [次へ] をクリックします。

    重要: ラボで指定された認証情報を使用する必要があります。ご自身の Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  7. その後のページはクリックして先に進みます。

    • 利用規約に同意します。
    • 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルには登録しないでください。

しばらくすると、このタブで Google Cloud コンソールが開きます。

注: Google Cloud のプロダクトやサービスにアクセスするには、ナビゲーション メニューをクリックするか、[検索] フィールドにサービス名またはプロダクト名を入力します。 ナビゲーション メニューのアイコンと検索フィールド

Cloud Shell をアクティブにする

Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。

  1. Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン 「Cloud Shell をアクティブにする」アイコン をクリックします。

  2. ウィンドウで次の操作を行います。

    • Cloud Shell 情報ウィンドウで操作を進めます。
    • Cloud Shell が認証情報を使用して Google Cloud API を呼び出すことを承認します。

接続した時点で認証が完了しており、プロジェクトに各自の Project_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。

  1. (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
  1. [承認] をクリックします。

出力:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project

出力:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注: Google Cloud における gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。

タスク 1. リージョンとゾーンを設定する

  1. このラボのプロジェクト リージョンを設定します。
gcloud config set compute/zone {{{project_0.default_zone | "Zone"}}}
  1. リージョンの変数を作成します。
export REGION={{{project_0.default_region | Region}}}
  1. ゾーンの変数を作成します。
export ZONE={{{project_0.default_zone | Zone}}}

詳しくは、リージョンとゾーンのドキュメントをご確認ください。

注: 自分のマシンで gcloud を実行する場合は、セッション間で config 設定が維持されますが、Cloud Shell で実行する場合はセッションごと、または再接続するたびに設定し直す必要があります。

タスク 2. プライベート クラスタを作成する

  1. プライベート クラスタを作成する場合、Kubernetes のマスター コンポーネントを実行する VM の /28 CIDR の範囲を指定し、IP エイリアスを有効にする必要があります。

次に、private-cluster という名前のクラスタを作成し、マスターに対して CIDR の範囲を 172.16.0.16/28 と指定します。IP エイリアスを有効にすると、Kubernetes Engine が自動的にサブネットワークを作成します。

--private-cluster--master-ipv4-cidr--enable-ip-alias の各フラグを使用してプライベート クラスタを作成します。

  1. 次のコマンドを実行してクラスタを作成します。
gcloud beta container clusters create private-cluster \ --enable-private-nodes \ --master-ipv4-cidr 172.16.0.16/28 \ --enable-ip-alias \ --create-subnetwork ""

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。プライベート クラスタが正常に作成されている場合は、評価スコアが表示されます。

プライベート クラスタを作成する

タスク 3. サブネットとセカンダリ アドレス範囲を表示する

  1. デフォルト ネットワークのサブネットを一覧表示します。
gcloud compute networks subnets list --network default
  1. 出力で、クラスタに対して自動的に作成されたサブネットワークの名前を確認します(gke-private-cluster-subnet-xxxxxxxx のようになっています)。次のステップで使用するため、クラスタの名前を保存しておきます。

  2. 次に自動的に作成されたサブネットの情報を取得します。次のコマンドの [SUBNET_NAME] の部分を対象のサブネット名に置き換えて実行します。

gcloud compute networks subnets describe [SUBNET_NAME] --region=$REGION

出力には、プライマリ アドレス範囲と GKE のプライベート クラスタの名前、セカンダリ範囲が表示されます。

... ipCidrRange: 10.0.0.0/22 kind: compute#subnetwork name: gke-private-cluster-subnet-163e3c97 ... privateIpGoogleAccess: true ... secondaryIpRanges: - ipCidrRange: 10.40.0.0/14 rangeName: gke-private-cluster-pods-163e3c97 - ipCidrRange: 10.0.16.0/20 rangeName: gke-private-cluster-services-163e3c97 ...

出力から、セカンダリ範囲の 1 つ目が Pod 用で、2 つ目が Service 用であることがわかります。

privateIPGoogleAccesstrue に設定されていることに注意してください。これにより、プライベート IP アドレスだけが指定されているクラスタホストが、Google API やサービスと通信できるようになります。

タスク 4. マスター承認済みネットワークを有効にする

現時点で、マスターにアクセスできる IP アドレスは、次の範囲のアドレスだけです。

  • サブネットワークのプライマリ範囲(ノードに使用される範囲)。
  • サブネットワークのセカンダリ範囲(ポッドに使用される)。

追加でマスターにアクセスできるようにするには、選択したアドレス範囲を承認する必要があります。

VM インスタンスを作成する

  1. Kubernetes クラスタへの接続を確認するために使用するソース インスタンスを作成します。
gcloud compute instances create source-instance --zone=$ZONE --scopes 'https://www.googleapis.com/auth/cloud-platform'

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。VM インスタンスが正常に作成されている場合は、評価スコアが表示されます。

VM インスタンスを作成する
  1. 次のコマンドを実行して、source-instance<External_IP> を取得します。
gcloud compute instances describe source-instance --zone=$ZONE | grep natIP

出力例:

natIP: 35.192.107.237
  1. 後のステップで使用するために、<nat_IP> アドレスをコピーして保存しておきます。

  2. 次のコマンドを実行して、外部アドレス範囲を承認します。[MY_EXTERNAL_RANGE] の部分は、前の出力で取得した外部アドレスの CIDR の範囲(natIP/32)に置き換えます。CIDR の範囲を natIP/32 にすると、1 つの具体的な IP アドレスが許可リストに登録されます。

gcloud container clusters update private-cluster \ --enable-master-authorized-networks \ --master-authorized-networks [MY_EXTERNAL_RANGE] 注: 本番環境では、[MY_EXTERNAL_RANGE] の部分を該当するネットワーク外部アドレスの CIDR の範囲に置き替えます。

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。外部アドレス範囲が正常に承認された場合は、評価スコアが表示されます。

外部アドレス範囲を承認する

これで外部アドレスの範囲からマスターにアクセスできるようになったので、今度は kubectl をインストールしてクラスタの情報を取得します。たとえば、kubectl を使用すると、ノードに外部 IP アドレスが指定されていないことを確認できます。

  1. 次のコマンドを実行して source-instance に SSH 接続します。
gcloud compute ssh source-instance --zone=$ZONE
  1. Y を押して続行します。パスフレーズの質問に対する回答を入力して Enter キーを押します。

  2. SSH シェルで、Cloud SDK の kubectl コンポーネントをインストールします。

sudo apt-get install kubectl
  1. 次のコマンドを実行して、SSH シェルから Kubernetes クラスタへのアクセスを構成します。
sudo apt-get install google-cloud-sdk-gke-gcloud-auth-plugin gcloud container clusters get-credentials private-cluster --zone=$ZONE 注: 割り当てられたゾーンが ZONE 変数でエクスポートされていることを確認してください。エクスポートされていない場合は、次のコマンドを実行します: export ZONE=
  1. クラスタノードに外部 IP アドレスが指定されていないことを確認します。
kubectl get nodes --output yaml | grep -A4 addresses

出力から、ノードには内部 IP アドレスが割り当てられていて、外部アドレスは割り当てられていないことがわかります。

... addresses: - address: 10.0.0.4 type: InternalIP - address: "" type: ExternalIP ...
  1. 次のコマンドでも、ノードに外部 IP アドレスが指定されていないことを確認できます。
kubectl get nodes --output wide

出力では EXTERNAL-IP が空白の列になっています。

STATUS ... VERSION EXTERNAL-IP OS-IMAGE ... Ready v1.8.7-gke.1 Container-Optimized OS from Google Ready v1.8.7-gke.1 Container-Optimized OS from Google Ready v1.8.7-gke.1 Container-Optimized OS from Google
  1. 次のコマンドを入力して SSH シェルを閉じます。
exit

タスク 5. クリーンアップ

  1. Kubernetes クラスタを削除します。
gcloud container clusters delete private-cluster --zone=$ZONE
  1. Y を押して続行します。

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。Kubernetes クラスタが正常に削除された場合は、評価スコアが表示されます。

Kubernetes クラスタを削除する

タスク 6. カスタム サブネットワークを使用するプライベート クラスタを作成する

前のセクションでは、Kubernetes Engine によって自動的にサブネットワークが作成されました。このセクションでは、独自のカスタム サブネットワークを作成し、プライベート クラスタを作成します。 このサブネットワークは、プライマリ アドレス範囲と 2 つのセカンダリ アドレス範囲を持ちます。

  1. サブネットワークとセカンダリ範囲を作成します。
gcloud compute networks subnets create my-subnet \ --network default \ --range 10.0.4.0/22 \ --enable-private-ip-google-access \ --region=$REGION \ --secondary-range my-svc-range=10.0.32.0/20,my-pod-range=10.4.0.0/14

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。 リージョンにサブネットワークとセカンダリ範囲が正常に作成されている場合は、評価スコアが表示されます。

リージョンにサブネットワークとセカンダリ範囲を作成する
  1. サブネットワークを使用するプライベート クラスタを作成します。
gcloud beta container clusters create private-cluster2 \ --enable-private-nodes \ --enable-ip-alias \ --master-ipv4-cidr 172.16.0.32/28 \ --subnetwork my-subnet \ --services-secondary-range-name my-svc-range \ --cluster-secondary-range-name my-pod-range \ --zone=$ZONE

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。サブネットワークを使用するプライベート クラスタが正常に作成されている場合は、評価スコアが表示されます。

サブネットワークを使用するプライベート クラスタを作成する
  1. ソース インスタンスの外部アドレス範囲を取得します。
gcloud compute instances describe source-instance --zone=$ZONE | grep natIP

出力例:

natIP: 35.222.210.67
  1. 後のステップで使用するために、<nat_IP> アドレスをコピーして保存しておきます。

  2. 次のコマンドを実行して、外部アドレス範囲を承認します。[MY_EXTERNAL_RANGE] の部分は、前の出力で取得した外部アドレスの CIDR の範囲(natIP/32)に置き換えます。CIDR の範囲を natIP/32 にすると、1 つの具体的な IP アドレスが許可リストに登録されます。

gcloud container clusters update private-cluster2 \ --enable-master-authorized-networks \ --zone=$ZONE \ --master-authorized-networks [MY_EXTERNAL_RANGE]

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。カスタム サブネットワーク内のプライベート クラスタの外部アドレス範囲が正常に承認された場合は、評価スコアが表示されます。

カスタム サブネットワーク内のプライベート クラスタの外部アドレス範囲を承認する
  1. 次のコマンドを実行して source-instance に SSH 接続します。
gcloud compute ssh source-instance --zone=$ZONE
  1. 次のコマンドを実行して、SSH シェルから Kubernetes クラスタへのアクセスを構成します。
gcloud container clusters get-credentials private-cluster2 --zone=$ZONE 注: 割り当てられたゾーンが ZONE 変数でエクスポートされていることを確認してください。エクスポートされていない場合は、次のコマンドを実行します: export ZONE=
  1. クラスタノードに外部 IP アドレスが指定されていないことを確認します。
kubectl get nodes --output yaml | grep -A4 addresses

出力から、ノードには内部 IP アドレスが割り当てられていて、外部アドレスは割り当てられていないことがわかります。

... addresses: - address: 10.0.4.3 type: InternalIP ...

現時点で、マスターにアクセスできる IP アドレスは、次の範囲のアドレスだけです。

  • サブネットワークのプライマリ範囲(ノードに使用される範囲)。この例のノードの範囲は 10.0.4.0/22 です。
  • サブネットワークのセカンダリ範囲(ポッドに使用される)。この例のポッドの範囲は 10.4.0.0/14 です。

お疲れさまでした

プライベート Kubernetes クラスタを作成する方法を学習しました。

次のステップと詳細情報

Google Cloud トレーニングと認定資格

Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。

マニュアルの最終更新日: 2025 年 10 月 22 日

ラボの最終テスト日: 2025 年 10 月 22 日

Copyright 2026 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。

始める前に

  1. ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
  2. ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
  3. 画面左上の [ラボを開始] をクリックして開始します

シークレット ブラウジングを使用する

  1. ラボで使用するユーザー名パスワードをコピーします
  2. プライベート モードで [コンソールを開く] をクリックします

コンソールにログインする

    ラボの認証情報を使用して
  1. ログインします。他の認証情報を使用すると、エラーが発生したり、料金が発生したりする可能性があります。
  2. 利用規約に同意し、再設定用のリソースページをスキップします
  3. ラボを終了する場合や最初からやり直す場合を除き、[ラボを終了] はクリックしないでください。クリックすると、作業内容がクリアされ、プロジェクトが削除されます

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします

1 回に 1 つのラボ

既存のラボをすべて終了して、このラボを開始することを確認してください

シークレット ブラウジングを使用してラボを実行する

このラボを実行するには、シークレット モードまたはシークレット ブラウジング ウィンドウを使用することをおすすめします。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。

ラボを開始するには、この簡単な手順を完了してください。