K8S弾性伸縮コンセプトとテストケース

K8S弾性伸縮コンセプトとテストケース

この記事オリジナル出典:https://juejin.im/post/5c82367ff265da2d85330d4f

負荷が大きい場合、あなたは小さな負荷はあなたがアプリケーションのボリュームの減少のために、リソースを避けるためにできる多くのトラフィックに対処するためにコピーポッドの数を持ち上げ、拡張を申請することができ、中にハイライト機能弾性伸縮K8S廃棄物。あなたは、アプリケーションが自動的に拡張し、容量を縮小させることができ、この機能は便利です。マイクロブログの話題があった場合、例えば、人々が訪問する必要があり、この時間は、彼は、サーバーのこの時間は、この時間は、拡張を必要とする大量のトラフィックを扱うことができない、と被写体が新鮮でない場合、それはそのトラフィックでありますダウン、あなたは自動的にトラフィック需要に適応するために、サーバ減容処理を必要としています。

scaleコマンド:容量の拡張や収縮の展開、さらにreplicaSet、レプリケーションコントローラーポッドまたはジョブ番号

# 语法
kubectl scale [--resource-version=version] [--current-replicas=count] --replicas=COUNT (-f FILENAME | TYPE NAME)
# 将名为foo中的pod副本数设置为3。
kubectl scale --replicas=3 rs/foo
kubectl scale deploy/nginx --replicas=30
# 将由“foo.yaml”配置文件中指定的资源对象和名称标识的Pod资源副本设为3
kubectl scale --replicas=3 -f foo.yaml
# 如果当前副本数为2,则将其扩展至3。
kubectl scale --current-replicas=2 --replicas=3 deployment/mysql
# 设置多个RC中Pod副本数量
kubectl scale --replicas=5 rc/foo rc/bar rc/baz

K8Sは、膨張と収縮のための規模や能力に提供するオートスケール。


今行く展開を拡大するために、結果に示すように、

体積の減少の量を減らすために進行にアクセスすると

今、私は手動で拡張し、容量を縮小したくない、私はそれを達成したいと考えたときに、大きなトラフィック時に自動拡張、小さなトラフィック時に自動ボリューム削減。この時間オートスケールそこには、我々は、自動容量拡張および体積の減少を達成するために彼を使用することができます。

# 语法
kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags]
# 使用 Deployment “foo”设定,使用默认的自动伸缩策略,指定目标CPU使用率,使其Pod数量在2到10之间
kubectl autoscale deployment foo --min=2 --max=10
# 使用RC“foo”设定,使其Pod的数量介于1和5之间,CPU使用率维持在80%
kubectl autoscale rc foo --max=5 --cpu-percent=80

これまでのところ、K8Sは、2つの異なる寸法AutoScalerの合計を提供します。図は次のとおりです。

2つのカテゴリに分かれて伸縮性K8S:

  • リソース寸法:全体的な計画を満たすために保護クラスタリソースプールのサイズ、リソースクラスタ内の出力は、新しいポッドをサポートするには不十分であるとき、それは境界拡張をトリガーします
  • アプリケーションの寸法:プランニングの能力を見越して荷重支持用途

ストレッチング戦略の2種類に対応します:

  • 水平方向のスケーリング
    • クラスタ寸法:自動的にリソースプールのサイズを調整(ワーカーノードを追加/削除)
    • ポッドの寸法:自動ポッドセットのコピーの量を調整します
  • 垂直スケーリング
    • クラスター寸法:サポートされていません
    • ポッド寸法:自動的にリソース割当アプリケーション(CPUポッドの増加/減少、メモリフットプリント)を調整

最も成熟した最も一般的な方法の一つは、伸縮することであるHPA(水平ポッドストレッチ)ので、この公式文書では、分析する一例として、それに集中するために、次のhttps://kubernetes.io/docs/tasks/run-application/horizo​​ntal-ポッドオートスケール/

三つの基本的なプロセスステップに減容拡張:

1.取得監視指標

2.重合監視指標、還元拡張を実行するかどうかを決定します

3.事業膨張体積の削減を実行

HPAレベルのアーキテクチャ図の膨張体積減少

HPA監視指標

文書の公式な説明によれば、HPAは、ポッドのリソースの使用状況を収集するために、ポーリング機構(制御ループ)を使用して、デフォルトの収集間隔は、コントローラマネージャを介して、15S、(マスターノード上のプロセス)が--horizontal-pod-autoscaler-sync-period手動でパラメータを制御します。

現在、収集されたHPAのデフォルトのインデックスを達成Heapster、主にCPU使用率を収集し、;ベータ版は、カスタム監視指標が収集サポートしていますが、まだ安定して、お勧めできません

だから、単にHPAは、CPU使用率の指標として監視されている、と考えることができます。

集約アルゴリズム

CPUインジケータをサンプリングした後、次の式でK8Sポッド拡張の必要数を決定します

desiredReplicas = ceil[currentReplicas * ( currentMetricValue / desiredMetricValue )]

CEILは、実際の例を与える、切り上げ示し、ポッド4、50%の現在のCPU使用率を実行するサービスを想定し、CPUの使用目的は、25%である、実際の数ポッドを満たすことが期待され4 * (50% / 25%) = 8、すなわち、ポッドは、能力を倍増需要を満たすために4ポッドを増やす必要があります。

もちろん、上記の指標は全く正確ではない、まず、K8S指標は、HPAに続く、期待に近いが、完全に一致しない可能な限りは、特定の範囲内の期待度からのずれを許容する、許容誤差(公差)の概念を設定できるようになり、デフォルトはあなたが予想CPU使用率のスケジューリングポリシー= 50%を設定した場合、実際のスケジューリングポリシーが45%未満又は55%以上になることを意味し、0.1は、容量拡張が低減され、HPAは、この範囲内の指標を制御しようとします(公差ができ--horizontal-pod-autoscaler-tolerance調整します)

それに注意してください。

  • まずK8Sは、意思決定の間隔を作る、それが継続的にボリュームの還元作用を拡大行われませんが、5分と比較していくつかのCD、アクション3分の現在の拡大にcdし、体積の減少があり、
  • 最大限の拡張のために作られた第二K8Sは、ポッドの数は、すべての時間展開は、コピーの2倍の現在の数よりも大きくありません。

おすすめ

転載: www.cnblogs.com/jasonboren/p/11493347.html