Kubernetesクラスタ水平拡張——HPA(自動伸縮)
Kubernetesクラスタは、Replication Controlのscaleメカニズムによってサービスの拡張または縮小を完了し、伸縮性のあるサービスを実現することができる.
Kubernetesクラスタの自動伸縮は次のように分けられます. sacle手動伸縮:K 8 sリソースオブジェクトの基本管理の使用コマンドラインの方式(アップグレード、ロールバック、拡張、縮小)を参照することができる. autoscale自動伸縮:つまり本編の博文で紹介したHPA;
Kubernetes自動拡張は主に以下に分けられる.水平拡張:インスタンス数の増減; 垂直拡張:つまり、CPU、メモリの増加など、単一のインスタンスで使用できるリソースの増減.
一、HPA紹介
HPAのフルネーム(Horizontal Pod Autoscaling)は、現在のpodリソースの使用率(CPU、ディスク、メモリなど)に応じて、コピー数の動的な拡張と縮小を行い、各podの圧力を軽減することができます.pod負荷が一定のしきい値に達すると、拡張容量のポリシーに従ってより多くの新しいpodが生成され、圧力が分担され、podの使用が比較的空いている場合、一定の時間が経過すると、podのコピー数が自動的に減少する.
自動拡張機能を実現するには、リソースの利用率を収集および統計するためにheapsterサービスを導入し、kubectl topコマンドをサポートする必要があります.heapsterサービスはprometheus(プロメテウス)MetricServerサービスに統合されているので、便宜上、ここではprometheusサービスの環境に基づいてHPA(ダイナミック拡張容量)のサービスを導入します.
博文Kubernetesの3つの可視化UIインタフェースの3番目の配置Prometheusサービスを参照してprometheusサービスを実行し、prometheusを配置したくない場合はgithubを参照してheapsterサービスを個別に配置することができます.
これだけ言うと、つまりHPAを使用するには、masterノードで次のコマンドを実行できることを保証する必要があります.
二、pod自動拡容と縮容を実現する
1)HPAコントローラの生成
2)php-apacheを消費するリソースをシミュレートし、podが自動的に拡張および縮小するかどうかを検証する
新たに複数の端末(nodeノードも使用可能)を開き、php-apacheのpodに対してデッドサイクル要求を行います.以下のようにします(もしあなたのシステム資源が十分であれば、複数の端末を開き、podに対してデッドサイクル要求を行うことができます.私はここで2つのnodeの端末を開き、同時にphp-apacheのpodを求めます):
デッドサイクル要求を停止した後もpod数を直ちに減少させることはなく,しばらく待つとpod数を減少させ,流量の再急増を防止する.
これでHPAはpodコピー数の自動拡張と縮小を実現した.
————————ここで終わります.読んでくれてありがとう——————
Kubernetesクラスタの自動伸縮は次のように分けられます.
Kubernetes自動拡張は主に以下に分けられる.
一、HPA紹介
HPAのフルネーム(Horizontal Pod Autoscaling)は、現在のpodリソースの使用率(CPU、ディスク、メモリなど)に応じて、コピー数の動的な拡張と縮小を行い、各podの圧力を軽減することができます.pod負荷が一定のしきい値に達すると、拡張容量のポリシーに従ってより多くの新しいpodが生成され、圧力が分担され、podの使用が比較的空いている場合、一定の時間が経過すると、podのコピー数が自動的に減少する.
自動拡張機能を実現するには、リソースの利用率を収集および統計するためにheapsterサービスを導入し、kubectl topコマンドをサポートする必要があります.heapsterサービスはprometheus(プロメテウス)MetricServerサービスに統合されているので、便宜上、ここではprometheusサービスの環境に基づいてHPA(ダイナミック拡張容量)のサービスを導入します.
博文Kubernetesの3つの可視化UIインタフェースの3番目の配置Prometheusサービスを参照してprometheusサービスを実行し、prometheusを配置したくない場合はgithubを参照してheapsterサービスを個別に配置することができます.
これだけ言うと、つまりHPAを使用するには、masterノードで次のコマンドを実行できることを保証する必要があります.
[root@master ~]# kubectl top node #
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
master 1317m 65% 1383Mi 80%
node01 1237m 61% 1082Mi 62%
node02 1146m 57% 1045Mi 60%
二、pod自動拡容と縮容を実現する
1)HPAコントローラの生成
[root@master ~]# kubectl run php-apache --image=mirrorgooglecontainers/hpa-example --requests=cpu=200m --expose --port=80
# hpa , php-apache, CPU 200m 80
[root@master ~]# kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10
# hpa deployment CPU 50% , , 10
[root@master ~]# kubectl get svc | grep php-apache # php-apache svc IP
php-apache ClusterIP 10.97.45.108 80/TCP 44m
[root@master ~]# kubectl get pod | grep php-apa # pod
php-apache-867f97c8cb-9mpd6 1/1 Running 0 44m
2)php-apacheを消費するリソースをシミュレートし、podが自動的に拡張および縮小するかどうかを検証する
新たに複数の端末(nodeノードも使用可能)を開き、php-apacheのpodに対してデッドサイクル要求を行います.以下のようにします(もしあなたのシステム資源が十分であれば、複数の端末を開き、podに対してデッドサイクル要求を行うことができます.私はここで2つのnodeの端末を開き、同時にphp-apacheのpodを求めます):
[root@node01 ~]# while true; do wget -q -O- 10.97.45.108; done # ok
# php-apache pod
[root@master ~]# kubectl get hpa # hpa cpu
# “-w” CPU
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
php-apache Deployment/php-apache 416%/50% 1 10 10 56m
[root@master ~]# kubectl get pod
# , pod , -w pod
NAME READY STATUS RESTARTS AGE
php-apache-867f97c8cb-6jsjq 1/1 Running 0 4m9s
php-apache-867f97c8cb-7xd5x 1/1 Running 0 51s
php-apache-867f97c8cb-9mpd6 1/1 Running 0 56m
php-apache-867f97c8cb-dhng7 1/1 Running 0 3m8s
php-apache-867f97c8cb-qc9hr 1/1 Running 0 2m22s
php-apache-867f97c8cb-rj494 1/1 Running 0 3m38s
php-apache-867f97c8cb-sbn9n 1/1 Running 0 3m38s
php-apache-867f97c8cb-vzfbg 1/1 Running 0 4m9s
php-apache-867f97c8cb-vzfbg 1/1 Running 0 5m19s
php-apache-867f97c8cb-vzfbg 1/1 Running 0 3m39s
# 10 pod, 10 pod
デッドサイクル要求を停止した後もpod数を直ちに減少させることはなく,しばらく待つとpod数を減少させ,流量の再急増を防止する.
これでHPAはpodコピー数の自動拡張と縮小を実現した.
————————ここで終わります.読んでくれてありがとう——————