KubernetesとIstioに基づくServerlessフレームワークKnative解析のAutoscaler
6305 ワード
Kubernetesのリソースオブジェクトはautoscalerと呼ばれていることを知っています.このオブジェクトはserverlessアーキテクチャの中でさらに欠かせません.アプリケーションの自動水平伸縮を担当することができます.ユーザーは例の個数とリソース消費に関心を持つ必要はありません.本文はアリババUC事業群基礎研究開発部の陳有坤さんがKnativeの解析に対するautoscaler部分です.また、大量の解析が放出を待っており、当駅の後続内容に注目している.
Knativeは、現代serverlessアプリケーションの構築、導入、管理のためのKubernetesベースのプラットフォームです.このフレームワークは、クラウドの原生応用開発の以下の3つの分野のベストプラクティスを結びつけようとしています.構築コンテナ(および関数) ワークロードのサービス(および動的拡張) イベント KnativeはグーグルがPivotal、IBM、Red Hat、SAPと緊密に協力して開発した.
KnativeはKubernetesとIstioの上に構築され、開発者、運営者、プラットフォームプロバイダなど、さまざまな役割がこのフレームワークを通じて相互作用することを考慮して設計されています.
Knativeに関連するロール(画像はKnative GitHub倉庫から)
Knativeは、再利用可能な「汎用モードとベストプラクティスの組み合わせ」の実装に力を入れています.現在使用可能なコンポーネントは次のとおりです. Build:ソースからコンテナへの構築編成; Eventing:イベントの管理と配信 サービング:ドライバを要求する計算で、ゼロにスケールできます.
以上の内容は、InfoQ|Googleが発表したKnative:Server lessワークロードの構築、導入、管理に使用されるKubernetesフレームワーク
以上、Knativeの基本的な紹介ですが、Knativeの詳細についてはGitHub:githubに注目してください.我々は...
まず、サービングのAutoscalingコンポーネントを解析します.このコンポーネントの機能は、ネットワークトラフィックに基づいてアプリケーションインスタンスの数を自動的に伸縮することです.
Knativeはどのように伸縮容量を作りますか?
伸縮容量の問題を処理するには、まず解決しなければならない問題は、どのような指標に基づいて伸縮容量を判断するかです.cpu、メモリ、リクエスト数?ここでknativeはリクエスト数を用いている.
次に伸縮の多少の問題です.
Knativeの伸縮はdeploymentを修正するreplica数に依存して実現される.
リクエスト数の収集方法
revisionのpodを起動すると、autoscalerも起動します(knative revisionはautoscalerが1つしか起動しません).autoscaler自体も要求数統計を受信し、伸縮容量を処理するためにscaleから0になります.
ビジネスpodにはqueue-proxy sidecarが注入され、リクエストを受信します.ここではコンカレント数を統計し、autoscalerに毎秒報告し、受信したリクエストはビジネスcontainerに転送されます.
注意:単一テナント・モード次のrevisionでautoscalerを起動し、マルチテナントでautoscalerを共有します.
計算にはpodの個数が必要ですか?
Autoscalerが同時統計を受信すると,アルゴリズムに基づいて必要なpod個数が計算される.
アルゴリズムにはpanicとstableモードの2つのモードがあり,1つは短時間,1つは長時間であり,短時間で要求が急増するシーンを解決するためには高速拡張が必要である.
ドキュメントに記載されているアルゴリズムは、デフォルトのtarget concurrencyが1であり、revision 35 QPSの場合、要求ごとに0.25秒がかかり、Knative Servicesは9 podが必要であると感じている.
Stable Mode(安定モード)
安定モードでは、Autoscalerはpodごとに所望の同時性に応じてDeploymentのコピー数を調整する.podの数が増加し、podがサービス可能になり、指標データを提供するのに一定の時間間隔があるため、既存のコピー個数に基づいて計算するのではなく、各podの60秒ウィンドウ内の平均同時計算に基づいて計算する.
Panic Mode(パニックモード)
Panicタイムウィンドウのデフォルトは6秒で、6秒以内に所望の2倍の同時に達するとパニックモードに移行します.パニックモードでは、Autoscalerはこの6秒のタイムウィンドウに基づいて計算され、バーストのトラフィック要求にタイムリーに応答することができます.2秒ごとにDeploymentのコピー数を所望のpod個数(または現在のpodの最大10倍)に調整し、pod数の頻繁な変動を避けるためにパニックモードでは増加するしかなく、減少しない.60秒後には安定モードに戻ります.
Autoscaler単一テナント図
上図はgithubに基づく.com/knative/ser...描画.
を選択します.
コンフィギュレーション
www.servicemesher.com/blog/knativ…
ServiceMesherコミュニティ情報
コミュニティ公式サイト:www.servicemesher.com
Slack:servicemesher.slack.comは招待してこそ参加することができ、ServiceMesherコミュニティに参加してServiceMeshに貢献することを志す学生は私に連絡することができます.
Twitter: twitter.com/servicemesh…
その他のService Meshコンサルティングは、微信公衆番号ServiceMesherに注目してください.
作者:ServiceMesher
リンク:https://juejin.im/post/5b69003df265da0f7c4fea96
出典:掘金
著作権は作者の所有である.商業転載は著者に連絡して許可を得てください.非商業転載は出典を明記してください.
Knativeは、現代serverlessアプリケーションの構築、導入、管理のためのKubernetesベースのプラットフォームです.このフレームワークは、クラウドの原生応用開発の以下の3つの分野のベストプラクティスを結びつけようとしています.
KnativeはKubernetesとIstioの上に構築され、開発者、運営者、プラットフォームプロバイダなど、さまざまな役割がこのフレームワークを通じて相互作用することを考慮して設計されています.
Knativeに関連するロール(画像はKnative GitHub倉庫から)
Knativeは、再利用可能な「汎用モードとベストプラクティスの組み合わせ」の実装に力を入れています.現在使用可能なコンポーネントは次のとおりです.
以上の内容は、InfoQ|Googleが発表したKnative:Server lessワークロードの構築、導入、管理に使用されるKubernetesフレームワーク
以上、Knativeの基本的な紹介ですが、Knativeの詳細についてはGitHub:githubに注目してください.我々は...
まず、サービングのAutoscalingコンポーネントを解析します.このコンポーネントの機能は、ネットワークトラフィックに基づいてアプリケーションインスタンスの数を自動的に伸縮することです.
Knativeはどのように伸縮容量を作りますか?
伸縮容量の問題を処理するには、まず解決しなければならない問題は、どのような指標に基づいて伸縮容量を判断するかです.cpu、メモリ、リクエスト数?ここでknativeはリクエスト数を用いている.
次に伸縮の多少の問題です.
Knativeの伸縮はdeploymentを修正するreplica数に依存して実現される.
リクエスト数の収集方法
revisionのpodを起動すると、autoscalerも起動します(knative revisionはautoscalerが1つしか起動しません).autoscaler自体も要求数統計を受信し、伸縮容量を処理するためにscaleから0になります.
ビジネスpodにはqueue-proxy sidecarが注入され、リクエストを受信します.ここではコンカレント数を統計し、autoscalerに毎秒報告し、受信したリクエストはビジネスcontainerに転送されます.
注意:単一テナント・モード次のrevisionでautoscalerを起動し、マルチテナントでautoscalerを共有します.
計算にはpodの個数が必要ですか?
Autoscalerが同時統計を受信すると,アルゴリズムに基づいて必要なpod個数が計算される.
アルゴリズムにはpanicとstableモードの2つのモードがあり,1つは短時間,1つは長時間であり,短時間で要求が急増するシーンを解決するためには高速拡張が必要である.
ドキュメントに記載されているアルゴリズムは、デフォルトのtarget concurrencyが1であり、revision 35 QPSの場合、要求ごとに0.25秒がかかり、Knative Servicesは9 podが必要であると感じている.
ceil(35 * .25) = ceil(8.75) = 9
Stable Mode(安定モード)
安定モードでは、Autoscalerはpodごとに所望の同時性に応じてDeploymentのコピー数を調整する.podの数が増加し、podがサービス可能になり、指標データを提供するのに一定の時間間隔があるため、既存のコピー個数に基づいて計算するのではなく、各podの60秒ウィンドウ内の平均同時計算に基づいて計算する.
Panic Mode(パニックモード)
Panicタイムウィンドウのデフォルトは6秒で、6秒以内に所望の2倍の同時に達するとパニックモードに移行します.パニックモードでは、Autoscalerはこの6秒のタイムウィンドウに基づいて計算され、バーストのトラフィック要求にタイムリーに応答することができます.2秒ごとにDeploymentのコピー数を所望のpod個数(または現在のpodの最大10倍)に調整し、pod数の頻繁な変動を避けるためにパニックモードでは増加するしかなく、減少しない.60秒後には安定モードに戻ります.
Autoscaler単一テナント図
上図はgithubに基づく.com/knative/ser...描画.
を選択します.
const (
// pod
RevisionRequestConcurrencyModelSingle RevisionRequestConcurrencyModelType = "Single"
// pod
RevisionRequestConcurrencyModelMulti RevisionRequestConcurrencyModelType = "Multi"
)
コンフィギュレーション
apiVersion: v1
kind: ConfigMap
metadata:
name: config-autoscaler
namespace: knative-serving
data:
# Static parameters:
# pod
multi-concurrency-target: "1.0"
# , 1.0
single-concurrency-target: "0.9"
# stable , 。 panic , stable stable
stable-window: "60s"
# panic 2 ,autoscaler panic 。
# panic , panic 。
panic-window: "6s"
# , ,
max-scale-up-rate: "10"
# , , bucket, ,
# = bucket / bucket , 1 (hard coded)
concurrency-quantum-of-time: "100ms"
# 0
enable-scale-to-zero: "true"
# :
# Requires a VPA installation (e.g. ./third_party/vpa/install-vpa.sh)
enable-vertical-pod-autoscaling: "false"
# enable-vertical-pod-autoscaling, multi-concurrency-target,
#
vpa-multi-concurrency-target: "10.0"
#
tick-interval: "2s"
# Dynamic parameters (take effect when config map is updated):
# 0
scale-to-zero-threshold: "5m"
www.servicemesher.com/blog/knativ…
ServiceMesherコミュニティ情報
コミュニティ公式サイト:www.servicemesher.com
Slack:servicemesher.slack.comは招待してこそ参加することができ、ServiceMesherコミュニティに参加してServiceMeshに貢献することを志す学生は私に連絡することができます.
Twitter: twitter.com/servicemesh…
その他のService Meshコンサルティングは、微信公衆番号ServiceMesherに注目してください.
作者:ServiceMesher
リンク:https://juejin.im/post/5b69003df265da0f7c4fea96
出典:掘金
著作権は作者の所有である.商業転載は著者に連絡して許可を得てください.非商業転載は出典を明記してください.