25.4.2. メモリー使用率の自動スケーリング
CPU ベースの自動スケーリングとは異なり、メモリーベースの自動スケーリングでは、oc autoscale
コマンドの代わりに YAML を使用して Autoscaler を指定することが必要です。オプションとして、Pod の最小数および Pod がターゲットとする必要のある平均のメモリー使用率を指定できます。 これらを指定しない場合は、OpenShift Container Platform サーバーからのデフォルト値がこれらに指定されます。
メモリー使用率の自動スケーリングはテクノロジープレビュー機能として提供されています。テクノロジープレビュー機能は、Red Hat の実稼働環境でのサービスレベルアグリーメント (SLA) ではサポートされていないため、Red Hat では実稼働環境での使用を推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポートについての詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
メモリーベースの自動スケーリングは、自動スケーリング API の v2beta1
バージョンでのみ利用できます。
メモリーベースの自動スケーリングを使用するには、以下を実行します。
メモリーベースの自動スケーリングを有効にします。
クラスターの
master-config.yaml
ファイルに以下を追加します。... apiServerArguments: runtime-config: - apis/autoscaling/v2beta1=true ...
OpenShift Container Platform サービスを再起動します。
$ master-restart api $ master-restart controllers
必要な場合は、スケーリングするオブジェクトの名前を取得します。
$ oc get dc NAME REVISION DESIRED CURRENT TRIGGERED BY frontend 1 5 0 config
以下を
hpa.yaml
などのファイルに置きます。apiVersion: autoscaling/v2beta1 kind: HorizontalPodAutoscaler metadata: name: hpa-resource-metrics-memory 1 spec: scaleTargetRef: apiVersion: apps.openshift.io/v1 2 kind: DeploymentConfig 3 name: frontend 4 minReplicas: 2 5 maxReplicas: 10 6 metrics: - type: Resource resource: name: memory targetAverageUtilization: 50 7
- 1
- この Horizontal Pod Autoscaler オブジェクトの名前。
- 2
- スケーリングするオブジェクトの API バージョン:
-
ReplicationController については、
v1
を使用します。 -
DeploymentConfig については、
apps.openshift.io/v1
を使用します。
-
ReplicationController については、
- 3
- スケーリングするオブジェクトの種類 (
ReplicationController
またはDeploymentConfig
のいずれか)。 - 4
- スケーリングする既存オブジェクトの名前。
- 5
- スケールダウン時のレプリカの最小数。デフォルトは
1
です。 - 6
- スケールアップ時のレプリカの最大数。
- 7
- 各 Pod が使用していることが予想される要求されたメモリーの平均のパーセンテージ。
次に上記のファイルから Autoscaler を作成します。
$ oc create -f hpa.yaml
メモリーベースの自動スケーリングを機能させるには、メモリー使用量がレプリカ数と比例して増減する必要があります。平均的には以下のようになります。
- レプリカ数が増えると、Pod ごとのメモリー (作業セット) の使用量が全体的に減少します。
- レプリカ数が減ると、Pod ごとのメモリー使用量が全体的に増加します。
OpenShift web コンソールを使用して、アプリケーションのメモリー動作を確認し、メモリーベースの自動スケーリングを使用する前にアプリケーションがそれらの要件を満たしていることを確認します。