クラスタの動的スケーリング能力K8S --HPA

ボーエン概要:
、HPA紹介
第二に、伸縮ポッドの典型的な内容を達成するために

A、HPAの紹介

HPAは、水平ポッド自動スケーリングと呼ばれ、それは現在のリソース利用ポッド(例えば、CPU、ディスク、メモリなど)に基づくことができ、各ポッド内の圧力を緩和するために、動的拡張の体積減少、その枚数。ポッド負荷がある閾値に達したときに、比較がアイドル期間の後にアイドル安定ポッド圧力容器を、共有するための戦略をスケーリングによる、より新しいポッドが生成され、自動的にポッドのコピー数を減少させます。

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

ボーエンを参照することができます:WebベースのUIインターフェース展開K8Sクラスタの3種類の第三導入サービスプロメテウスで、実行するためにプロメテウスサービスは、あなたがプロメテウスを展開したくない、あなただけでは、最大githubのを参照することができ、展開heapsterサービス

短い間では、スケーラブルな容量のコピー数を達成するためにポッド、それがマスター上で以下のコマンドを実行し、確認する必要があります。

[root@master ~]# kubectl top node      #查看节点的资源使用情况
NAME     CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
master   218m         10%    1362Mi          79%       
node01   113m         5%     1116Mi          64%       
node02   127m         6%     1287Mi          74%       

第二に、ポッドの膨張体積減少の実装例

図1に示すように、HPAにコントローラ

#运行这个hpa-example,请求CPU的资源为200m,暴露一个80端口
[root@master ~]# kubectl run php-apache --image=mirrorgooglecontainers/hpa-example --requests=cpu=200m --expose --port=80
#当deployment资源对象的CPU使用率达到50%时,就进行扩容,最多可以扩容到10个
[root@master ~]# kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10
#上面的命令作用是生成了一个HPA的控制器,用于控制自动扩缩容
[root@master ~]# kubectl get svc | grep php-apache   #查看php-apache对应的svc群集IP
php-apache   ClusterIP   10.99.60.48   <none>        80/TCP    15m
[root@master ~]# kubectl get pod | grep php-apa    #确定当前的pod数量
php-apache-867f97c8cb-vw74k      1/1     Running   0          17m

図2に示すように、アナログPHP-アパッチのリソース消費、及びポッドは自動的に膨張容積の減少を検証します

新しいオープン複数の端末では、など、システムのリソースが豊富にある場合、あなたは、私が同時に要求のphp-apacheのオープン3つの端子にここで死んでサイクル要求をしていたポッド上で複数の端末を開くように選択することができます(以下の、無限ループポッド要求を行うためにポッド):

[root@master ~]# while true; do wget -q -O- 10.99.60.48; done   #每个终端都执行此命令
[root@master ~]# kubectl top pod      #可以通过此命令随时查看pod的负载情况
NAME                             CPU(cores)   MEMORY(bytes)   
load-generator-7d549cd44-xm98c   0m           1Mi             
php-apache-867f97c8cb-vw74k      208m         20Mi           
#也可以不定时的查看pod的数量是否有变化
[root@master ~]# kubectl get pod    #在运行死循环请求一段时间后,查看pod数量
#可以发现php-apache的pod数量变成了10个,并且不会再增加,因为在上面的命令对其限制了最大数
NAME                             READY   STATUS              RESTARTS   AGE
load-generator-7d549cd44-xm98c   1/1     Running             1          25m
php-apache-867f97c8cb-4r6sk      1/1     Running             0          19m
php-apache-867f97c8cb-4rcpk      1/1     Running             0          13m
php-apache-867f97c8cb-5pbxf      1/1     Running             0          16m
php-apache-867f97c8cb-8htth      1/1     Running             0          13m
php-apache-867f97c8cb-d94h9      0/1     ContainerCreating   0          13m
php-apache-867f97c8cb-drh52      1/1     Running             0          18m
php-apache-867f97c8cb-f67bs      0/1     ContainerCreating   0          17m
php-apache-867f97c8cb-nxc2r      1/1     Running             0          19m
php-apache-867f97c8cb-vw74k      1/1     Running             0          39m
php-apache-867f97c8cb-wb6l5      0/1     ContainerCreating   0          15m

要求は、死のサイクルを停止するときは、再びトラフィックの急増を防ぐためにいくつかの時間後にポッドの数を減らすことができます、すぐにポッドの数を減らすことはありません。

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

--------この記事の最後に、これまで、読んでくれてありがとう--------

おすすめ

転載: blog.51cto.com/14154700/2453844