4.3. クラスターでのノードの自動スケーリングについて


重要

自動スケーリングは、Google Cloud Marketplace を通じて購入したクラスターでのみ利用できます。

自動スケーリングオプションは、クラスター内のマシンの数を自動的にスケーリングするように設定できます。

Cluster Autoscaler は、リソース不足のために現在のノードのいずれにも Pod をスケジュールできない場合、またはデプロイメントのニーズを満たすために別のノードが必要な場合に、クラスターのサイズを拡大します。Cluster Autoscaler は、指定の制限を超えてクラスターリソースを拡大することはありません。

さらに、Cluster Autoscaler は、リソースの使用量が少なく、重要な Pod すべてが他のノードに適合する場合など、一部のノードが長い期間にわたって不要な状態が続く場合にクラスターのサイズを縮小します。

自動スケーリングを有効にする場合は、ワーカーノードの最小数および最大数も設定する必要があります。

注記

クラスターの所有者と組織管理者のみがクラスターのスケーリングまたは削除が可能です。

4.3.1. クラスターでのノードの自動スケーリングの有効化

ワーカーノードで自動スケーリングを有効にし、既存クラスターのマシンプール定義を編集して利用可能なノード数を増減できます。

Red Hat OpenShift Cluster Manager を使用して既存のクラスターでノードの自動スケーリングを有効にする

OpenShift Cluster Manager コンソールからマシンプール定義でワーカーノードの自動スケーリングを有効にします。

手順

  1. OpenShift Cluster Manager で、Cluster List ページに移動し、自動スケーリングを有効にするクラスターを選択します。
  2. 選択したクラスターで、Machine pools タブを選択します。
  3. 自動スケーリングを有効にするマシンプールの最後にある Options メニュー kebab をクリックし、Edit を選択します。
  4. Edit machine pool ダイアログで、Enable autoscaling チェックボックスをオンにします。
  5. Save を選択してこれらの変更を保存し、マシンプールの自動スケーリングを有効にします。

4.3.2. クラスターでの自動スケーリングノードの無効化

ワーカーノードで自動スケーリングを無効にし、既存クラスターのマシンプール定義を編集して利用可能なノード数を増減できます。

OpenShift Cluster Manager コンソールを使用して、クラスターでの自動スケーリングを無効にできます。

Red Hat OpenShift Cluster Manager を使用した既存のクラスターでの自動スケーリングノードの無効化

OpenShift Cluster Manager からマシンプール定義でワーカーノードの自動スケーリングを無効にします。

手順

  1. OpenShift Cluster Manager で、Cluster List ページに移動し、無効にする必要のある自動スケーリングでクラスターを選択します。
  2. 選択したクラスターで、Machine pools タブを選択します。
  3. 自動スケーリングのあるマシンプールの最後にある Options メニュー kebab をクリックし、Edit を選択します。
  4. Edit machine pool ダイアログで、Enable autoscaling チェックボックスをオフにします。
  5. Save を選択してこれらの変更を保存し、マシンプールの自動スケーリングを無効にします。

自動スケーリングの OpenShift Dedicated クラスターへの適用には、クラスターへの Cluster Autoscaler のデプロイと各マシンタイプの Machine Autoscaler のデプロイが必要です。

重要

Cluster Autoscaler は、マシン API が機能しているクラスターでのみ設定できます。

4.3.3. Cluster Autoscaler について

Cluster Autoscaler は、現行のデプロイメントのニーズに合わせて OpenShift Dedicated クラスターのサイズを調整します。これは、Kubernetes 形式の宣言引数を使用して、特定のクラウドプロバイダーのオブジェクトに依存しないインフラストラクチャー管理を提供します。Cluster Autoscaler には cluster スコープがあり、特定の namespace には関連付けられていません。

Cluster Autoscaler は、リソース不足のために現在のワーカーノードのいずれにもスケジュールできない Pod がある場合や、デプロイメントのニーズを満たすために別のノードが必要な場合に、クラスターのサイズを拡大します。Cluster Autoscaler は、指定の制限を超えてクラスターリソースを拡大することはありません。

Cluster Autoscaler は、コントロールプレーンノードを管理しない場合でも、クラスター内のすべてのノードのメモリー、CPU の合計を計算します。これらの値は、単一マシン指向ではありません。これらは、クラスター全体での全リソースの集約です。たとえば、最大メモリーリソースの制限を設定する場合、Cluster Autoscaler は現在のメモリー使用量を計算する際にクラスター内のすべてのノードを含めます。この計算は、Cluster Autoscaler にワーカーリソースを追加する容量があるかどうかを判別するために使用されます。

重要

作成する ClusterAutoscaler リソース定義の maxNodesTotal 値が、クラスター内のマシンの想定される合計数に対応するのに十分な大きさの値であることを確認します。この値は、コントロールプレーンマシンの数とスケーリングする可能性のあるコンピュートマシンの数に対応できる値である必要があります。

