クラスタ・オートスケーラ

Cluster Autoscalerアドオンを有効にすると、次のキー/値のペアを引数として渡すことができます。

ほとんどのクラスタ・アドオンに共通の構成引数
キー(APIおよびCLI) キーの表示名(コンソール) 説明 必須/オプション デフォルト値 値の例
affinity affinity

アフィニティ・スケジューリング・ルールのグループ。

プレーン・テキストまたはエンコードされたBase64のJSON形式。

未使用者:
  • NVIDIA GPUオペレータ
可能な等価:
  • ノード機能の検出、master.affinityの使用
  • NVIDIA Network Operator、operator.affinityを使用
  • CSIドライバSMB、contoller.affinityを使用
  • AMD GPUオペレータ、controllerManager.affinityを使用
オプション null null
nodeSelectors ノード・セレクター

ノード・セレクタおよびノード・ラベルを使用して、アドオン・ポッドが実行されるワーカー・ノードを制御できます。

ポッドをノードで実行するには、ポッドのノード・セレクタのキー/値がノードのラベルと同じである必要があります。

nodeSelectorsを、ポッドのノード・セレクタとワーカー・ノードのラベルの両方に一致するキー/値ペアに設定します。

プレーン・テキストまたはエンコードされたBase64のJSON形式。

未使用者:
  • NVIDIA GPUオペレータ
  • CSIドライバ SMB
可能な等価:
  • ノード機能の検出、worker.nodeSelectorの使用
  • NVIDIA Network Operator、operator.nodeSelectorsを使用
  • AMD GPU演算子。selectorまたはcontrollerManager.nodeSelectorを使用します
オプション null {"foo":"bar", "foo2": "bar2"}

ポッドは、foo=barまたはfoo2=bar2ラベルを持つノードでのみ実行されます。

numOfReplicas numOfReplicas アドオン配備の複製の数。
未使用者:
  • AMD GPUプラグイン
  • NVIDIA GPUオペレータ
  • NVIDIAネットワーク事業者
  • CSIドライバ SMB
可能な等価:
  • CoreDNS。nodesPerReplicaを使用します。
  • ノード機能の検出、master.replicaCountの使用
  • AMD GPUオペレータ、controllerManager.replicasを使用
必須 1

クラスタごとにアドオン・デプロイメントのレプリカを1つ作成します。

2

クラスタごとにアドオン・デプロイメントの2つのレプリカを作成します。

rollingUpdate rollingUpdate

maxSurgeおよびmaxUnavailableによるローリング更新の望ましい動作を制御します。

プレーン・テキストまたはエンコードされたBase64のJSON形式。

未使用者:
  • ノード機能検出
  • NVIDIAネットワーク事業者
  • CSIドライバ SMB
可能な等価:
  • NVIDIA GPU Operator、daemonsets.rollingUpdate.maxUnavailableを使用
  • AMD GPU演算子。devicePluginmetricsExportertestRunner configManagerまたはdraDriverupgradePolicyを使用します。
オプション null null
tolerations 許容範囲

テイントおよび許容範囲を使用して、アドオン・ポッドが実行されるワーカー・ノードを制御できます。

taintがあるノード上でポッドを実行するには、ポッドに対応する許容範囲が必要です。

tolerationsを、ポッドの許容範囲とワーカー・ノードのテイントの両方に一致するキー/値のペアに設定します。

プレーン・テキストまたはエンコードされたBase64のJSON形式。

可能な等価:
  • ノード機能の検出。master.tolerationsまたはworker.tolerations、あるいはその両方を使用します。
  • NVIDIA GPU Operator、daemonsets.tolerationsを使用
  • NVIDIA Network Operator、operator.tolerationsを使用
  • CSIドライバSMB、controller.tolerationsを使用
  • AMD GPUオペレータ。 devicePluginmetricsExportertestRunnerconfigManagerdraDriverまたはcontrollerManagerで許容値を使用します。
オプション null [{"key":"tolerationKeyFoo", "value":"tolerationValBar", "effect":"noSchedule", "operator":"exists"}]

この許容範囲を持つポッドのみが、tolerationKeyFoo=tolerationValBar:noScheduleテイントを持つワーカー・ノードで実行できます。

