Container Service for Kubernetes (ACK) Serverlessは、エラスティックコンテナインスタンスに基づく強力なスケーリング機能を提供します。 ACKサーバーレスクラスターは、事前定義されたスケーリングポリシーに基づいて、短時間で元のサイズの複数倍にスケールアウトでき、コンピューティングパワーの需要が低下したときにすばやくスケールインして、コストを削減できます。 このトピックでは、ACKサーバーレスクラスター内のポッド数を直接制御し、負荷認識スケーリングポリシーを設定する方法について説明します。
このトピックのチュートリアルを完了するには、約USD 0.5 (インスタンスの稼働時間が30分) を支払う必要があります。 このトピックのチュートリアルを完了した後、できるだけ早い機会にリソースをリリースすることをお勧めします。
前提条件
webアプリケーションがデプロイされます。 詳細については、「NGINXを使用したwebアプリケーションのデプロイ」をご参照ください。
手順1: metrics-serverのインストール
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
[ログと監視] タブをクリックして、metrics-serverカードを見つけ、カードの右下隅にある [インストール] をクリックします。
ステップ2: スケールポッド
コンソールの使用
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
nginx-deployという名前の [デプロイ] をクリックして、詳細ページに移動します。
ページの右上にある [スケール] をクリックします。 [スケール] ダイアログボックスで、[希望するポッド数] を10に設定し、[OK] をクリックします。
ページが更新されると、9つの新しいポッドが作成されます。 これは、ポッドがスケールアウトされていることを示します。
ポッドの数を1に変更するには、手順4を繰り返します。
ページが更新されると、ポッドの数は1になります。 これは、ポッドがスケールインされていることを示します。
kubectlの使用
次のコマンドを実行して、展開の詳細を照会します。
kubectl get deploy
期待される出力:
の名前は日付まで利用可能な年齢を準備しています nginx-deploy 1/1 1 1 9m3 2s
次のコマンドを実行し、ポッド数を10にスケーリングします。
kubectl scale deploy nginx-deploy -- replicas=10
期待される出力:
deployment.extensions/nginx-deploy scaled
次のコマンドを実行して、作成されたポッドを照会します。
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
次のコマンドを実行して、ポッドの数を1にスケーリングします。
kubectl scale deploy nginx-deploy -- replicas=1
期待される出力:
deployment.extensions/nginx-deploy scaled
次のコマンドを実行して、作成されたポッドを照会します。
kubectl getポッド
期待される出力:
の名前準備ができているステータスの履歴書 nginx-deploy-55d8dcf755-bqhcz 1/1ランニング0 1m
手順3: 負荷対応スケーリングの設定
コンソールの使用
[デプロイの詳細] ページの [ポッドスケーリング] タブをクリックします。 次に、HPAの横にある [作成] をクリックします。
[作成] ダイアログボックスで、次のパラメーターを設定し、[OK] をクリックします。
パラメーター
例
名前
nginx-deploy
メトリック
メトリック名: CPU使用率
しきい値: 20%
最大 コンテナー
10
最小 コンテナー
1
kubectlを使う
次のコマンドを実行して、CPU使用率メトリックに基づいてスケーリングポリシーを作成します。
スケーリングポリシーが適用された後、デプロイは、コンテナーの平均CPU使用率を50% に維持するために、ポッドの数を1 ~ 10の範囲内でスケーリングします。
kubectl autocale deployment nginx-deploy -- cpu-percent=20 -- min=1 -- max=10
期待される出力:
horizontalpodautoscaler.autoscaling/nginx-自動スケールのデプロイ
次のコマンドを実行して、スケーリングポリシーを照会します。
kubectl get hpa
期待される出力:
名前の参照ターゲットは、レプリカスの年齢を強調します nginx-deployデプロイメント /nginx-deploy 0%/20% 1 10 1 35s
手順4 (オプション): スケーリングポリシーのテスト
クラスター内のコンテナーの負荷を増やして、スケーリングポリシーをテストできます。 クラスター内のコンテナーの負荷を増やすには、次の手順を実行します。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[クラスター情報] をクリックします。
[デプロイの詳細] ページの [ポッド] タブをクリックします。 次に、ポッドに接続する最初のポッドの [操作] 列で
を選択します。表示されるページで次のコマンドを実行します。 このコマンドは、CPU負荷を最大限に増やすために無限ループを作成します。
while : ; do : ; done
コンソールに戻り、[ポッド] タブをクリックします。 次に、[モニター] 列のアイコンをクリックして、コンテナーのCPU負荷を表示します。 1分待ってからもう一度アイコンをクリックしてCPUの負荷を確認します。
ページ右上の
アイコンをクリックして、デプロイ情報を更新します。 4つのポッドが作成されたことが表示されます。
ポッドのCPU使用率が100% に達しました。 他の4つのポッドのCPU使用率は0% です。 ポッドの平均CPU使用率は20% に達します。 クラスターがスケールアウトされた後、CPU使用率は安定します。
ステップ3のターミナルページに戻り、Ctrl + Cを押してループを終了します。 これにより、CPU使用率が0% に減少します。
説明ターミナルページを閉じた場合は、
top
コマンドを実行して無限ループプロセスを表示し、kill -9 <PID>
コマンドを実行してプロセスを終了します。コンソールに戻り、5〜10分待ってから、アイコンをクリックし
ます。 ポッドの数が1になります。
ステップ5: リリースリソース
クラスターが不要になった場合は、次の手順を実行してリソースをリリースします。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、クラスターの [操作] 列で
を選択します。[クラスターの削除] ダイアログボックスで、[クラスターによって作成されたALBインスタンスの削除] 、[クラスターによって作成されたAlibaba Cloud DNS PrivateZoneインスタンスの削除] 、[上記の情報を理解し、指定したクラスターを削除する] を選択し、[OK] をクリックします。