Kubernetes教程

Kubernetes Autoscaling

Autoscaling 是 Kubernetes 集群的关键特性之一。它是一个特性,其中集群能够随着服务响应需求的增加而增加节点数量,并随着需求的减少而减少节点数量。 Google Cloud Engine (GCE) 和 Google Container Engine (GKE) 目前支持这种自动缩放功能,并且很快就会从 AWS 开始。
为了在 GCE 中设置可扩展的基础架构,我们首先需要有一个活动的 GCE 项目,其中包含 Google 云监控、Google 云日志记录和启用堆栈驱动程序的功能。
首先,我们将设置集群,其中运行几个节点。完成后,我们需要设置以下环境变量。

环境变量

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
现在,我们可以在集群上部署一个应用程序,然后启用水平 Pod 自动缩放器。这可以使用以下命令完成。
$ kubectl autoscale deployment <Application Name>--cpu-percent = 50--min = 1--
max = 10
上述命令表明,随着应用程序负载的增加,我们将维护至少 1 个,最多 10 个 POD 副本。
我们可以通过运行 $kubclt get hpa 命令来检查 autoscaler 的状态。我们将使用以下命令增加 Pod 的负载。
$ 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
我们可以使用以下命令检查正在运行的 Pod 数量。
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
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4