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