开发手册 欢迎您!
软件开发者资料库

Kubernetes - 自动缩放

Kubernetes Autoscaling - 从简单和简单的步骤学习Kubernetes,从基本到高级概念,包括概述,体系结构,设置,图像,作业,标签和选择器,命名空间,节点,服务,Pod,复制控制器,副本集,部署,卷,秘密,网络政策,API,Kubectl,Kubectl命令,创建应用程序,应用程序部署,自动扩展,仪表板设置,监控。

自动缩放是Kubernetes集群的主要功能之一.随着对服务响应的需求增加,集群能够增加节点的数量,并且随着需求的减少,节点的数量减少. Google Cloud Engine(GCE)和Google容器引擎(GKE)目前支持此自动缩放功能,并且很快就会启动AWS.

为了在GCE中设置可扩展的基础架构,我们首先要有一个活跃的GCE项目,其中包括谷歌云监控,谷歌云日志和启用堆栈驱动器的功能.

首先,我们将设置在其中运行的节点很少的集群.完成后,我们需要设置以下环境变量.

环境变量

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

完成后,我们将启动通过运行 kube-up.sh 进行群集.这将创建一个集群以及集群自动标量添加.

  ./cluster/kube-up.sh

在创建集群时,我们可以使用以下kubectl命令检查我们的集群.

$ kubectl get nodesNAME                             STATUS                       AGEkubernetes-master                Ready,SchedulingDisabled     10mkubernetes-minion-group-de5q     Ready                        10mkubernetes-minion-group-yhdx     Ready                        8m

现在,我们可以在群集上部署应用程序,然后启用水平pod自动缩放器.这可以使用以下命令完成.

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

上述命令显示我们将保持至少一个当应用程序上的负载增加时,POD最多可复制10个.

我们可以通过运行 $ kubclt get hpa 命令来检查自动缩放器的状态.我们将使用以下命令增加pod上的负载.

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

我们可以通过运行 $ kubectl get hpa 命令检查 hpa .

$ kubectl get hpaNAME         REFERENCE                     TARGET CURRENTphp-apache   Deployment/php-apache/scale    50%    310%MINPODS  MAXPODS   AGE  1        20      2m  $ kubectl get deployment php-apacheNAME         DESIRED    CURRENT    UP-TO-DATE    AVAILABLE   AGEphp-apache      7          7           7            3        4m

我们可以使用以下命令检查运行的pod数量.

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

最后,我们可以得到节点状态.

$ kubectl get nodesNAME                             STATUS                        AGEkubernetes-master                Ready,SchedulingDisabled      9mkubernetes-minion-group-6z5i     Ready                         43skubernetes-minion-group-de5q     Ready                         9mkubernetes-minion-group-yhdx     Ready                         9m