導入Kube-downscaler は、Kubernetes でポッド リソースが自動的にスケールダウンされるタイミングをユーザーが定義できるオープン ソース ツールです。これにより、オフピーク時のリソース使用量が削減され、インフラストラクチャ コストが削減されます。 この記事では、kube-downscaler の機能、インストール、構成、使用例、将来の展望について詳しく説明します。 kube-downscalerの機能Kube-downscaler は、Kubernetes クラスター内のアプリケーションをアップグレードまたはダウングレードするための強力なスケジュールベースのツールです。このセクションでは、ツールの主な機能のいくつかについて説明します。 Kubernetesの機能やツールとの互換性Kube-downscaler は Horizontal Pod Autoscaling (HPA) もサポートしており、HPA と組み合わせて使用することで、アプリケーションに必要な数のレプリカが維持されるようにすることができます。これにより、kube-downscaler は Kubernetes でのアプリケーション スケーリングに対してさらなる柔軟性ときめ細かい制御を提供できるようになります。 Karpenter と kube-downscaler は、Kubernetes クラスターに完全かつ強力なリソース管理ソリューションを提供するために一緒に使用できる 2 つのツールです。 Karpenter と kube-downscaler を組み合わせることで、Kubernetes クラスターは水平スケーリングと垂直スケーリングの両方のメリットを享受できます。 Downscaler を使用するとポッドの数を減らすことができ、Karpenter はポッドをより少数のマシンまたは異なるタイプのマシンに統合することでノードの使用率を最適化します。 定義された期間に基づいてデプロイメントレプリカを自動的にスケーリングするKube-downscaler は、事前に定義された期間に基づいてデプロイメント レプリカを自動的にスケーリングできます。つまり、日、週、または月の特定の時間にレプリカの数を増減するスケジュールを設定できます。 たとえば、アプリケーションのトラフィックが特定の時間帯に高くなることがわかっている場合は、その時間帯にレプリカを自動的にスケールアップし、トラフィックが減少したときにレプリカをスケールダウンするように kube-downscaler を構成できます。 これにより、ピーク負荷が発生して HPA によって処理されるまで待つのではなく、ピーク負荷を予測してスケーリングできるようになります。これにより、リソースの使用が最適化され、アプリケーションが常に利用可能で応答性があることが保証されます。 しかし、Kube-downscaler は主にレプリカをスケールダウンしてクラスターのコストを最適化するために使用され、スケーリングの管理には通常 HPA が使用されます。 kube-downscalerのインストールと設定Kubernetes クラスターへの kube-downscaler のインストール手順GitHub から kube-downscaler リポジトリをクローンします。 kube-downscaler ディレクトリに入ります: deploy/kube-downscaler.yaml ファイルを編集して、特定のニーズに合わせて構成をカスタマイズします。たとえば、タイムゾーン、スケジュール、スケーリング ルールを調整できます。 Kubernetes クラスターに構成を適用します。 このコマンドは、kube-downscaler コントローラーをデプロイし、kube-downscaler デプロイメントを作成します。 kube-downscalerデプロイメントのログを確認することで、kube-downscaler コントローラーが実行されていることを確認できます。 インストールが完了したら、いくつかの設定を実行する必要があります。 特定のユーザーのニーズに応じて kube-downscaler を構成するKube-downscaler は、Kubernetes デプロイメント オブジェクトの注釈を使用してスケーリング プランをカスタマイズします。 デプロイメント オブジェクトの downTimePeriod アノテーションを使用すると、デプロイメントをスケーリングしないダウンタイム期間を指定できます。 minReplicas アノテーションを使用すると、デプロイメントのレプリカの最小数を設定できます。 これらのフィールドを kube-downscaler アノテーションと組み合わせることで、特定のビジネス ニーズとリソース使用パターンに基づいてカスタマイズされたスケーリング プランを作成できます。 これらのフィールドを調整することで、アプリケーションの可用性とコスト効率を最適化する方法でデプロイメントをスケーリングするように kube-downscaler を構成できます。 以下は、kube-downscaler を使用したデプロイメントの簡単な構成です。 この構成では、月曜日から金曜日の午前 0 時から午前 7 時まで (ヨーロッパ/ベルリンのタイムライン)、レプリカの数が 1 に削減されます。 kube-downscaler は、定義されたスケジュールに基づいてポッドのスケールダウンを自動的に開始します。 これで、Kubernetes クラスターに kube-downscaler をインストールして実行しました。 アルゴリズムKube-downscaler は、次の条件がすべて満たされた場合にデプロイメントのレプリカをスケールダウンします。
最小レプリカ数レプリカの最小数デフォルトでは、デプロイメントはコピー 0 個までスケールダウンされます。これは、デプロイメントまたはその名前空間のアノテーション downscaler/downtime-replicas を介して、または --downtime-replicas を使用して CLI を介して構成できます。 例: downscaler/downtime-replicas: "1"。 特定の作業負荷通常の HorizontalPodAutoscaler の場合、このフィールドをゼロに設定することはできないため、 downscaler/downtime-replicas は少なくとも 1 に設定する必要があります。 CronJobs に関しては、その状態は suspend: true として定義されます。 注記デフォルトの 15 分の猶予期間は、新しい nginx デプロイメントに適用されることに注意してください。
デプロイメントで HorizontalPodAutoscaler (HPA) を使用する場合は、次の点に注意してください。
--downtime-replicas=1 を使用して HPA でダウンスケーラーを有効にするには、デプロイメントと HPA に次のアノテーションを追加してください。 詳細設定稼働時間/停止時間の仕様ダウンスケーラーは、コマンドライン引数、環境変数、または Kubernetes アノテーションを介して構成されます。 時間定義 ( DEFAULT_UPTIME など) は、コンマ区切りの仕様リストを受け入れます。たとえば、次の構成では、営業時間外にすべてのデプロイメントがスケールダウンされます。 週末と金曜日の20:00以降のみズームアウトします。 各時間の指定は、次の 2 つの形式のいずれかになります。
期間に基づく代替ロジック厳密な稼働時間や停止時間の代わりに、アップグレードまたはスケールダウンの期間を選択できます。時間の定義は同じです。この場合、ズームインまたはズームアウトは指定された期間のみ実行され、残りの時間は無視されます。 スケールアップまたはスケールダウン サイクルが構成されている場合、稼働時間と停止時間は無視されます。つまり、一部のオプションは相互に排他的です。たとえば、 --default-downtime または --downscale-period のいずれかを使用できますが、両方は使用できません。 この定義により、19:00 から 20:00 の間にクラスターがスケールダウンされます。クラスターを手動でアップグレードすると、翌日の 19:00 ~ 20:00 まではクラスターはスケールダウンされません。 コマンドラインオプション使用可能なコマンドラインオプション:
名前空間のデフォルトDEFAULT_UPTIME 、 DEFAULT_DOWNTIME 、および FORCE_UPTIME の除外も、名前空間アノテーションを使用して構成できます。設定されている場合、これらの値は他のグローバル デフォルトよりも優先されます。 名前空間レベルでは、次の注釈がサポートされています。
ユースケースこのツールの主な使用例は、Kubernetes クラスター リソースの使用率を最適化することでコストを削減することです。ただし、クラスターを事前にウォームアップし、HPA への過度の依存を回避するためにも使用できます。 これは主な目的ではありませんが、この組み合わせにより、インフラストラクチャ コストを最小限に抑えながらアプリケーションの高可用性を確保するための代替ソリューションが提供されます。 コストを削減kube-downscaler のもう 1 つの使用例は、ピーク使用時のサービス停止を防ぐことです。需要が高い期間にリソースを拡張する計画を定義することにより、kube-downscaler は事前にデプロイメントを拡張し、HPA レイテンシを回避して、ピーク使用時でもアプリケーションの可用性と応答性を維持できるようにします。 サービス中断防止kube-downscaler のもう 1 つの使用例は、ピーク使用時のサービス停止を防ぐことです。需要が高い期間にリソースを拡張する計画を定義することにより、kube-downscaler は事前にデプロイメントを拡張し、HPA レイテンシを回避して、ピーク使用時でもアプリケーションの可用性と応答性を維持できるようにします。 提案事前定義されたスケジュールに基づいてスケーリングしますが、すべてのユースケースに適しているとは限りません。さらに、自動スケーリングはサポートされていないため、ユーザーは変化する需要に合わせてスケーリング プランを手動で調整する必要があります。 検討すべきもう一つの解決策は Keda です。 Keda は、Kubernetes アプリケーションに動的な自動スケーリング機能を提供するオープンソース プロジェクトです。 Keda を使用すると、ユーザーはキューの長さ、CPU 使用率、カスタム メトリックなどのさまざまなメトリックに基づいてカスタム スケーリング ルールを設定できます。 これにより、リソースの使用をより細かく制御できるようになり、アプリケーションが常に需要に応じて適切に拡張されることが保証されます。 さらに、Keda は、ステートフル アプリケーションやステートレス アプリケーションを含む幅広い Kubernetes アプリケーションと互換性があり、Azure Event Hubs、Kafka、RabbitMQ などの複数のイベント ソースをサポートしています。 結論はKube-downscaler は、Kubernetes クラスター内のリソース使用量を管理するための強力なツールです。スケーリング プランを定義することで、ユーザーはクラスター内のリソース使用を最適化し、コストを削減しながら、ピーク使用時でもアプリケーションの可用性と応答性を維持できます。 kube-downscaler は Kubernetes クラスターのリソース使用量を管理するための貴重なツールですが、いくつかの制限があります。リソースのスケーリングをより細かく制御する必要がある場合、または自動スケーリング機能が必要な場合は、Keda などの代替ソリューションを検討する価値があるかもしれません。 |
<<: k3sup を使って 1 分で K3s クラスターを素早く構築する
>>: K8s コンポーネントの完全な分析: 知っておくべきすべての秘密
ウェブサイトを構築するとき、私たちはみな、ウェブサイトをもっと良くしたいと願っています。要件がどんど...
著者 |王成明1. 背景Dubbo 3.1 のリリースにより、Dubbo はクラウド ネイティブへの...
FTL Super Cloudは現在、5月1日の労働者の日特別割引を提供しています。中国本土、香港、...
[51CTO.com からのオリジナル記事] バージニア鹿は現存する最古の鹿です。これは偶然ではなく...
「検索エンジン技術の基礎」という本には、検索エンジンはコンテンツの類似性、データ品質評価結果、ユーザ...
スティーブ・ジョブズのエンジェル投資家、李宗南氏(写真提供:テンセント・テクノロジー)テンセントテク...
みなさんこんにちは、シャオシです。2009年にSEOの仕事を始めたばかりの頃を覚えています。当時は外...
最近、Kubernetes が Docker を放棄するというニュースが業界で広く注目を集めています...
滴滴出行がユーザー情報の問題により規制当局から市場からの撤退を命じられた後、オンライン配車サービス市...
サイトトラフィックがサイト運営の基盤であるならば、トラフィックのコンバージョン率は利益の基盤となりま...
zji.netは今年618年中特別割引キャンペーンを開始しました。香港荃湾の20M(cn2+bgp)...
Hostcat は virmach.com の所有者に virmach VPS の特別割引コードをい...
血なまぐさい、痛い教訓です。6月28日、Baiduはインターネット上の低品質コンテンツを持つウェブサ...
Rackburst が HostCat に登場するのは今回で 2 回目です。安価で信頼性の高い英国の...
実は、機械業界と医療業界の SEO のジレンマには多くの類似点がありますが、私はこれまでずっと医療業...