topologySpreadConstraints topologySpreadConstraints

指定されたトポロジ間で一致するポッドを分散する方法。

プレーン・テキストまたはエンコードされたBase64のJSON形式。

未使用者:
  • ノード機能検出
  • NVIDIA GPUオペレータ
  • NVIDIAネットワーク事業者
  • CSIドライバ SMB
  • AMD GPU演算子
オプション null null
このクラスタ・アドオンに固有の構成引数
キー(APIおよびCLI) キーの表示名(コンソール) 説明 必須/オプション デフォルト値 値の例
annotations 注釈

Cluster Autoscalerデプロイメントに渡す注釈。

たとえば、"{\"prometheus.io/scrape\":\"true\",\"prometheus.io/port\":\"8086\"}"です

プレーン・テキストまたはエンコードされたBase64のJSON形式。

オプション ""
authType authType リクエストの実行中にCluster Autoscalerが使用する認証タイプ。次のいずれかになります。
  • instanceは、インスタンス・プリンシパルを指定します
  • workloadは、ワークロード・アイデンティティを指定します
必須 instance
balanceSimilarNodeGroups balanceSimilarNodeGroups 類似するノード・グループを検出し、それらの間のノード数のバランスをとります。 オプション false
balancingIgnoreLabel balancingIgnoreLabel ノード・グループの類似性を考慮するときに無視する必要があるノード・ラベルを定義します。フラグの発生ごとに1つのラベル。形式はlabel1, label2です。 オプション ""
balancingLabel balancingLabel ノード・グループの類似性を比較するときに使用するノード・ラベルを定義します。設定すると、他のすべての比較ロジックが無効になり、グループの比較時にラベルのみが考慮されます。フラグの発生ごとに1つのラベル。形式はlabel1, label2です。 オプション ""
cluster-autoscaler.ContainerResources cluster-autoscalerコンテナ・リソース

アドオン・コンテナが要求するリソース数量を指定し、アドオン・コンテナが超過できないリソース使用量制限を設定できます。

プレーン・テキストまたはエンコードされたBase64のJSON形式。

オプション null {"limits": {"cpu": "500m", "memory": "200Mi" }, "requests": {"cpu": "100m", "memory": "100Mi"}}

100ミリコアのCPUと100メビバイトのメモリーをリクエストするアドオン・コンテナを作成します。アドオンコンテナを500MバイトのCPUおよび200Mバイトのメモリーに制限します。

cordonNodeBeforeTerminating (コンソールには表示されません) ダウンスケール・プロセス中に終了する前にCAコード・ノードが必要です。 オプション false
coresTotal (コンソールには表示されません) クラスタ内のコアの最小数および最大数(<min>:<max>の形式)。クラスタ・オートスカラは、これらの数値を超えてクラスタをスケーリングしません。 オプション 0:320000
daemonsetEvictionForEmptyNodes (コンソールには表示されません) DaemonSetポッドが空のノードから正常に終了するかどうか。 オプション false
daemonsetEvictionForOccupiedNodes (コンソールには表示されません) DaemonSetポッドが空でないノードから正常に終了するかどうか。 オプション true
debuggingSnapshotEnabled (コンソールには表示されません) クラスタ自動スカラー機能のデバッグ・スナップショットが有効かどうか。 オプション false
emitPerNodegroupMetrics (コンソールには表示されません) trueの場合、ノード・グループごとのメトリックを発行します。 オプション false
enforceNodeGroupMinSize (コンソールには表示されません) CAは、必要に応じてノード・グループを構成済の最小サイズにスケール・アップする必要があります。 オプション false
estimator (コンソールには表示されません) スケール・アップで使用されるリソース見積りのタイプです。 オプション binpacking
expander エクスパンダ スケール・アップで使用するノード・グループ・エクスパンダのタイプ。

expander=priceはサポートされていません。

