チェックポイント
Creating a Kubernetes Engine cluster
/ 25
Create a new Deployment - hello-server
/ 25
Create a Kubernetes Service
/ 25
Clean up: Delete the cluster
/ 25
Kubernetes Engine: Qwik Start
GSP100
概要
Google Kubernetes Engine(GKE)は、Google のインフラストラクチャを使用して、コンテナ化されたアプリケーションのデプロイ、管理、スケーリングを行うマネージド環境を提供します。Kubernetes Engine 環境は複数のマシン(具体的には、Compute Engine インスタンス)で構成されており、これらのマシンがグループ化されてコンテナ クラスタを形成します。このラボでは、GKE を使用してコンテナを作成し、アプリケーションをデプロイする方法を実践形式で学びます。
GKE によるクラスタ オーケストレーション
GKE では、Kubernetes オープンソース クラスタ管理システムが使用されます。Kubernetes は、コンテナ クラスタを操作するメカニズムを提供します。Kubernetes のコマンドとリソースを使用して、アプリケーションのデプロイや管理、管理タスクの実行やポリシーの設定、デプロイ済みワークロードの状態のモニタリングを行うことができます。
Kubernetes では、頻繁に利用される Google サービスと同じ設計原理が使われており、自動管理、アプリケーション コンテナのモニタリングと稼働状況のプローブ、自動スケーリング、ローリング アップデートなどの機能が、Google サービスと同じように提供されています。コンテナ クラスタでアプリケーションを実行するときに利用するテクノロジーは、本番環境のワークロードをコンテナで 10 年以上実行してきた Google の経験に裏付けられています。
Google Cloud での Kubernetes の使用
GKE クラスタを実行すると、Google Cloud が提供する高度なクラスタ管理機能のメリットも得られます。たとえば、次のようなものが挙げられます。
- Compute Engine インスタンスのためのロード バランシング
- クラスタ内のノードのサブセットを定義するノードプールによる柔軟性の向上
- クラスタノードのインスタンス数の自動スケーリング
- クラスタノード ソフトウェアの自動アップグレード
- ノードの正常稼働と可用性を保持するノードの自動修復
- Cloud Monitoring を使用したロギングとモニタリングによるクラスタの可視化
Kubernetes の基本事項を理解したところで、今度は GKE を使用して、コンテナ化されたアプリケーションを 30 分弱でデプロイする方法を学習しましょう。以下に示す手順に沿ってラボ環境を設定してください。
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
この Qwiklabs ハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
必要なもの
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
- ラボを完了するために十分な時間
注: すでに個人の Google Cloud アカウントやプロジェクトをお持ちの場合でも、ラボでは使用しないでください。
注: Chrome OS デバイスを使用している場合は、シークレット ウィンドウを開いてこのラボを実行してください。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。
- [Google コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google コンソールを開く] をクリックします。 ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。 -
必要に応じて、[ラボの詳細] パネルから [ユーザー名] をコピーして [ログイン] ダイアログに貼り付けます。[次へ] をクリックします。
-
[ラボの詳細] パネルから [パスワード] をコピーして [ようこそ] ダイアログに貼り付けます。[次へ] をクリックします。
重要: 認証情報は左側のパネルに表示されたものを使用してください。Google Cloud Skills Boost の認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。 -
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後このタブで Cloud Console が開きます。
Google Cloud Shell の有効化
Google Cloud Shell は、デベロッパー ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Google Cloud Shell では、コマンドラインで GCP リソースにアクセスできます。
GCP Console の右上のツールバーにある [Cloud Shell をアクティブにする] ボタンをクリックします。
[続行] をクリックします。
環境のプロビジョニングと接続には少し時間がかかります。接続すると、すでに認証されており、プロジェクトは PROJECT_ID に設定されています。例えば:
gcloud
は Google Cloud Platform のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
出力:
ACTIVE: *
ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net
To set the active account, run:
$ gcloud config set account `ACCOUNT`
次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project
出力:
[core]
project = <project_ID>
出力例:
[core]
project = qwiklabs-gcp-44776a13dea667a6
タスク 1. デフォルトのコンピューティング ゾーンを設定する
コンピューティング ゾーンとは、クラスタとそのリソースが存在するリージョンのおおよその場所を示すものです。たとえば、us-central1-a
は us-central1
リージョンのゾーンです。
Cloud Shell で新しいセッションを開始します。
-
デフォルトのコンピューティング リージョンを設定する:
gcloud config set compute/region {{{project_0.startup_script.project_region|assigned_at_lab_start}}} 想定される出力:
Updated property [compute/region]. -
デフォルトのコンピューティング ゾーンを設定する:
gcloud config set compute/zone {{{project_0.startup_script.project_zone|assigned_at_lab_start}}} 想定される出力:
Updated property [compute/zone].
タスク 2. GKE クラスタを作成する
クラスタは、少なくとも 1 つのクラスタ マスターマシンと、ノードと呼ばれる複数のワーカーマシンで構成されます。ノードは Compute Engine 仮想マシン(VM)インスタンスであり、自身をクラスタの一部にするために必要な Kubernetes プロセスを実行します。
次のコマンドを実行します。
-
クラスタを作成する:
gcloud container clusters create --machine-type=e2-medium --zone={{{project_0.startup_script.project_zone|assigned_at_lab_start}}} lab-cluster
出力に含まれる警告は無視してかまいません。クラスタの作成が完了するまで数分かかることがあります。
想定される出力:
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 3. クラスタの認証情報を取得する
クラスタの作成が完了したら、そのクラスタとやり取りするために認証情報が必要になります。
-
クラスタで認証する:
gcloud container clusters get-credentials lab-cluster 想定される出力:
Fetching cluster endpoint and auth data. kubeconfig entry generated for my-cluster.
タスク 4. アプリケーションをクラスタにデプロイする
ここまでで、クラスタにコンテナ化されたアプリケーションをデプロイする準備ができました。このラボでは、クラスタで hello-app
アプリケーションを実行します。
GKE では、クラスタ リソースの作成と管理に Kubernetes オブジェクトを使用します。Kubernetes には、ウェブサーバーのようなステートレス アプリケーションをデプロイするための Deployment オブジェクトが用意されています。インターネットからアプリケーションにアクセスする際のルールとロード バランシングを定義するには、Service オブジェクトを使用します。
-
hello-app
コンテナ イメージからhello-server
という新しい Deployment を作成するために、以下の kubectl create コマンドを実行します。kubectl create deployment hello-server --image=gcr.io/google-samples/hello-app:1.0 想定される出力:
deployment.apps/hello-server created これで、
hello-server
を表す Deployment オブジェクトが作成されます。この場合、--image
にはデプロイするコンテナ イメージを指定します。上のコマンドでは、Container Registry バケットからサンプル イメージが呼び出されます。gcr.io/google-samples/hello-app:1.0
は、呼び出すイメージのバージョンを指定しています。バージョンが指定されていない場合は、最新バージョンが使用されます。[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
新しい Deployment: hello-server を作成する -
Kubernetes Service(アプリケーションを外部トラフィックに公開するための Kubernetes リソース)を作成するために、以下の kubectl expose コマンドを実行します。
kubectl expose deployment hello-server --type=LoadBalancer --port 8080 コマンドの内容:
-
--port
にはコンテナで公開するポートを指定します。 -
type="LoadBalancer"
を渡すことで、コンテナの Compute Engine ロードバランサが作成されます。
想定される出力:
service/hello-server exposed -
-
hello-server
Service を検査するために、kubectl get を実行します。kubectl get service 想定される出力:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-server loadBalancer 10.39.244.36 35.202.234.26 8080:31991/TCP 65s kubernetes ClusterIP 10.39.240.1 433/TCP 5m13s 注: 外部 IP アドレスの生成には数分かかることがあります。 EXTERNAL-IP
列のステータスが pending である場合は、前述のコマンドをもう一度実行します。 -
ウェブブラウザでアプリケーションを表示します。新しいタブを開き、以下のアドレスを入力します。
[EXTERNAL IP]
はhello-server
のEXTERNAL-IP
に置き換えてください。http://[EXTERNAL-IP]:8080 想定される出力: ブラウザタブに、Hello, world! というメッセージと、バージョンおよびホスト名が表示されます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Kubernetes Service を作成する
タスク 5. クラスタを削除する
-
次のコマンドを実行してクラスタを削除します。
gcloud container clusters delete lab-cluster -
プロンプトが表示されたら、「Y」と入力して確定します。
クラスタの削除には数分かかる場合があります。削除された GKE クラスタについて詳しくは、Google Kubernetes Engine(GKE)のクラスタの削除に関する記事をご覧ください。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
クラスタを削除する
お疲れさまでした
これで、コンテナ化されたアプリケーションが Kubernetes Engine にデプロイされました。
クエストを完了する
このセルフペース ラボは、「Baseline: Infrastructure」、「Google Cloud Essentials」、「Kubernetes in Google Cloud」、「VM Migration」クエストの一部です。クエストとは学習プログラムを構成する一連のラボのことで、完了すると成果が認められてバッジが贈られます。バッジは公開して、オンライン レジュメやソーシャル メディア アカウントにリンクできます。このラボの修了後、次のクエストに登録すれば、すぐにクレジットを受け取ることができます。受講可能なその他のクエストについては、Google Cloud Skill Boost カタログでご確認ください。
次のステップと詳細情報
このラボは Qwik Start と呼ばれるラボシリーズの一部です。これらのラボでは、Google Cloud で利用できる多くの機能を体験できます。Google Cloud Skills Boost カタログで「Qwik Start」を検索し、興味のあるラボを探してみてください。
Google Cloud Training & Certification
Google Cloud 技術を最大限に活用できるようになります。このクラスでは、必要な技術力とベスト プラクティスを習得し、継続的に学習することができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、仮想環境など、多忙なスケジュールに対応できるオプションが用意されています。認定資格を取得することで、Google Cloud の技術のスキルと知識を証明できます。
マニュアルの最終更新日: 2022 年 11 月 16 日
ラボの最終テスト日: 2022 年 11 月 16 日
Copyright 2020 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。