企業がユーザーベースの拡大に合わせてアプリケーションを拡張するにつれて、コストを管理しやすくしながら高いパフォーマンスを維持することがバランスをとることになります。 この文脈で頻繁に登場する用語の XNUMX つは、Kubernetes の水平ポッド自動スケーリング (HPA) です。 Kubernetes は急速にコンテナ オーケストレーションの事実上の標準となり、HPA はその最も強力な機能の XNUMX つです。 ただし、HPA に詳しくない場合、HPA に飛び込むのは迷路に入り込むように感じるかもしれません。
このブログ投稿は、知っておくべき XNUMX つの重要な側面について説明することで、Kubernetes の水平ポッド自動スケーリングをわかりやすく説明することを目的としています。 シートベルトを締める; 私たちはこの複雑なトピックをもっと親しみやすいものにしようとしています。
1. 水平ポッド自動スケーリング (HPA) とは何ですか?
HPA は、Kubernetes デプロイメントまたは ReplicaSet 内のポッド レプリカの数を調整する自動システムです。 簡単に言うと、観察された CPU またはメモリの使用量に基づいて、ポッドの数をスケールインまたはスケールアウトします。 そうすることで、手動介入なしでアプリケーションがサービス要件を満たすことができるようになり、DevOps チームは他のタスクに集中できるようになります。
HPA は、Kubernetes の広範な自動スケーリング エコシステムの一部にすぎません。 Kubernetes は、さまざまなスケーリング戦略に焦点を当てた垂直ポッド自動スケーリングとクラスター自動スケーリングも提供します。 ご興味がございましたら、Kubernetes の自動スケーリングの詳細をご覧ください。 こちら.
HPA を設定するときは、システムがアプリケーションをスケールする時期を決定するメトリクスとしきい値を定義します。 たとえば、CPU 使用率が一定期間 80% を超えた場合、Kubernetes がポッド レプリカを追加して負荷を分散するように指定できます。
2. サポートされるメトリクスのタイプ
HPA は、CPU やメモリだけでなく、さまざまな種類のメトリクスに基づいて動作できます。 サポートされているメトリクスのタイプは次のとおりです。
- リソース メトリック: これらは、CPU やメモリなど、コンテナーによって使用されるリソースに関連するメトリックです。
- カスタム メトリック: XNUMX 秒あたりのリクエスト数など、アプリケーションに固有のカスタム メトリックを作成できます。
- 外部メトリクス: これらのメトリクスは Kubernetes オブジェクトに関連付けられておらず、Prometheus などの外部ソースから取得されます。
アプリケーションに関連するメトリクスの種類を理解すると、より効果的な HPA 戦略を設定するのに役立ちます。
3. 制御ループ
HPA の中心となるのは、ポッドをスケールアップする必要があるかスケールダウンする必要があるかを定期的にチェックする制御ループです。 制御ループは関連するメトリックを取得し、定義したしきい値と比較します。 メトリクスがこれらのしきい値に違反すると、制御ループがスケーリングをトリガーします。
この制御ループの頻度は構成できますが、あまりに積極的に設定すると、スケーリング イベントが頻繁に発生し、アプリケーションが不安定になる可能性があることに注意してください。
4. Kubectl コマンド
Kubernetes で HPA を実装するには、一連の kubectlコマンド。 たとえば、HPA オブジェクトを作成するには、次を使用します。
kubectl 自動スケーリング デプロイメント–min=2 –max=5 –cpu-percent=80
これにより、指定されたデプロイメントが自動スケールされ、最小 2 つ、最大 5 つのポッド レプリカが確保され、CPU 使用率が 80% を超えるとスケールアップされます。
次のように HPA ステータスを説明することもできます。
kubectl は HPA を記述します
これらのコマンドは、HPA システムと直接対話するのに役立ち、既存のワークフローへの統合が容易になります。
5. 制限事項とベストプラクティス
HPA は特効薬ではありません。その制限を理解することで、HPA をより効果的に使用できるようになります。
- クールダウン期間: システムの拡張が早すぎて不安定になることを防ぐために、クールダウン期間を実装します。
- ポッド数の最小値と最大値: 不要なスケーリングを防ぐために、常に適切な最小値と最大値を定義してください。
- 複数のメトリクス: 複数のメトリクスを使用すると、よりバランスのとれたスケーリング戦略を提供できますが、複雑さも増します。 これを設定するときは注意してください。
- メトリクス収集: 信頼できるメトリクス収集システムが導入されていることを確認します。 誤ったメトリクスは、非効率なスケーリングにつながる可能性があります。
まとめ
水平ポッド自動スケーリングは、アプリケーションをスケーリングするタスクを大幅に簡素化できる Kubernetes の堅牢な機能です。 HPA とは何か、HPA がサポートするメトリクスの種類、制御ループの仕組み、および HPA を最大限に活用するための関連する kubectl コマンドを理解することが重要です。 HPA の制限とベスト プラクティスを認識することは、HPA をより効果的に実装するのにも役立ちます。
これで、HPA の謎が解けました。 これで、アプリケーションを効率的かつ効果的にスケールするための準備が整い、自信を持って Kubernetes 自動スケーリングの世界に足を踏み入れることができます。