オプション random
expendablePodsPriorityCutoff (コンソールには表示されません) カットオフより優先度の低いポッドは費用がかかります。スケール・ダウン時に考慮せずに殺すことができ、スケール・アップは発生しません。null優先度(PodPriorityが無効)のポッドは有効期限がありません。 オプション -10
ignoreDaemonsetsUtilization (コンソールには表示されません) スケール・ダウン用のリソース使用率を計算するときに、DaemonSetポッドを無視するかどうか。 オプション false
ignoreMirrorPodsUtilization (コンソールには表示されません) スケール・ダウンのリソース使用率を計算するときにミラー・ポッドが無視されるかどうか。 オプション false
leaderElect (コンソールには表示されません) メイン・ループを実行する前に、リーダー選択クライアントを開始し、リーダーシップを獲得します。高可用性を実現するためにレプリケート・コンポーネントを実行する場合は、これを有効にします。 オプション true
leaderElectLeaseDuration (コンソールには表示されません) リーダー以外の候補者がリーダーシップの更新を観察した後、リードされたが更新されていないリーダー・スロットのリーダーシップを獲得しようとするまでの期間。これは、リーダーが別の候補に置換されるまでに停止できる最大期間です。これは、リーダー選択が有効になっている場合にのみ適用されます。 オプション 15s
leaderElectRenewDeadline (コンソールには表示されません) アクティブ・クラスタ・オートスカラがリーダーシップ・スロットを更新してから先行を停止するまでの試行間隔。これはリース期間以下である必要があります。これは、リーダー選択が有効になっている場合にのみ適用されます。 オプション 10s
leaderElectResourceLock (コンソールには表示されません) リーダー選択時のロックに使用されるリソース・オブジェクトのタイプ。サポートされているオプションは、leases (デフォルト)、endpointsendpointsleasesconfigmapsおよびconfigmapsleasesです。 オプション leases
leaderElectRetryPeriod (コンソールには表示されません) 顧客がリーダーシップの取得と更新を試みるまでの期間。これは、リーダー選択が有効になっている場合にのみ適用されます。 オプション 2s
maxAutoprovisionedNodeGroupCount (コンソールには表示されません) クラスタ内の自動プロビジョニングされたグループの最大数。 オプション 15
maxEmptyBulkDelete maxEmptyBulkDelete 同時に削除できる空のノードの最大数。 オプション 10
maxFailingTime (コンソールには表示されません) 自動再起動前の最後の正常な自動スカラー実行からの最大時間。 オプション 15m
maxGracefulTerminationSec (コンソールには表示されません) ノードのスケール・ダウン試行時にCAがポッド終了を待機する最大秒数。 オプション 600
maxInactivity (コンソールには表示されません) 自動再起動の前回記録された自動スカラー・アクティビティからの最大時間。 オプション 10m
maxNodeProvisionTime maxNodeProvisionTime CAがノードのプロビジョニングを待機する最大時間。 オプション 15m
maxNodesTotal (コンソールには表示されません) すべてのノード・プールのノードの最大数。クラスタ・オートスカラは、この数を超えるクラスタを拡張しません。 オプション 0
maxTotalUnreadyPercentage (コンソールには表示されません) クラスタ内の未準備ノードの最大割合。これを超えると、CAは操作を停止します。 オプション 45
memoryTotal (コンソールには表示されません) クラスタ内のメモリーの最小数および最大数(<min>:<max>の形式)。クラスタ・オートスカラは、これらの数値を超えてクラスタをスケーリングしません。 オプション 0:6400000
minReplicaCount (コンソールには表示されません) レプリカ・セットまたはレプリケーション・コントローラがポッドをスケール・ダウンで削除できるようにする必要がある最小数またはレプリカ。 オプション 0
nodes ノード

クラスタ自動スカラによって管理されるノードの最小数、ノードの最大数およびノード・プールのOCIDのリスト。

形式は<min>:<max>:<node-pool1-ocid>, <min>:<max>:<node-pool2-ocid>です。

nodesまたはnodeGroupAutoDiscoveryのいずれかを使用しますが、両方は使用できません。

プレーン・テキストまたはエンコードされたBase64のJSON形式。

nodeGroupAutoDiscoveryが設定されていない場合は必須 ""
nodeGroupAutoDiscovery (コンソールには表示されません)

タグ・キー/値ペアのリスト、ノードの最小数、ノードの最大数およびクラスタ自動スカラによって管理されるノード・プールが存在するコンパートメントのOCID。

