このページでは、基本となる最小 CPU プラットフォームを使用してクラスタやノードプールを作成する方法を説明します。
概要
クラスタやノードプールを作成する際には、そのノードの基本となる最小の CPU プラットフォームを選択できます。
グラフィックス、ゲーム、分析などの分野における高度なコンピューティング負荷の高いワークロードでは、さまざまな CPU プラットフォームの機能セット(AVX-2 や AVX-512 など)で提供される特定の機能を利用できます。特定の CPU プラットフォームを選択することで、実行時間が大幅に短縮され、パフォーマンスも大きく向上する可能性があります。最小 CPU プラットフォームを指定すると、より予測可能な方法でこのような利点をワークロードで活用できるだけでなく、ワークロードに適さない CPU プラットフォームをノードで決して使用しないようにすることもできます。
最小 CPU プラットフォームの選択について
最小 CPU プラットフォームを選択すると、Google Kubernetes Engine はその最小 CPU プラットフォームを可能な限り使用してクラスタやノードプールを作成しようとします。
ただし、最小 CPU プラットフォームを使用してクラスタやノードプールを作成できない場合があります。次に例を示します。
- 最小 CPU プラットフォームがゾーンのデフォルト プラットフォームより古い場合や、最小 CPU プラットフォームが使用できなくなっていて、同じ料金で使用できる新しい CPU プラットフォームがある場合は、GKE は新しいほうのプラットフォームを使用してクラスタやノードプールを作成します。
- 指定したプラットフォームが使用できない場合に、それより新しいプラットフォームや同じ料金のプラットフォームがない場合は、クラスタやノードの作成は失敗します。
指定した最小 CPU プラットフォームより古いプラットフォームがノードで使用されることはありません。また、GKE で新しいプラットフォームが選択されてもノードの料金は変わりません。
ノードはライフサイクル全体を通して同じプラットフォームを保持しますが、指定された CPU プラットフォームが廃止される場合は例外です。その場合、ノードはより新しいプラットフォームで実行されます。
制限事項
- CPU プラットフォームを使用できるかどうかは、ゾーンによって異なります。
- 共有コア マシンタイプ(
g1-small
など)では、最小 CPU プラットフォームを使用できません。
対象
目的のコンピューティング ゾーンで使用可能な CPU プラットフォームを確認するには、次のコマンドを実行します。
gcloud compute zones describe [COMPUTE_ZONE]
[COMPUTE_ZONE] には、目的のコンピューティング ゾーンを指定します。
このコマンドは、ゾーンで使用可能なプラットフォームのリストを返します。次に例を示します。
availableCpuPlatforms:
- Intel Skylake
- Intel Broadwell
詳細については、Compute Engine のドキュメントで VM インスタンスの最小 CPU プラットフォームの指定をご覧ください。
料金
この機能で追加料金が発生することはありません。
最小 CPU プラットフォームを使用して新しいクラスタを作成する
最小 CPU プラットフォームを使用してクラスタを作成するには、gcloud
コマンドライン ツール、Google Cloud Console、または GKE API を使用します。
gcloud
最小 CPU プラットフォームを持つ新しいクラスタを作成するには、gcloud
コマンドライン ツールで --min-cpu-platform
フラグを設定し、CPU プラットフォームにわかりやすい名前を指定します。
gcloud container clusters create [CLUSTER_NAME] --zone [COMPUTE_ZONE] \ --min-cpu-platform [PLATFORM_NAME]
ここで
- [CLUSTER_NAME] は、クラスタに付ける名前です。
- [COMPUTE_ZONE] は、クラスタのコンピューティング ゾーンです。
- [PLATFORM_NAME] は、クラスタで実行する目的の CPU プラットフォームです。
たとえば、次のコマンドは、Intel Broadwell
プラットフォームを使用するクラスタを example-cluster
という名前で作成します。
gcloud container clusters create example-cluster --zone us-central1-a \ --min-cpu-platform “Intel Broadwell”
Console
Cloud Console で Google Kubernetes Engine のメニューに移動します。
[クラスタを作成] ボタンをクリックします。
必要に応じてクラスタを構成します。
ナビゲーション パネルで、変更するノードプールの下の [ノード] をクリックします。
[マシンタイプ] プルダウン リストで [カスタム] を選択します。
[CPU プラットフォームと GPU] メニューを展開します。
[CPU プラットフォーム] プルダウン リストで、目的のプラットフォームを選択します。
[作成] をクリックします。
API
リクエスト本文の nodeConfig
フィールドの一部に minCpuPlatform
プロパティを含めます。minCpuPlatform
の値は、プラットフォームのわかりやすい名前にする必要があります(例: Intel Haswell
、Intel Broadwell
、Intel Sandy Bridge
)。
たとえば、Intel Broadwell
を実行するクラスタを作成するリクエスト本文は次のようになります。
POST https://container.googleapis.com/v1/projects/[PROJECT_ID]/zones/[COMPUTE_ZONE]/clusters { 'cluster': { 'name': '[CLUSTER_NAME]', 'nodeConfig': { 'minCpuPlatform': 'Intel Broadwell' ... } ... } }
ここで
- [PROJECT_ID] はプロジェクト ID です。
- [COMPUTE_ZONE] は、目的のコンピューティング ゾーンです。
- [CLUSTER_NAME] は、クラスタに付ける名前です。
新しいノードプールの最小 CPU プラットフォームの選択
既存のクラスタで新しいノードプールの最小 CPU プラットフォームを指定するには、gcloud
コマンドライン ツール、Cloud Console、または GKE API を使用します。
gcloud
最小 CPU プラットフォームを使用する新しいノードプールを作成するには、gcloud
コマンドライン ツールで --min-cpu-platform
フラグを使用し、CPU プラットフォームのわかりやすい名前を指定します。
gcloud container node-pools create [POOL_NAME] --cluster [CLUSTER_NAME] \ --zone [COMPUTE_ZONE] --min-cpu-platform [PLATFORM_NAME]
ここで
- [POOL_NAME] は、ノードプールに付ける名前です。
- [CLUSTER_NAME] は、ノードプールが作成されるクラスタの名前です。
- [COMPUTE_ZONE] は、クラスタのコンピューティング ゾーンです。
- [PLATFORM_NAME] は、ノードプールで実行する目的の CPU プラットフォームです。
たとえば、次のコマンドは、Intel Broadwell
プラットフォームを使用する example-node-pool
というノードプールを作成します。
gcloud container node-pools create example-node-pool --cluster example-cluster \ --zone us-central1-a --min-cpu-platform “Intel Broadwell”
Console
Cloud Console で Google Kubernetes Engine のメニューに移動します。
クラスタの編集ボタン(鉛筆の形をしたボタン)をクリックします。
[ノードプール] セクションで、[ノードプールを追加] をクリックします。
必要に応じてノードプールを構成します。次に、[マシンタイプ] メニューで [カスタマイズ] をクリックします。
[CPU プラットフォーム] プルダウン リストで、目的のプラットフォームを選択します。
[作成] をクリックします。
API
リクエスト本文の nodeConfig
フィールドの一部に minCpuPlatform
プロパティを含めます。minCpuPlatform
の値は、プラットフォームのわかりやすい名前にする必要があります(例: Intel Haswell
、Intel Broadwell
、Intel Sandy Bridge
)。
たとえば、Intel Broadwell
を実行中のクラスタのリクエスト本文は次のようになります。
POST https://container.googleapis.com/v1/projects/[PROJECT_ID]/zones/[COMPUTE_ZONE]/clusters/[CLUSTER_NAME]/nodePools { 'nodePool': { 'name': '[NODE_POOL]', 'nodeConfig': { 'minCpuPlatform': 'Intel Broadwell' ... } ... } }
ここで
- [PROJECT_ID] は、GCP プロジェクトの ID です。
- [COMPUTE_ZONE] は、目的のコンピューティング ゾーンです。
- [CLUSTER_NAME] は、クラスタの名前です。