25.4. 自動スケーリング


Horizontal Pod Autoscaler を作成することで、実行する Pod の最小数と最大数を指定するだけでなく、Pod がターゲットに設定する CPU の使用率 または メモリー使用率 を指定することができます。

Horizontal Pod Autoscaler の作成後に、これは Heapster で Pod のメトリクスのクエリーを試行します。Heapster が初期メトリクスを取得するまでに 1 分から 2 分の時間がかかる場合があります。

メトリクスが Heapster で利用可能になると、Horizontal Pod Autoscaler は必要なメトリクスの使用率に対する現在のメトリクスの使用率の割合を計算し、随時スケールアップまたはスケールダウンを実行します。スケーリングは一定間隔で実行されますが、メトリクスが Heapster に移されるまでに 1 分から 2 分の時間がかかる場合があります。

レプリケーションコントローラーの場合、このスケーリングはレプリケーションコントローラーのレプリカに直接対応します。デプロイメント設定の場合、スケーリングはデプロイメント設定のレプリカ数に直接対応します。自動スケーリングは Complete フェーズの最新デプロイメントにのみ適用されることに注意してください。

OpenShift Container Platform はリソースに自動的に対応し、起動時などのリソースの使用が急増した場合など必要のない自動スケーリングを防ぎます。unready 状態の Pod には、スケールアップ時の使用率が 0 CPU と指定され、Autoscaler はスケールダウン時にはこれらの Pod を無視します。既知のメトリクスのない Pod にはスケールアップ時の使用率が 0% CPU、スケールダウン時に 100% CPU となります。これにより、HPA の決定時に安定性が増します。この機能を使用するには、readiness チェック を設定して新規 Pod が使用可能であるかどうかを判別します。

25.4.1. CPU 使用率の自動スケーリング

CPU 使用率について自動スケーリングを行う際に、oc autoscale コマンドを使用し、実行する必要のある Pod の最大数と Pod がターゲットとして設定する必要のある平均 CPU 使用率を指定することができます。オプションとして Pod の最小数と Pod がターゲットとする平均の CPU 使用率を指定できます。指定しない場合は、OpenShift Container Platform サーバーからのデフォルト値が指定されます。

以下に例を示します。

$ oc autoscale dc/frontend --max 10 --cpu-percent=80
deploymentconfig "frontend" autoscaled

このサンプルコマンドにより、以下の定義を持つ既存の DeploymentConfig の Horizontal Pod Autoscaler が作成されます。

Horizontal Pod Autoscaler オブジェクト定義

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: frontend 1
spec:
  scaleTargetRef:
    apiVersion: apps.openshift.io/v1 2
    kind: DeploymentConfig 3
    name: frontend 4
    subresource: scale
  minReplicas: 1 5
  maxReplicas: 10 6
  targetCPUUtilizationPercentage: 80 7

1
この Horizontal Pod Autoscaler オブジェクトの名前。
2
スケーリングするオブジェクトの API バージョン:
  • ReplicationController については、v1 を使用します。
  • DeploymentConfig については、apps.openshift.io/v1 を使用します。
3
スケーリングするオブジェクトの種類 (ReplicationController または DeploymentConfig のいずれか)。
4
スケーリングする既存オブジェクトの名前。
5
スケールダウン時のレプリカの最小数。デフォルトは 1 です。
6
スケールアップ時のレプリカの最大数。
7
各 Pod が使用していることが期待される要求された CPU のパーセンテージ。

または、oc autoscale コマンドは Horizontal Pod Autoscaler の v2beta1 バージョンを使用する際に以下の定義を使用して Horizontal Pod Autoscaler を作成します。

apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
  name: hpa-resource-metrics-cpu 1
spec:
  scaleTargetRef:
    apiVersion: v1 2
    kind: ReplicationController 3
    name: hello-hpa-cpu 4
  minReplicas: 1 5
  maxReplicas: 10 6
  metrics:
  - type: Resource
    resource:
      name: cpu
      targetAverageUtilization: 50 7
1
この Horizontal Pod Autoscaler オブジェクトの名前。
2
スケーリングするオブジェクトの API バージョン:
  • ReplicationController については、v1 を使用します。
  • DeploymentConfig については、apps.openshift.io/v1 を使用します。
3
スケーリングするオブジェクトの種類 (ReplicationController または DeploymentConfig のいずれか)。
4
スケーリングする既存オブジェクトの名前。
5
スケールダウン時のレプリカの最小数。デフォルトは 1 です。
6
スケールアップ時のレプリカの最大数。
7
各 Pod が使用していることが予想される要求された CPU の平均のパーセンテージ。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.