形式はcompartmentId:<compartment-ocid>,nodepoolTags:<tagKey1>=<tagValue1>&<tagKey2>=<tagValue2>,min:<min-nodes>,max:<max-nodes>です。

nodeGroupAutoDiscoveryまたはnodesのいずれかを使用しますが、両方は使用できません。

minSizeおよびmaxSizeノード・プール・タグは、常にmin:{{<min-nodes>}}およびmax:{{<max-nodes>}}より優先されます。

Cluster Autoscalerバージョン1.30.3、バージョン1.31.1、バージョン1.32.0以降でサポートされています。

プレーン・テキストまたはエンコードされたBase64のJSON形式。

nodesが設定されていない場合は必須
okTotalUnreadyCount (コンソールには表示されません) maxTotalUnreadyPercentageに関係なく、許可される未準備ノードの数。 オプション 3
recordDuplicatedEvents (コンソールには表示されません) オートスカラーが5分間のウィンドウ内に重複したイベントを印刷できるようにします。 オプション false
scaleDownCandidatesPoolMinCount (コンソールには表示されません)

前回の反復からの一部の候補者が有効でなくなった場合に、スケール・ダウンの追加の空でない候補とみなされるノードの最小数。追加の候補者のプール・サイズを計算するときに使用します。

max(#nodes * scale-down-candidates-pool-ratio,
              scale-down-candidates-pool-min-count)
必須 50
scaleDownCandidatesPoolRatio (コンソールには表示されません) 前回の反復の候補の一部が無効になった場合に、スケール・ダウンの追加の空でない候補とみなされるノードの比率。値を小さくすると、CAの応答性が向上しますが、スケール・ダウン・レイテンシが遅くなる可能性があります。値が大きいほど、大きいクラスタ(数百ノード)のCAパフォーマンスに影響する可能性があります。このヒューリスティックをオフにするには1.0に設定します。CAはすべてのノードを追加候補として取得します。 必須 0.1
scaleDownDelayAfterAdd scaleDownDelayAfterAdd スケール・アップ後、そのスケール・ダウン評価が再開される期間。 必須 10m
scaleDownDelayAfterDelete (コンソールには表示されません) 評価を再開するノード削除後の時間。デフォルトはscan-intervalです。 必須 10s
scaleDownDelayAfterFailure (コンソールには表示されません) スケール・ダウン失敗後、評価を再開する期間。 必須 3m
scaleDownEnabled scaleDownEnabled CAはクラスタをスケール・ダウンする必要があります。 オプション true
scaleDownNonEmptyCandidatesCount (コンソールには表示されません) 1回の反復でドレインによるスケール・ダウンの候補とみなされる空でないノードの最大数。値を小さくすると、CAの応答性が向上しますが、スケール・ダウン・レイテンシが遅くなる可能性があります。値が大きいほど、大きいクラスタ(数百ノード)のCAパフォーマンスに影響する可能性があります。このヒューリスティックをオフにするには、正以外の値に設定します。CAは、考慮するノードの数を制限しません。 必須 30
scaleDownUnneededTime scaleDownUnneededTime ノードがスケール・ダウンに適格になるまでに、ノードが不要になる期間。 必須 10m
scaleDownUnreadyTime (コンソールには表示されません) スケール・ダウンに適格になるまでに、まだノードが不要になる期間。 必須 20m
scaleDownUtilizationThreshold (コンソールには表示されません) ノード使用率レベル。要求されたリソースの合計を容量で割ったものとして定義され、その下にノードをスケール・ダウンで考慮できます。 必須 0.5
scanInterval scanInterval スケール・アップまたはスケール・ダウンのためにクラスタが再評価される頻度。 オプション 10s
skipNodesWithCustomControllerPods (コンソールには表示されません) trueの場合、クラスタ自動スカラは、カスタム・コントローラが所有するポッドを含むノードを削除しません。 オプション true
skipNodesWithLocalStorage (コンソールには表示されません) trueの場合、クラスタ自動スカラは、ローカル記憶域を持つポッド(EmptyDirやHostPathなど)を含むノードを削除しません。 オプション true
skipNodesWithSystemPods (コンソールには表示されません) trueの場合、クラスタ自動スカラは、ポッドを含むノードをkubeシステムから削除しません(DaemonSetまたはミラー・ポッドを除く)。 オプション true
statusConfigMapName (コンソールには表示されません) CAが書き込むステータスConfigMapの名前。 オプション cluster-autoscaler-status
stderrthreshold (コンソールには表示されません) ログの重大度しきい値。このしきい値を超えると、ログがstderrに送信されます。たとえば、これをerrorに設定すると、重大度がerrorより大きいすべてのログがstderrに送信されます。 オプション info
unremovableNodeRecheckTimeout unremovableNodeRecheckTimeout 以前に削除できなかったノードを再度チェックするまでのタイムアウト。 必須 5m
v (コンソールには表示されません) ロギングの詳細度の数。 オプション 0
writeStatusConfigmap (コンソールには表示されません) CAは、configmapにステータス情報を書き込む必要があります。 オプション true
大規模なクラスタに関する考慮事項