自動ノード削除

クラスターオートスケーラーは 10 秒ごとにクラスター内の不要なノードをチェックし、そのノードを削除します。クラスターオートスケーラーは、次の条件が当てはまる場合に、ノードを削除対象とみなします。

  • ノード使用率が、クラスターの ノード使用率 レベルのしきい値を下回っている。ノード使用率レベルとは、要求されたリソースの合計をノードに割り当てられたリソースで除算したものです。ClusterAutoscaler カスタムリソースで値が指定されいない場合、クラスターオートスケーラーはデフォルト値の 0.5 を使用します。これは 50% の使用率に相当します。
  • クラスターオートスケーラーが、ノード上で実行されているすべての Pod を他のノードに移動できる。Kubernetes スケジューラーは、ノード上の Pod のスケジュールを担当します。
  • クラスターオートスケーラーに、スケールダウンを無効にするアノテーションがない。

ノードに次のタイプの Pod が存在する場合、クラスターオートスケーラーはノードを削除しません。

  • 制限のある Pod Disruption Budget を持つ Pod。
  • デフォルトでノードで実行されない kube-system Pod。
  • PDB を持たないか、制限が厳しい PDB を持つ kube-system Pod。
  • デプロイメント、レプリカセット、またはステートフルセットなどのコントローラーオブジェクトによってサポートされない Pod。
  • ローカルストレージを持つ Pod。
  • リソース不足、互換性のないノードセレクターまたはアフィニティー、アンチアフィニティーの一致などの理由で、他の場所に移動できない Pod。
  • それらに "cluster-autoscaler.kubernetes.io/safe-to-evict": "true" アノテーションがない場合、"cluster-autoscaler.kubernetes.io/safe-to-evict": "false" アノテーションを持つ Pod。

たとえば、CPU の上限を 64 コアに設定し、それぞれ 8 コアのマシンのみを作成するようにクラスターオートスケーラーを設定したとします。クラスターが 30 コアで起動した場合、クラスターオートスケーラーはさらに最大 4 ノードを追加して 32 コアを増やし、合計 62 コアにすることができます。

制限事項

クラスターオートスケーラーを設定する場合は、使用に関する追加の制限が適用されます。

  • 自動スケーリングされたノードグループにあるノードを直接変更しないようにしてください。同じノードグループ内のすべてのノードには同じ容量およびラベルがあり、同じシステム Pod を実行します。
  • Pod の要求を指定します。
  • Pod がすぐに削除されるのを防ぐ必要がある場合、適切な PDB を設定します。
  • クラウドプロバイダーのクォータが、設定する最大のノードプールに対応できる十分な大きさであることを確認します。
  • クラウドプロバイダーで提供されるものなどの、追加のノードグループの Autoscaler を実行しないようにしてください。
注記

クラスターオートスケーラーが自動スケーリング対象のノードグループにノードを追加するのは、その追加によって Pod がスケジュール可能になる場合に限られます。利用可能なノードタイプが Pod 要求の要件を満たすことができない場合、またはその要件を満たすことができるノードグループが最大サイズに達している場合、クラスターオートスケーラーはスケールアップできません。

他のスケジュール機能との連携

Horizontal Pod Autoscaler (HPA) とクラスターオートスケーラーは、異なる方法でクラスターリソースを変更します。HPA は、現在の CPU 負荷に基づいてデプロイメント、またはレプリカセットのレプリカ数を変更します。負荷が増大すると、HPA はクラスターで利用できるリソース量に関係なく、新規レプリカを作成します。リソースが不足している場合、クラスターオートスケーラーは、HPA によって作成された Pod が実行できるようにリソースを追加します。負荷が減少する場合、HPA は一部のレプリカを停止します。この動作によってノードの使用率が低下するか、ノードが完全に空になった場合、クラスターオートスケーラーは不要なノードを削除します。

クラスターオートスケーラーは Pod の優先度を考慮します。Pod の優先度とプリエンプション機能を使用すると、クラスターに十分なリソースがない場合に優先度に基づいて Pod をスケジュールできますが、クラスターオートスケーラーにより、クラスターにすべての Pod を実行するためのリソースが確保されます。両方の機能の意図を反映するために、クラスターオートスケーラーには、優先度のカットオフ機能が搭載されています。このカットオフ機能を使用すると、"ベストエフォート" の Pod をスケジュールできます。この Pod は、クラスターオートスケーラーによるリソースの増加を引き起こすことなく、予備のリソースが利用可能な場合にのみ実行されます。

カットオフ値よりも低い優先度を持つ Pod は、クラスターのスケールアップを引き起さず、クラスターのスケールダウンを妨げることもありません。これらの Pod を実行するために新規ノードは追加されず、これらの Pod を実行しているノードはリソースを解放するために削除される可能性があります。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat