導入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 コンポーネントの完全な分析: 知っておくべきすべての秘密
私の周りの人から、AWS の EC2 ホストは安定していて使いやすいが、その価格は中国の他のいくつか...
ウェブサイトの外部リンクの作り方に関する記事は無数にありますが、これらの記事の多くは、具体的な方法が...
ゲーム開発プラットフォームRobloxは、子どもに適したプログラミング言語を積極的に推進している(写...
「テクノロジーはイノベーションの原動力です。産業発展の内発的原動力とイノベーションの原動力が融合すれ...
イベント トラッキング (TrackEvent) を使用すると、Flash Web サイトの要素、埋...
10月の電子商取引トラフィック分布(Huihui.comデータ)ダブル11のプロモーションの一部(中...
現代の企業の運用は、さまざまな仮想マシン、物理サーバー、独自のストレージ ハードウェアにまたがる複雑...
今日のインターネットは、10 年以上前のように、単にテキストや画像を読む場所ではなく、新聞、テレビ、...
百度の手動介入問題に関しては、誰もが知っていますが、百度の関係者はそのような仕組みがあるかどうかにつ...
多くの人は、Netflix、TVB などのビデオを視聴するために VPS を入手したいと考えており、...
多くの初心者の友人は BandwagonHost の使い方がわからないため、どこでも Bandwag...
タオバオアフィリエイトは近年衰退し始めています。その評判の大きな変化は、すべてその創始者によって引き...
v.ps 本日、日本の東京データセンターにある「パフォーマンス KVM VPS」を使用しました。これ...
1. 関連キーワードを選択する 2. 具体的なキーワードを選択する 「Carpenter Tools...
1.4.1 MVCフレームワークパターンの実装(2)ステップ 3: Controllers/Defa...