Kubernetes-自動スケーリング
AutoscalingKubernetesクラスターの重要な機能の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
確認できます hpa 実行することによって $ kubectl get 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