Kubernetes-autoscaling

提供:Dev Guides
移動先:案内検索

Kubernetes-自動スケーリング

*Autoscaling* はKubernetesクラスターの主要な機能の1つです。 これは、サービス応答の需要が増加するにつれてクラスターがノードの数を増やし、要件が減少するにつれてノードの数を減らすことができる機能です。 自動スケーリングのこの機能は、現在Google Cloud Engine(GCE)およびGoogle Container Engine(GKE)でサポートされており、まもなくAWSで開始されます。

GCEでスケーラブルなインフラストラクチャをセットアップするには、まず、Googleクラウドモニタリング、Googleクラウドロギング、スタックドライバーの機能を有効にしたアクティブなGCEプロジェクトが必要です。

最初に、いくつかのノードが実行されているクラスターをセットアップします。 完了したら、次の環境変数を設定する必要があります。

環境変数

export NUM_NODES = 2
export KUBE_AUTOSCALER_MIN_NODES = 2
export KUBE_AUTOSCALER_MAX_NODES = 5
export KUBE_ENABLE_CLUSTER_AUTOSCALER = true

完了したら、 kube-up.sh を実行してクラスターを起動します。 これにより、クラスターの自動スカラーアドオンと一緒にクラスターが作成されます。

./cluster/kube-up.sh

クラスターの作成時に、次のkubectlコマンドを使用してクラスターを確認できます。

$ kubectl get nodes
NAME                             STATUS                       AGE
kubernetes-master                Ready,SchedulingDisabled     10m
kubernetes-minion-group-de5q     Ready                        10m
kubernetes-minion-group-yhdx     Ready                        8m

これで、クラスターにアプリケーションをデプロイし、水平ポッドオートスケーラーを有効にできます。 これは、次のコマンドを使用して実行できます。

$ kubectl autoscale deployment <Application Name> --cpu-percent = 50 --min = 1 --
max = 10

上記のコマンドは、アプリケーションの負荷が増加しても、PODのレプリカを少なくとも1つ、最大10個保持することを示しています。

*$ kubclt get hpa* コマンドを実行して、オートスケーラーのステータスを確認できます。 次のコマンドを使用して、ポッドの負荷を増やします。
$ kubectl run -i --tty load-generator --image = busybox/bin/sh
$ while true; do wget -q -O- http://php-apache.default.svc.cluster.local; done
*$ kubectl get hpa* コマンドを実行して、 *hpa* を確認できます。
$ kubectl get hpa
NAME         REFERENCE                     TARGET CURRENT
php-apache   Deployment/php-apache/scale    50%    310%

MINPODS  MAXPODS   AGE
  1        20      2m

$ kubectl get deployment php-apache
NAME         DESIRED    CURRENT    UP-TO-DATE    AVAILABLE   AGE
php-apache      7          7           7            3        4m

次のコマンドを使用して、実行中のポッドの数を確認できます。

jsz@jsz-desk2:~/k8s-src$ kubectl get pods
php-apache-2046965998-3ewo6 0/1        Pending 0         1m
php-apache-2046965998-8m03k 1/1        Running 0         1m
php-apache-2046965998-ddpgp 1/1        Running 0         5m
php-apache-2046965998-lrik6 1/1        Running 0         1m
php-apache-2046965998-nj465 0/1        Pending 0         1m
php-apache-2046965998-tmwg1 1/1        Running 0         1m
php-apache-2046965998-xkbw1 0/1        Pending 0         1m

そして最後に、ノードのステータスを取得できます。

$ kubectl get nodes
NAME                             STATUS                        AGE
kubernetes-master                Ready,SchedulingDisabled      9m
kubernetes-minion-group-6z5i     Ready                         43s
kubernetes-minion-group-de5q     Ready                         9m
kubernetes-minion-group-yhdx     Ready                         9m