Kubernetes(k8s) 自动伸缩

自动伸缩是 Kubernetes 集群的关键特性之一。 它是集群能够随着服务响应需求的增加而增加节点数量并随着需求减少而减少节点数量的特性。 目前,Google Cloud Engine (GCE) 和 Google Container Engine (GKE) 都支持这种自动伸缩功能,并且很快将在 AWS 中启动。

为了在 GCE 中建立可扩展的基础设施,我们首先需要有一个活跃的 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

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

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

上述命令表明,随着应用程序负载的增加,我们将至少维护一个且最多 10 个 POD 副本。

我们可以通过运行 $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; 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 数量。

$ 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

查看笔记

扫码一下
查看教程更方便