次の表に、大規模クラスタでこのクラスタ・アドオンを構成する際の考慮事項を示します。

引数名 ロールWRTノード数 説明 クラスタ・サイズが増加するにつれて リスク 推奨事項
cluster-autoscaler.ContainerResources あり

Cluster AutoscalerポッドのCPUおよびメモリー・リクエストおよび制限を定義します。

クラスタ・サイズが大きくなると、Cluster Autoscalerは次のように動作します。

  • ノードおよびポッドのクラスタ状態評価の著しい増加
  • より多くのスケジューリング・シミュレーション
  • CPUとメモリーの使用率の向上
  • スケール・アップおよびスケール・ダウン操作のための意思決定レイテンシの向上

リソースのサイズが小さい場合:

  • Cluster Autoscalerポッドは、メモリー制限を超えているため終了する可能性があります。
  • スケーリングの決定が遅れる可能性があり、ポッドは Pending 状態のままになります。
  • クラスタ・スキャン・サイクルが遅くなり、応答性が低下する可能性があります。
  • スケジュール不可能なポッドのバックログが累積される場合があります。

必要に応じてCPUおよびメモリー・リソースを増やします。

  • 大きいクラスタの状態を処理するためにメモリーを増やします。
  • CPUを増やしてスケジューリング・シミュレーションを実行し、スケーリングをより迅速に決定します。
balanceSimilarNodeGroups なし

Cluster Autoscalerが同様のノード・プール間でノードを均等に分散するかどうかを制御します。

大規模なクラスタでは通常、複数のノード・プールが使用されるため、プール間で不均一にスケーリングされる可能性があります。

この引数を有効にすると、計算のオーバーヘッドが追加され、スケーリングの決定の複雑さがわずかに増します。

この引数が無効な場合:

  • ノードは、同様のノード・プール間で不均等に分散される場合があります。
  • 特定のノード・プールがホットスポットになる場合があります。
  • 耐障害性が低下する可能性があります。

複数のノード・プールがある環境、およびバランスの取れたスケーリングが必要な高可用性シナリオでは、この引数を有効にします。

numOfReplicas なし

Cluster Autoscalerポッドの数を制御します。

Cluster Autoscalerはリーダー選挙を使用します。スケーリングを決定するのは1つのアクティブ・インスタンスのみで、他のレプリカでは高可用性が提供されます。

カウントが小さすぎると、ノード障害、ポッド・クラッシュまたはアップグレードによって、自動スケーリングの決定が一時的に停止することがあります。これにより、クラスタのAutoscalerが再度使用可能になるまで、保留中のワークロードのノード・スケール・アップおよび十分に利用されていないノードのスケール・ダウンが遅延することがあります。

高可用性を実現するには、2つまたは3つのレプリカを使用します。

affinity / nodeSelectors / tolerations なし

Cluster Autoscalerは、重要なコントロール・プレーン・コンポーネントです。

ポッドの配置は、Cluster Autoscalerの安定性と信頼性に影響します。

