Kubernetes - Otomatik Ölçeklendirme

AutoscalingKubernetes kümesindeki temel özelliklerden biridir. Hizmet yanıtı talebi arttıkça kümenin düğüm sayısını artırabildiği ve gereksinim azaldıkça düğüm sayısını azaltabildiği bir özelliktir. Bu otomatik ölçeklendirme özelliği şu anda Google Cloud Engine (GCE) ve Google Container Engine (GKE) tarafından desteklenmektedir ve çok yakında AWS ile başlayacaktır.

GCE'de ölçeklenebilir altyapı kurmak için öncelikle Google bulut izleme, google bulut günlük kaydı ve stackdriver özelliklerinin etkin olduğu aktif bir GCE projesine sahip olmamız gerekir.

İlk önce, kümeyi içinde çalışan birkaç düğümle kuracağız. Bittiğinde, aşağıdaki ortam değişkenini ayarlamamız gerekir.

Çevre değişkeni

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

Bittiğinde, kümeyi çalıştırarak başlatacağız kube-up.sh. Bu, küme otomatik skaler eklentisi ile birlikte bir küme oluşturacaktır.

./cluster/kube-up.sh

Kümenin oluşturulmasında aşağıdaki kubectl komutunu kullanarak kümemizi kontrol edebiliriz.

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

Şimdi, küme üzerinde bir uygulama dağıtabilir ve ardından yatay kapsül otomatik ölçekleyiciyi etkinleştirebiliriz. Bu, aşağıdaki komut kullanılarak yapılabilir.

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

Yukarıdaki komut, uygulama üzerindeki yük arttıkça POD'un en az bir ve en fazla 10 kopyasını koruyacağımızı göstermektedir.

Otomatik ölçekleyicinin durumunu şu şekilde kontrol edebiliriz: $kubclt get hpakomut. Aşağıdaki komutu kullanarak bölmelerin üzerindeki yükü artıracağız.

$ kubectl run -i --tty load-generator --image = busybox /bin/sh
$ while true; do wget -q -O- http://php-apache.default.svc.cluster.local; done

Kontrol edebiliriz hpa koşarak $ kubectl get hpa komut.

$ 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

Aşağıdaki komutu kullanarak çalışan pod sayısını kontrol edebiliriz.

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

Ve son olarak, düğüm durumunu alabiliriz.

$ 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