アプリケーションのリソース使用量が予測可能で反復的なパターンに従う場合、Cron Horizontal Pod Autoscaler (CronHPA) を使用して、スケジュールに基づいて Pod をスケーリングできます。CronHPA は、予測可能なトラフィックのピークがあるシナリオや、スケジュールされたタスクを実行するのに最適です。
事前準備
Container Service for Kubernetes (ACK) は、ワークロードのスケーリング (スケジューリングレイヤー) とノードのスケーリング (リソースレイヤー) のための複数のソリューションを提供します。開始する前に、「オートスケーリング」を読み、各ソリューションのユースケースと制限事項を理解してください。
CronHPA のテンプレートとパラメーター
CronHPA は、時間ベースの Pod オートスケーラーである kubernetes-cronhpa-controller によって実装されます。cron のような構文を使用してスケジュールされたスケーリングポリシーを構成し、定期的なトラフィックの変動があるワークロードのリソースを動的に調整できます。CronHPA は、Deployment や StatefulSet など、scale サブリソースをサポートする任意の Kubernetes オブジェクトに適用できます。
ステップ 1:CronHPA アドオンのインストール
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
アプリの管理 タブをクリックし、ack-kubernetes-cronhpa-controller を見つけて、画面の指示に従ってアドオンをインストールします。
ステップ 2:CronHPA ジョブの作成
CronHPA ジョブを作成する前に、CronHPA アドオンがクラスターで実行中であること、およびターゲットアプリケーションに HPA オブジェクトが 1 つしかないことを確認してください。次の例では、ステートレスアプリケーション用に CronHPA ジョブを作成する方法を示します。他のタイプのワークロードでも手順は同様です。
アプリケーションの作成時
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
デプロイメント ページで、イメージによる作成 をクリックします。
作成する ページで、基本情報、コンテナー、サービス、およびスケジュールによるスケーリングを設定し、CronHPA をサポートする Deployment を作成します。
詳細な手順とパラメーターの説明については、「ステートレスワークロード (Deployment) の作成」をご参照ください。主要なパラメーターは以下のとおりです。
[基本情報]:アプリケーション名とレプリカ数を設定します。
[コンテナー]:イメージを設定し、コンテナーに必要な CPU およびメモリリソースを指定します。
[上級]:
スケーリング セクションで、[CronHPA] の 有効 チェックボックスをオンにします。アドオンがインストールされていない場合は、プロンプトに従ってインストールします。その後、スケジュールによるスケーリングの条件とパラメーターを設定します。
[スケジュール済みタスク名]:CronHPA ジョブの名前です。
[必要なレプリカの数量]:スケジュールされた時刻におけるアプリケーションのターゲットレプリカ数です。
[スケーリングスケジュール]:スケーリングジョブのスケジュールです。詳細については、「Kubernetes CronHPA Controller」をご参照ください。
既存のアプリケーションの場合
ワークロードページから
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
ターゲットワークロードの名前をクリックし、ポッドのスケーリング タブをクリックします。[CronHPA] セクションで、作成する をクリックし、CronHPA ジョブを設定します。
パラメーター
説明
[ジョブ名]
CronHPA ジョブの名前です。
[必要なレプリカの数量]
スケジュールされた時刻にアプリケーションがスケーリングされるレプリカ数です。
[スケーリングスケジュール]
スケーリングジョブのスケジュールです。CronHPA ジョブのスケジュールの設定方法の詳細については、「AliyunContainerService/kubernetes-cronhpa-controller」をご参照ください。
ワークロードスケーリングページ
このページは、許可リストに登録されたユーザーのみが利用できます。アクセスをリクエストするには、チケットを送信してください。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
ページの右上隅にある オートスケーリングを作成する をクリックします。
HPA および CronHPA タブをクリックし、ターゲットロードを選択する をクリックしてから、スケーリングポリシーを設定する セクションで [CronHPA] のチェックボックスをオンにします。
複数の CronHPA ジョブを追加できます。プロンプトに従って CronHPA ポリシーを設定し、OK をクリックします。
[スケジュールされた自動スケーリング名]:CronHPA オブジェクトのカスタム名です。
[ジョブ名]:CronHPA ジョブのカスタム名です。
[必要なレプリカの数量]:スケジュールされた時刻におけるアプリケーションのターゲットレプリカ数です。
[スケーリングスケジュール]:スケーリングジョブのスケジュールです。詳細については、「Kubernetes CronHPA Controller」をご参照ください。
kubectl の使用
cronhpa.yamlという名前のファイルを作成し、次の内容をコピーします。apiVersion: autoscaling.alibabacloud.com/v1beta1 kind: CronHorizontalPodAutoscaler metadata: name: cronhpa-sample namespace: default spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: nginx-deployment-basic # ターゲットワークロードの名前。 excludeDates: # スケーリングジョブを除外する日付 (Cron 形式)。 - "* * * 15 11 *" # 11 月 15 日を除外します。 - "* * * * * 5" # 毎週金曜日を除外します。 jobs: - name: "scale-down" schedule: "30 */1 * * * *" # 毎分 30 秒にトリガーされます (例:08:00:30、08:01:30)。 targetSize: 1 # ターゲットレプリカ数。 runOnce: false # ジョブを 1 回だけ実行するかどうかを指定します。デフォルト:false。 - name: "scale-up" schedule: "0 */1 * * * *" # 毎分 0 秒にトリガーされます (例:08:00:00、08:01:00)。 targetSize: 3 # ターゲットレプリカ数。 runOnce: false次のコマンドを実行して、既存のワークロード用の CronHPA ジョブを作成します。
kubectl apply -f cronhpa.yaml期待される出力:
cronhorizontalpodautoscaler.autoscaling.alibabacloud.com/cronhpa-sample created
関連操作
CronHPA ジョブの管理
CronHPA ジョブを作成した後、CronHPA のリストでそのステータスを表示できます。新しいジョブを追加するか、既存のジョブを変更するには、次のいずれかの方法を使用します。
ワークロードスケーリングページから
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
[CronHPA] タブをクリックします。対象の CronHPA ジョブの アクション 列で、編集 をクリックします。
ワークロードページから (Deployment を例として使用)
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
デプロイメント ページで、ターゲット Deployment の アクション 列にある 詳細 をクリックし、ポッドのスケーリング タブをクリックします。CronHPA セクションの アクション 列で、ジョブの追加または変更 をクリックします。
CronHPA と HPA の併用
詳細については、「CronHPA を HPA に対応させる」をご参照ください。