CronHPA、ビジネス需要の規則性を満たすためのスケーラブルな能力をサポートしています。

  要約:静的スケジューリングを使用してKubernetesリソーススケジューリングスケジューリングは、ポッドの要求リソースとノード割付け、リソースノードはポッドを収容するのに十分なリソースがあるかどうかを決定するために比較されます。各ノードの負荷がバランスしていない、そのクラスタリソースに割り当てられたコンテナ事業によって引き起こされる静的スケジューリング問題はすぐに終了されますが、クラスタ全体の負荷が非常に低いです。この記事ではKubernetesクラスタの負荷を最適化するための技術的な解決策の様々なご紹介します。
  
  なぜ静的スケジューリングKubernetes
  
  静的スケジューリングに関係なく、実際の負荷ノードの、リソース要求に応じて包装容器をスケジューリングするための手段。静的スケジューリングスケジューリング最大の利点は、それは関係なく、実際の負荷ノードの、非常に簡単にクラスタの負荷につながる、高ではないが、最大の欠点も明らかであり、簡単かつ効率的な、便利なクラスタリソース管理です。
  
  なぜKubernetesは静的スケジューリング、それを使用していますか?、一般的な動的スケジューリングはほとんど不可能である汎用性の高い動的スケジューリングを行うことをするので、それは別の企業のさまざまな要求を満たすことが困難であり、結果は逆効果になることがあります。それは我々がそれを試して、動的スケジューリング技術へ行く必要はありませんものではないのか?ありません!サービス属性のホスティングプラットフォームによっては、正しくスケジューラエクステンダを通じて正しい方法でいくつかの動的スケジューリングの決定を行うために重いKubernetesスケジューラを拡張することができます。
  
  クラスタリソースの構成
  
  のCPUリソースへの、例えば、大規模な構造を構成Kubernetesクラスタリソース以下の通りである:
  
  以下の成分から:
  
  KUBE予約、追い出しハード構成、システム予約kubeletに対応し、各ノードのリソースを予約リソースの合計は、Kubernetesは、ノードの予備リソース計算割付け資源のこの部分を差し引きます。
  
  約5%〜10%で、当社のクラスタの現在の平均リソースの断片化は、CVMモデルの仕様に応じて若干異なります。これらの断片は2c2g、1c1gするクラスタ内の各ノードのリソースを分散し、3cxgメインプラットフォームは、ユーザが選択したコンテナの仕様は、これらの断片と一致することが困難であって、これは多くの場合、あるケースである:ポッドをスケジュールするには、見つかりました一つのノード上のCPUは十分であるが、不十分MEM、またはその逆。
  
  残りは経営資源は、ビジネスのような大規模な割合、クラスタにつながりやすい低いれるコンテナトラフィックの負荷が生じ、コンテナサイズの選択における主観と失明のある程度とポッド実際の業務で使用するために割り当てることができています低負荷が、クラスタKubernetes静的スケジューリングポリシーに応じて容器事業のいずれかのより多くので取ることができません。クラスタ割当CPU高い水ライン、上の図に示されているが、実際のCPU使用率が高くないからです。
  
  クラスタは、プログラムをロード高め
  
  、低負荷の静的スケジューリングクラスタの問題を解決するために使用することができる他のオプションがあるかどうかは、それを引き起こした、ダイナミックスケジューリングの決定よりも、いくつかの重いウェイトを行うための強力なコンテナ監視データの援助に加えて?今、私は技術的なKubernetesクラスタの負荷を改善しようとするために、複数の次元からの技術的な解決策のセットが与えられます。
  
  ポッドリソース割当圧縮
  
  以前、R&D事業の学生の配備特定の失明と、容器のリソースの仕様を選択し、そして(これは静的VPAプログラムによって解決することができるが)Kubernetesネイティブコンテナフォーマットが修正知覚することなくリアルタイムをサポートしていない、鉛を挙げますコンテナトラフィック負荷が低いです。この問題を解決するために、我々は、ポッドの要求リソースへの圧縮の一定割合(ポッドリミットリソース圧縮なし)を行うことができます。そのようなビジネスとしてこのアクションを行うことはできませんポッドの正常な動作のために、出版物の時間を変更行う、ポッドが作成または再構築された場合にのみポッドが要求リソース圧縮が発生します、それが原因となるワークロードコントローラがポッドを再構築し、対応する(UpdateStrategyのワークロードに応じて)ビジネスへの影響。
  
  それに注意してください。
  
  各ワークロード異なる負荷は、リソースの故にポッド割り当てが同一の圧縮比は、各ワークロードのカスタム構成をサポートする必要性に対応しない、法律を変えるが、これはユーザによって知覚されません。圧縮比は、我々は、CPUリソースの圧縮など、注釈へのワークロードを設定する注釈stke.platform / CPU-要求-比に対応 。
  
  セットアップしようとしている圧縮比、?研究成分(POD-資源圧縮比ので -Reconciler) 過去の監視データに基づいてワークロード、動的/定期的圧縮比を調整します。このような連続7D / 1Mのようなワークロードの負荷が大きく、圧縮率は、残りのクラスタは、より多くのビジネス容器を収容するために多くの資源を割り当てることができるようにするために、設定することができ、低続け。もちろん、圧縮比調整戦略は、実際にはそれほど単純ではありません支援するために、より多くの監視データが必要です。
  
  ポッド分布特性は、圧縮および回復がワークロード注釈stke.platform /イネーブル資源によって閉じることができなければならない 「N」:圧縮の圧縮率は、圧縮回復で設定することにより、ワークロードのレベルを無効にするため。
  
  圧縮率によってで要求リソースポッド仕様を調整した場合?この段階にKubernetes開発、直接変更Kubernetesコードは最も愚かな方法ですが、我々は拡張モードKubernetesをフルに活用する必要があります。問い合わせウェブフック(ポッド・リソース・compress-ので、ここでは、イベントポッド傍受を作成するために入場ウェブフックKUBE-apiserverを変異させることにより行ったウェブフックが) ポッド注釈をチェックするかどうか圧縮機能を有効にし、設定されている場合、圧縮率を設定します圧縮比は、ポッドの要求リソース、APIServerにパッチに従って再計算されます。
  
  ノードリソース売られ過ぎ
  
  ポッドリソース圧縮方式は、プログラムが動的にリソースの各ワークロードのレベルに合わせて調整され、利点がダウンして、各ワークロードにあり、標的とすることができる、欠点は出版事業を変更することはありませんが、何の効果もない、遅いです。
  
  ノード売られ過ぎプログラムのノードリソースを動的各ノードの実際の過去の負荷データ、売らリソースの異なる割合に基づいて、プログラム・リソースのレベルを調整します。
  
  リソースの売られ過ぎ割合各ノードは、我々は、対応するCPU売られ過ぎ注釈stke.platform / CPU-oversale比として、注釈ノードに設定しました 。
  
  各ノードの売られ過ぎの割合は、設定しようとしていますか?研究コンポーネント(ノード資源Oversale比ため -Reconciler) 比を調節するために定期的に動的/売られ過ぎ、過去の監視データノードに基づきます。このような連続7D / 1M連続低負荷及び水ラインを割り当て、高い資源ノードとしてノードは、それによって、ノードがより多くのトラフィックポッドを収容可能に、売られ過ぎの割合を増加させるために適切であり得ます。
  
  「偽:/ノード注釈stke.platformによって、ノードのmutate売られ過ぎの特性をオフにすることができ、それを復元する必要があり 、」 売られ過ぎ閉じノード、ノードは次のハートビートリソースの復旧を完了します。
  
  場合は、圧縮率によって割付け&キャパシティリソースでノードの状態を調整するには?同様に、我々は作成およびノードステータス更新イベント傍受、自己啓発のウェブフック(ノード・リソースoversale-に入場ウェブフックKUBE-apiserverを変異させることにより行ったウェブフック) ノード注釈が有効かどうかをチェックし、より売られ過ぎ売られ過ぎを設定するには設定した場合は、再計算されたセキュリティがAPIServerによると、ノード割付け&収容リソースよりもパッチを売られ過ぎ。
  
  、売られ過ぎ一見シンプルですが、実際にはノードのリソースは、まだ検討すべき多くの詳細、次のとおりです。
  
  直接実行可能なウェブフックのノードステータスによってパッチされているもののKubelet登録ノードにApiServerの詳細については?
  
  ノードのリソースが売られ過ぎたとき、CGROUP動的調整機構が動作を継続するかどうかを対応Kubernetes?
  
  ノードステータスの更新があまりにも頻繁に、すべてのステータスの更新は、ウェブフックトリガーする、apiserverのパフォーマンス上の問題を引き起こす可能性が高い大規模なクラスタ、どのように解決するには?
  
  売られ過ぎリソースノードがKubelet追出するように構成されても太りすぎの効果を有する、またはそれを立ち退かせるためにない場合、まだそのような解決すべきかのように、?実際の追い出しノード構成に応じて行われ、ロードされていますか?
  
  大型から小型まで売られ過ぎ比ダウンは、ノードの合計(ポッドの要求リソース)がある>ノードの割付けは、 どのように対処する、リスクがあるかどうか、どうなりますか?
  
  ノードを監視するための監視システムを意味し、売られ過ぎの関連モニタリングとNode割付け&キャパシティリソースのためのノード監視システム、もはや正しいです、あなたが監視システムを作る方法を、ある程度の修正を加える必要がありませんが、動的データおよび知覚の割合を売られ過ぎできますビューの改正?
  
  ノード割付けと容量がどのように売られ過ぎていますか?リソースを予約するノード上の売られ過ぎの影響がどのようにでしょうか?
  
  ここでの技術的な詳細がより複雑にしているKubernetes、私は次の記事で詳しくます。
  
  プライベートCompletableFuture <ボイド>工程(ロング ID、メッセージ・メッセージ、消費者<メッセージ>消費者){
戻りCompletableFuture
.runAsync((www.qiaoheibpt.com) - > consumer.accept(メッセージ))
.thenAccept(V - > sendAck(ID))
.thenAccept(V - > lastId.set(ID))
.thenComposeAsync(V - > {
ロングNEXTID = NEXTID(ID)、
IF(notConsistMsgMap.containsKey(www.luqintang.com NEXTID)){
//队列中有下个消息
ProcessMsgNodeノード= www.hongshengyl.cn notConsistMsgMap.get(NEXTID);
返却処理(NEXTID、node.getMessage(xingtuylgw.com)、消費者);
}他{
//队列中没有下个消息
CompletableFuture <ボイド> www.jintianxuesha.com将来=新しいCompletableFuture <>();
future.complete(ヌル) 、
将来を返す;
}
})
(.exceptionally E - > {
logger.error( "[プロセスは、受信したMSG]エラー有する"、E)を、
ヌルを返します。

  伸縮性Kubernetesを持ち上げ、私たちはHPAおよびHNAに精通している、ポッドワークロードの1組は、クラスタノードの水平ストレッチの1組を横延伸します。HPAとして、アプリケーションを起動する必要がポッドの拡大再構築するために、場合コミュニティプロジェクトのVPAもあり、ポッドのリソースを調整し、その効果を取るためにポッドを再構築する必要があるために使用され、存在の意味は、VPA急速な拡大にあり、実際には、失ってしまいました値。
  
  :KUBEコントローラマネージャは、内蔵HPA-コントローラ次の質問が存在する
  
  パフォーマンスの問題:ゴルーチンのHPAは、大企業のための新しいレプリカを、計算、監視データは、オブジェクトのHPAのそれぞれに対応するポッドを取得し、クラスタ内のすべてのオブジェクトを循環します時間のかかります。
  
  ワークロードのコア構成は、カスタムをサポートしていません:HPA伸縮応答時間は、各事業が同じではないかもしれないです、いくつかの企業は5S、60年代と十分にあるいくつかのビジネスを応答するために期待しています。内蔵のHPAコントローラは、グローバルな水平ポッドautoscaler-SYNC-設定するには、起動パラメータの応答時間を制御することができピリオドを。負荷は、各事業のジッタ・トレランスは、内蔵のHPAコントローラのみグローバル水平ポッドautoscalerトレランスを介して行うことができますでは同じではありませんカスタムビジネスクラスを提供できませんがあります。
  
  プロメテウスによってクラスタがカスタム指標を適用するにはいくつかのビジネスを公開する場合は、カスタム指標のみ、バックエンドのサービス監視のためにサインアップすることができますサポートKubernetesは現在、カスタム指標のアプリケーションを監視するためのモニターにより、いくつかのビジネスは、すべてを行うには、この時間は、あります自己開発のシナリオの雲の中に、特定の場面がある中、。
  
  我々はHPAPlus-Controllerコンポーネントを勉強しているので:
  
  各被験者はHPAおよびコンピューティングオブジェクト、大幅に性能を最適化する各コルーチン並列実行の仕事を管理する責任ゴルーチンのHPAのコルーチンを開始します。HPAPlus・コントローラは、独立に展開、元の内蔵HPA-コントローラ柔軟性と比較して、合理的な調整を行うためのリソース要件HPAクラスタサイズ及び数とすることができます。
  
  、のためのポッドリソース制限をサポートしています。HPAPlus-コントローラは、HPAは、カスタムの伸縮応答時間、オートセンシングリリースされ、あなたは(禁止は伸縮性のアップグレードをトリガし、いくつかの企業がこのような要望を持っている)HPAを無効にするかどうかを決定する場合は、ビジネスにおけるサポートの変更は、さまざまなオブジェクトをサポートしていますポッド基数コンピューティングリソースの使用率、レプリカが売られ過ぎノードクラスタとポッドリソース圧縮のために非常に重要であり、所望の拡張後の体積減少を導出します。
  
  負荷設定のパーソナライズされたサービスレベルのジッタ・トレランスのサポート。
  
  このようポッド履歴CPU負荷7D / 1Mのよう監視データより寸法に基づいて、スケールのサポートを決定。
  
  CronHPA、ビジネス需要の規則性を満たすためのスケーラブルな能力をサポートしています。
  
  拡張APIServer突き合わせ会社のモニターを監視することにより、HPAは、カスタムメトリクス監視システムに基づいた様々なアプリケーションを行わ満たすために、プロメテウスに基づいてアプリケーションの監視をサポートするために、プロメテウス・アダプタの道を禁じます。
  
  注:機能と競合HPAPlus・コントローラが存在BUITインKubernetesさHPA-コントローラ、フロントライン上のコントローラHPA-コントローラの無効KUBEコントローラマネージャを必要とします。
  
  HPAの最適化と強化に加えて、我々はまた、後続の別の記事を再導入し、技術的なR&DダイナミックVPAを行っています。
  
  その他の技術的な解決策
  
  さらに、オンライン優先順位およびサービスクォータ管理機能に基づいてサービスレベルの動的割当て管理コンポーネントに基づいて、スケジューラ延長方式による動的スケジューリングの開発、およびオフライン操作混合部、アクティブノードのリソースを検出し、制御ポッドのフラグメンテーション情報に報告しますその後、リソース管理などの破片などのプログラムが、また、対応したプログラムと高い複雑さ、その後の再導入し、別の記事の当社の継続的な練習の方向をドリフト。
  
  まとめ
  
  この記事では、Kubernetes静的スケジューリングクラスタリソースの割り当ては、水ラインをもたらし、より低いクラスタ実際の負荷の問題は技術的な解決策に議論された、動的圧縮ポッドリソース、動的な売られ過ぎのノードのリソース、自動スケールの最適化を紹介する能力を説明技術的な解決策は、さらにダイナミックスケジューリング、動的なクォータ管理事業、オンラインとオフラインのビジネスミックスパートプログラムの後ろに紹介します。これらのクラスタの負荷リフティングスキームのすべては、動的にする、より強力な、堅牢なコンテナ監視システムに依存します。私たちは、テンセントの自己開発事業上のテンセントのクラウド監視製品チームの深い協力、より良いサービスをクラウドで作業しています。

おすすめ

転載: www.cnblogs.com/qwangxiao/p/11518494.html