これらの引数が適切に構成されていない場合:

  • Cluster Autoscalerは不安定なノードで実行される可能性があります。
  • Cluster Autoscalerは、リソース制約のあるノードで実行できます。
  • ポッドが再起動する可能性があります。
  • パフォーマンスが低下する可能性があります。
  • 十分なリソースがある専用システムまたはインフラストラクチャ・ノードでCluster Autoscalerを実行します。
  • ターゲット・システム・ノードが汚れている場合に許容範囲を構成します。
authType なし

Cluster AutoscalerがOCI APIを使用して認証する方法を定義します。

Cluster Autoscalerは、スケールアウト操作中にOCI APIを使用してノードを作成し、スケールイン操作中にノードを削除します。

  • 認証が失敗すると、スケーリング操作が妨げられます。
  • APIのレイテンシまたは障害により、ノードのプロビジョニングが遅延する可能性があります。
  • 信頼性の高い認証メカニズムを使用します。インスタンス・プリンシパルが推奨されます。
  • 必要な権限およびサービス制限が構成されていることを確認します。
rollingUpdate なし

Cluster Autoscalerのデプロイメント更新戦略を制御します。

Cluster Autoscalerのダウンタイムにより、スケーリングの決定が停止し、アップグレード時のクラスタの応答性が低下します。

この引数が適切に構成されていない場合:

  • すべてのレプリカが同時に再起動される場合があります。
  • スケーリング機能が一時的に使用できなくなる可能性があります。
  • maxUnavailable は慎重に構成してください。
  • 更新中に少なくとも1つのCluster Autoscalerインスタンスがアクティブなままであることを確認します。
maxNodesTotal あり

Cluster Autoscalerが管理できるノードの最大数を定義します。

この引数は、クラスタ・サイズの強い上限を設定し、制御されないスケールアウトを防ぎます。

値が小さすぎると、ポッドが Pending 状態のままの場合でも、Cluster Autoscalerはスケーリングを停止します。

値が大きすぎる場合:

  • クラスタがOCIテナンシまたはサービス制限に達する可能性があります。
  • コストは予想外に増えるかもしれません。

予期される最大クラスタ・サイズより少し大きい値を設定します。たとえば、最大20,000ノードを含むクラスタの場合は、 20000 より大きく設定します。

coresTotal あり

クラスタ全体のCPUコアの最小および最大合計数を定義します。

この引数は、CPU容量の集計スケーリングを制御し、プロビジョニング不足やオーバープロビジョニングの防止に役立ちます。

最大値が小さすぎる場合、Cluster Autoscalerはスケール・アップ操作をブロックします。

最大値が大きすぎると、過剰なノード・プロビジョニングによってコストが増加する可能性があります。

組織の計画最大CPU容量およびクラウド・リソース割当てに基づいて、coresTotalを設定します。coresTotalがピーク・ワークロードをサポートするのに十分な高さであることを確認します。

memoryTotal あり

クラスタ全体の最小および最大合計メモリーを定義します。

この引数は、クラスタ・メモリーの合計プロビジョニングを制御し、メモリーを大量に消費するワークロードに特に重要です。

最大値が小さすぎる場合、Cluster Autoscalerはスケールアップ操作を防ぎ、十分なメモリーなしでワークロードを残すことができます。

最大値が大きすぎると、クラスタが過剰にプロビジョニングされ、コストが増加する可能性があります。

最小値と最大値をノードプールのサイズ設定方法に合わせます。

maxEmptyBulkDelete あり

同時に削除できる空のノードの最大数を定義します。

この引数は、スケールダウン操作の速度を制御します。

値が小さすぎる場合:

  • スケールダウン操作に時間がかかる場合があります。
  • アイドル状態のリソースは、クラスタ内に長く残ることがあります。

値が大きすぎると、多数のノードが同時に削除される可能性があります。

  • 大規模クラスタの場合は、値を適度に増やします。
  • 積極的な一括削除は避けてください。
nodes あり

各ノード・プールのノードの最小数および最大数を定義します。

この引数は、各ノード・プールのスケーリング境界を制御します。

境界が制限しすぎると、ノード・プールは十分にスケーリングできません。

境界が許容しすぎると、ノードがノード・プール間で不均等に分散されることがあります。

  • ワークロード・タイプおよび可用性ドメインに基づいて、各ノード・プールの境界を構成します。
  • 値を balanceSimilarNodeGroups 設定に合せます。