チェックポイント
Create cluster and deploy an app
/ 40
Migrate to an Optimized Nodepool
/ 20
Apply a Frontend Update
/ 20
Autoscale from Estimated Traffic
/ 20
Google Kubernetes Engine のコストを最適化する: チャレンジラボ
GSP343
はじめに
チャレンジラボでは、シナリオと一連のタスクが提供されます。手順ガイドに沿って進める形式ではなく、コース内のラボで習得したスキルを駆使して、ご自身でタスクを完了していただきます。タスクが適切に完了したかどうかは、このページに表示される自動スコアリング システムで確認できます。
チャレンジラボは、Google Cloud の新しいコンセプトについて学習するためのものではありません。デフォルト値を変更する、エラー メッセージを読み調査を行ってミスを修正するなど、習得したスキルを応用する能力が求められます。
100% のスコアを達成するには、制限時間内に全タスクを完了する必要があります。
このラボは、「Optimize Costs for Google Kubernetes Engine」コースに登録している受講者を対象としています。準備が整ったらチャレンジを開始しましょう。
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
- ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
チャレンジ シナリオ
あなたは、OnlineBoutique のオンライン ショップを運営するチームの Google Kubernetes Engine リーダー管理者です。
チームのサイトを Google Kubernetes Engine にデプロイする準備はできていますが、コストを抑えつつパフォーマンスを向上させる方法を依然として模索しています。
OnlineBoutique アプリを GKE にデプロイし、コスト最適化のために推奨されているいくつかの構成変更を行う必要があります。
デプロイ時に従う必要があるガイドラインは次のとおりです。
-
ゾーンにクラスタを作成します。 - 命名規則は team-resource-number です。たとえば、クラスタ名を
のようにできます。 - 最初のクラスタでは、
e2-standard-2(vCPU 2 個、8 GB メモリ)
のマシンサイズから始めます。 -
rapid の
release-channel
を使用するようにクラスタを設定します。
タスク 1. クラスタを作成してアプリをデプロイする
-
アプリケーションをデプロイするには、
ゾーンでクラスタを作成し、 という名前を付ける必要があります。 -
小規模なクラスタから開始し、ノードが 2 つのみのゾーンクラスタを作成します。
-
ショップをデプロイする前に、
dev
とprod
の 2 つの環境に合わせて、クラスタ上のリソースを分離するために複数の名前空間を設定します。 -
その後、次のコマンドを使用して、アプリケーションを
dev
名前空間にデプロイします。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 2. 最適化されたノードプールに移行する
- アプリを dev 名前空間に正常にデプロイしたら、ノードの詳細を確認します。
クラスタのノードプールに変更を加える必要があるという結論に達しました。
- 現在の Deployment では RAM がたくさん残っているので、RAM がより少ないマシンでノードプールを使用できるはずです。
- レプリカ数を増やすことを検討する可能性のある Deployment のほとんどは、追加の Pod ごとに 100 mcpu しか必要としません。より小さなマシンを使用するようにノードプールを構成すると、合計 CPU が少ないノードプールを使用できる可能性があります。ただし、スケーリングが必要な Deployment の数と、スケーリングの程度も考慮する必要があります。
-
custom-2-3584 をマシンタイプとして、
という名前の新しいノードプールを作成します。 -
ノード数を「2」に設定します。
-
新しいノードプールの設定が完了したら、
default-pool
を閉鎖してドレインし、アプリケーションの Deployment を新しいノードプールに移行します。 -
Deployment が正常に移行されたら、default-pool を削除します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 3. フロントエンドの更新を適用する
すべてのデプロイが完了しました。今度は、開発チームから今回のリリース前に土壇場での更新を push するように要求されていますが、問題ありません。ダウンタイムを発生させることなく実行できます。
-
フロントエンド Deployment に Pod Disruption Budget を設定します。
-
onlineboutique-frontend-pdb という名前を付けます。
-
Deployment の min-availabilit を「1」に設定します。
これで、チームの更新を適用できます。チームはホームページのバナーに使用されるファイルを変更し、更新された Docker イメージを提供しました。
-
フロントエンド Deployment を編集し、更新されたイメージに変更します。
-
Deployment の編集時に、ImagePullPolicy を Always に変更します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 4. 推定トラフィックから自動でスケールする
OnlineBoutique のショップのトラフィックが急増するマーケティング キャンペーンが予定されています。通常、予測されるトラフィックの急増に対応するために、事前に追加のリソースをスピンアップします。ただし、トラフィックの急増が想定よりも大きい場合は、夜中に起こされて、負荷を処理するためにより多くのリソースをスピンアップすることになるかもしれません。
また、追加のリソースを必要以上に実行することは避けたいと考えています。コストを削減し、潜在的な心配の種を減らすために、負荷が急増し始めたときに自動的にスケールするように Kubernetes Deployment を構成できます。
-
トラフィックの急増に対応するため、水平 Pod 自動スケーリングをフロントエンド Deployment に適用します。
-
ターゲット CPU の割合を 50 としてスケーリングします。
-
Pod のスケーリングを最小 1 から最大
の間に設定します。
Deployment のスケーリング中にユーザーがダウンタイムを経験しないようにする必要もあります。
-
スケーリング中にダウンタイムが発生しないようにするには、ターゲット CPU の割合を 50% として、Deployment をスケールするように設定します。これにより、自動スケーリング中に負荷を処理するための十分なスペースが確保されます。
-
Deployment を最小 1 Pod から最大
Pod の間でスケールするように設定します。
しかし、トラフィックの急増が現在プロビジョニングしているコンピューティング リソースを超えた場合はどうなるでしょうか。コンピューティング ノードを追加する必要が生じる場合があります。
-
そこで次に、クラスタが必要に応じて追加のコンピューティング ノードを自動的にスピンアップできることを確認します。ただし、自動スケーリングで処理できるのは、スケールアップだけではありません。
-
先を見越して、ノードの最小数とノードの最大数の両方を構成します。こうすると、クラスタはトラフィックが多いときにノードを追加し、トラフィックが少ないときにノードの数を減らすことができます。
-
クラスタ オートスケーラーを、最小 1 ノードから最大 6 ノードの間でスケールするように更新します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
- 最後に、負荷テストを行ってトラフィックの急増をシミュレートします。
幸いなことに、OnlineBoutique は負荷生成ツールが組み込まれた設計になっています。現在、dev インスタンスは、同時接続ユーザーが最大 10 名のショップのトラフィックをシミュレートしています。
- このイベントで予想されるトラフィックをより適切に再現するには、次のコマンドを使用して、同時接続ユーザーがより多い
loadgenerator
Pod から負荷生成ツールを実行します。YOUR_FRONTEND_EXTERNAL_IP は、frontend-external サービスの IP に置き換えてください。
- 次に、ワークロードを観察し、クラスタがトラフィックの急増をどのように処理しているかモニタリングします。
recommendationservice
がクラッシュしているか、少なくとも需要の増加に非常に苦戦していることがわかります。
- 水平 Pod 自動スケーリングを recommendationservice の Deployment に適用します。ターゲット CPU の割合を 50 としてスケーリングし、Pod のスケーリングを最小 1 から最大 5 の間に設定します。
タスク 5. (任意)その他のサービスを最適化する
フロントエンド サービスに水平 Pod 自動スケーリングを適用すると、負荷テスト中にアプリケーションを利用できるようになりますが、他のワークロードをモニタリングすると、特定のリソースに対して一部のワークロードが大幅に push されていることがわかります。
ラボの時間がまだ残っている場合は、他のワークロードをいくつか調べて、リソースのメトリックが適切になるように自動スケーリングを適用し、ワークロードを最適化してみてください。
ノードの自動プロビジョニングを使用してリソースの使用率をさらに最適化できるか確認することもできます。
お疲れさまでした
これで完了です。このラボでは、OnlineBoutique アプリを Google Kubernetes Engine にデプロイし、コスト最適化のために推奨されているいくつかの構成変更を行いました。また、トラフィックの急増に対応するために、フロントエンドとレコメンデーション サービスの Deployment に水平 Pod 自動スケーリングを適用しました。さらに、適切なリソース指標に自動スケーリングを適用して、他のサービスを最適化しました。
次のスキルバッジを獲得する
このセルフペース ラボは、「Optimize Costs for Google Kubernetes Engine」スキルバッジ コースの一部です。このコースを完了すると成果が認められて上のようなバッジが贈られます。獲得したバッジを履歴書やソーシャル プラットフォームに掲載し、#GoogleCloudBadge を使用して成果を公表しましょう。
Google Cloud トレーニングと認定資格
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2024 年 4 月 29 日
ラボの最終テスト日: 2024 年 4 月 29 日
Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。