HPAのコンテンツの自動伸縮をK8S

HPAはじめに

Kubernetes HPA(自動ズームレベルPOD)この機能を介してポッドレベル自動引き込み式は、単純な構成には、指標(CPU使用率、ディスク、メモリなど)またはサービスポッド容積減少の数の自動拡張を監視するために利用することができますビジネス需要の増加は、システムが自動的にシームレスにコンテナの量を増加させる際に、システムの安定性を向上させます。HPAは、ここでは詳細にHepasterの使用に基づいてコア設計の原則と方法を説明します

前提条件

システムは、ポッド現在のリソース使用量取得することができなければならない(kubectlトップポッドコマンドの意味を実行することができ、フィードバック情報を得ることができます)。

そうするためには、その、機能の自動スケーリング能力のために、だけでなく、kubectlトップコマンドをサポートするために、収集使用統計およびリソースにデプロイheapsterサービスに必要な、プロメテウスでheapsterサービス統合(プロメテウス)MertricServerサービス利便性は、私は環境プロメテウスサービスに基づいて、HPA(動的スケーリング容量)サービスを展開してきました。

実験環境

ホストコンピューター IPアドレス サービス
主人 192.168.1.21 K8S
node01 192.168.1.22 K8S
node02 192.168.1.23 K8S

[に基づいてhttps://blog.51cto.com/14320361/2473879続ける]()実験

HPAのコンテンツの自動伸縮をK8S

  • heapster:このコンポーネントの前にはK8Sクラスタに統合されましたが、バージョン1.12の後に削除されました。この機能を使用する場合は、のmetricserver、このK8Sアグリゲータクラスタリソースの使用を展開する必要があります。
  • Cousom:また、ベータ(自動スケーリング/ v2beta1)で、それは習慣を開発するためのREST APIに来る、複雑さが大きくなり、カスタムモニターからデータを取得する必要がある場合、唯一の絶対値を設定することができますが、設定することはできません用法。

自動延長は二つのタイプに分けられます。

  • インスタンスの数を増減するように向け水平方向のスケーリング(スケールアウト)。
  • 垂直拡張(年度まで)、即ち、リソースの変化の単一のインスタンスは、CPUやメモリ増加を増加させるように、使用することができます。
    HPAは、前者に属します。これは、自動的にCPU使用率またはアプリケーションポッド(支持複製コントローラ、配備およびレプリカセット)の数を拡張メトリックに応じてカスタマイズすることができます。

ワークフロー

  • 要求が、そうでない場合はHPAは動作しません:HPAのリソース、設定した目標CPUの使用制限、および最大値と最小数/インスタンスを作成し、必ずセットリソースにポッドパラメータを制限すること。
  • コントロールマネージャは、すべて30秒(KUBE-コントローラmanager.serviceで--horizo​​ntal-POD-autoscaler同期期間によって改変することができる)は、リソースの使用メトリクスを問い合わせます。
  • そしてその後、設定された目標値DO比較(平均値及び/制限)を作成、インスタンスの調整対象番号を取得します。
  • 調整の目標数の例は、インスタンスの最小値/第一のセットの最大数を超えません。そうでない場合、拡張;上、インスタンスの最大数まで拡張。
  • 手順2〜4を繰り返します。

ここで、我々はテスト画像を使用して、PHP、Apacheの生成ドッカミラーに基づく画像が、それは計算集約型のタスクを実行することができ、CPUの一部のコードが含まれています。

配布コントローラを作成します。1.

[root@master ~]#docker pull mirrorgooglecontainers/hpa-example:latest
//下载hpa-example镜像

[root@master ~]# kubectl run php-apache --image=mirrorgooglecontainers/hpa-example --requests=cpu=200m --expose  --port=80
//基于hpa-example镜像,运行一个deployment控制器,请求CPU的资源为200m,暴露一个80端口

ルック

[root@master ~]# kubectl get deployments.

HPAのコンテンツの自動伸縮をK8S

HPAコントローラを作成します。2.

[root@master ~]# kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10
//当deployment资源对象的CPU使用率达到50%时,就进行扩容,最多可以扩容到10个

ルック

[root@master ~]# kubectl get hpa

HPAのコンテンツの自動伸縮をK8S

3、試験(マスターは三つのポートを開きます)

新しくオープンしたポッドサイクルの死のための複数の端子は、ポッドのphp-Apacheを要求します

ポート

(1)は、先ほど作成したノンストップアクセスSVCリソースのphp-apacheのためのアプリケーションを作成します。

[root@master ~]# kubectl run -i --tty load-generator --image=busybox /bin/sh

このコマンドは、以下のポッドに(2)、。SVCは、リソースへのアクセスPHP-Apacheをシミュレートします。

[root@master ~]# while true; do wget -q -O- http://php-apache.default.svc.cluster.local ; done
//不停地向php-apache的svc资源,发送ok

ポート2

[root@master ~]# kubectl get hpa -w
//实时查看pod的cpu状态

HPAのコンテンツの自動伸縮をK8S

私は、CPU使用率のphp-Apacheが50%を超えている見ることができます

ポートトライ

[root@master images]# kubectl get pod -w
//实时查看pod的状态

HPAのコンテンツの自動伸縮をK8S
これまでのところ、自動スケーリング能力のコピーのポッド数が実現されています。

50%以上後のCPUのphp-のapacheの使用を見ることができるように、それは(現在はライン10上に提供されている場合)、ロードバランシングのための新しいPHP-Apacheを生成していきます、もちろん、CPU使用率が50%に低下した場合には、徐々にPHP-Apacheを削除しますマスターは、そのような使用は、その上の資源、資源の不平等な分配との不必要な廃棄物を減らすことができます。

おすすめ

転載: blog.51cto.com/14320361/2474234