すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:ACKサーバーレスクラスターの自動スケーリングの設定

最終更新日:Dec 14, 2024

Container Service for Kubernetes (ACK) Serverlessは、エラスティックコンテナインスタンスに基づく強力なスケーリング機能を提供します。 ACKサーバーレスクラスターは、事前定義されたスケーリングポリシーに基づいて、短時間で元のサイズの複数倍にスケールアウトでき、コンピューティングパワーの需要が低下したときにすばやくスケールインして、コストを削減できます。 このトピックでは、ACKサーバーレスクラスター内のポッド数を直接制御し、負荷認識スケーリングポリシーを設定する方法について説明します。

重要

このトピックのチュートリアルを完了するには、約USD 0.5 (インスタンスの稼働時間が30分) を支払う必要があります。 このトピックのチュートリアルを完了した後、できるだけ早い機会にリソースをリリースすることをお勧めします。

前提条件

webアプリケーションがデプロイされます。 詳細については、「NGINXを使用したwebアプリケーションのデプロイ」をご参照ください。

手順1: metrics-serverのインストール

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、[操作] > [アドオン] を選択します。

  3. [ログと監視] タブをクリックして、metrics-serverカードを見つけ、カードの右下隅にある [インストール] をクリックします。

ステップ2: スケールポッド

コンソールの使用

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[ワークロード] > [デプロイ] を選択します。

  3. nginx-deployという名前の [デプロイ] をクリックして、詳細ページに移動します。

  4. ページの右上にある [スケール] をクリックします。 [スケール] ダイアログボックスで、[希望するポッド数] を10に設定し、[OK] をクリックします。

    ページが更新されると、9つの新しいポッドが作成されます。 これは、ポッドがスケールアウトされていることを示します。

  5. ポッドの数を1に変更するには、手順4を繰り返します。

    ページが更新されると、ポッドの数は1になります。 これは、ポッドがスケールインされていることを示します。

kubectlの使用

  1. 次のコマンドを実行して、展開の詳細を照会します。

    kubectl get deploy

    期待される出力:

    の名前は日付まで利用可能な年齢を準備しています
    nginx-deploy 1/1 1 1 9m3 2s 
  2. 次のコマンドを実行し、ポッド数を10にスケーリングします。

    kubectl scale deploy nginx-deploy -- replicas=10

    期待される出力:

    deployment.extensions/nginx-deploy scaled
  3. 次のコマンドを実行して、作成されたポッドを照会します。

    kubectl getポッド

    期待される出力:

    の名前準備ができているステータスの履歴書
    nginx-deploy-55d8dcf755-8jlz2 1/1ランニング0 39s
    nginx-deploy-55d8dcf755-9jbzk 1/1ランニング0 39s
    nginx-deploy-55d8dcf755-bqhcz 1/1ランニング0 38s
    nginx-deploy-55d8dcf755-bxk8n 1/1ランニング0 38s
    nginx-deploy-55d8dcf755-cn6x9 1/1ランニング0 38s
    nginx-deploy-55d8dcf755-jsqjn 1/1ランニング0 38s
    nginx-deploy-55d8dcf755-lhp8l 1/1ランニング0 38s
    nginx-deploy-55d8dcf755-r2clb 1/1ランニング0 38s
    nginx-deploy-55d8dcf755-rchhq 1/1ランニング0 10m
    nginx-deploy-55d8dcf755-xspnt 1/1ランニング0 38s 
  4. 次のコマンドを実行して、ポッドの数を1にスケーリングします。

    kubectl scale deploy nginx-deploy -- replicas=1

    期待される出力:

    deployment.extensions/nginx-deploy scaled
  5. 次のコマンドを実行して、作成されたポッドを照会します。

    kubectl getポッド

    期待される出力:

    の名前準備ができているステータスの履歴書
    nginx-deploy-55d8dcf755-bqhcz 1/1ランニング0 1m 

手順3: 負荷対応スケーリングの設定

コンソールの使用

  1. [デプロイの詳細] ページの [ポッドスケーリング] タブをクリックします。 次に、HPAの横にある [作成] をクリックします。

  2. [作成] ダイアログボックスで、次のパラメーターを設定し、[OK] をクリックします。

    パラメーター

    名前

    nginx-deploy

    メトリック

    メトリック名: CPU使用率

    しきい値: 20%

    最大 コンテナー

    10

    最小 コンテナー

    1

kubectlを使う

  1. 次のコマンドを実行して、CPU使用率メトリックに基づいてスケーリングポリシーを作成します。

    スケーリングポリシーが適用された後、デプロイは、コンテナーの平均CPU使用率を50% に維持するために、ポッドの数を1 ~ 10の範囲内でスケーリングします。

    kubectl autocale deployment nginx-deploy -- cpu-percent=20 -- min=1 -- max=10

    期待される出力:

    horizontalpodautoscaler.autoscaling/nginx-自動スケールのデプロイ
  2. 次のコマンドを実行して、スケーリングポリシーを照会します。

    kubectl get hpa

    期待される出力:

    名前の参照ターゲットは、レプリカスの年齢を強調します
    nginx-deployデプロイメント /nginx-deploy 0%/20% 1 10 1 35s 

手順4 (オプション): スケーリングポリシーのテスト

クラスター内のコンテナーの負荷を増やして、スケーリングポリシーをテストできます。 クラスター内のコンテナーの負荷を増やすには、次の手順を実行します。

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[クラスター情報] をクリックします。

  3. [デプロイの詳細] ページの [ポッド] タブをクリックします。 次に、ポッドに接続する最初のポッドの [操作] 列で [ターミナル] > [cpu-usage] を選択します。

  4. 表示されるページで次のコマンドを実行します。 このコマンドは、CPU負荷を最大限に増やすために無限ループを作成します。

    while : ; do : ; done
  5. コンソールに戻り、[ポッド] タブをクリックします。 次に、[モニター] 列のアイコンをクリックして、コンテナーのCPU負荷を表示します。 1分待ってからもう一度アイコンをクリックしてCPUの負荷を確認します。

  6. ページ右上の刷新按钮.pngアイコンをクリックして、デプロイ情報を更新します。 4つのポッドが作成されたことが表示されます。

    ポッドのCPU使用率が100% に達しました。 他の4つのポッドのCPU使用率は0% です。 ポッドの平均CPU使用率は20% に達します。 クラスターがスケールアウトされた後、CPU使用率は安定します。

  7. ステップ3のターミナルページに戻り、Ctrl + Cを押してループを終了します。 これにより、CPU使用率が0% に減少します。

    説明

    ターミナルページを閉じた場合は、topコマンドを実行して無限ループプロセスを表示し、kill -9 <PID> コマンドを実行してプロセスを終了します。

  8. コンソールに戻り、5〜10分待ってから、アイコンをクリックし刷新按钮.pngます。 ポッドの数が1になります。

ステップ5: リリースリソース

クラスターが不要になった場合は、次の手順を実行してリソースをリリースします。

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、クラスターの [操作] 列で [詳細] > [削除] を選択します。

  3. [クラスターの削除] ダイアログボックスで、[クラスターによって作成されたALBインスタンスの削除][クラスターによって作成されたAlibaba Cloud DNS PrivateZoneインスタンスの削除][上記の情報を理解し、指定したクラスターを削除する] を選択し、[OK] をクリックします。