K8S - Horizontal Pod Autoscaler Walkthrough 水平自动扩容及缩容(译)

https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/

Horizontal Pod Autoscaler 可以通过监控CPU利用率 动态调整Pod的数量 达到动态扩容和缩容的目的。

 

Before you begin

例子运行在Kubernetes cluster and kubectl, version 1.2 or later。 metrics-server 需要被部署到集群 因为 Horizontal Pod Autoscaler 需要使用 API 收集资源利用率。部署指南metrics-server。如果想指定多种度量策略,可以升级Kubernetes cluster and kubectl 到 1.6 以上版本。

 

Run & expose php-apache server

 为了演示Horizo​​ntal Pod Autoscaler 我们将使用基于php-apache 镜像的自定义docker镜像 dockerfile

FROM php:5-apache
ADD index.php /var/www/html/index.php
RUN chmod a+rx index.php

 

PHP进行了消耗CPU资源的计算

<?php
  $x = 0.0001;
  for ($i = 0; $i <= 1000000; $i++) {
    $x += sqrt($x);
  }
  echo "OK!";
?>

首先运行部署镜像 并且通过以下配置将服务暴露出去
application/php-apache.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: php-apache
spec:
  selector:
    matchLabels:
      run: php-apache
  replicas: 1
  template:
    metadata:
      labels:
        run: php-apache
    spec:
      containers:
      - name: php-apache
        image: k8s.gcr.io/hpa-example
        ports:
        - containerPort: 80
        resources:
          limits:
            cpu: 500m
          requests:
            cpu: 200m

---

apiVersion: v1
kind: Service
metadata:
  name: php-apache
  labels:
    run: php-apache
spec:
  ports:
  - port: 80
  selector:
    run: php-apache

运行以下命令:

$ kubectl apply -f https://k8s.io/examples/application/php-apache.yaml
deployment.apps/php-apache created
service/php-apache created

Create Horizontal Pod Autoscaler

 控制副本数量在1到10 将平均CPU利用率维持在50%左右

$ kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10

$ kubectl get hpa
NAME         REFERENCE                     TARGET    MINPODS   MAXPODS   REPLICAS   AGE
php-apache   Deployment/php-apache/scale   0% / 50%  1         10        1          18s

由于没有发送请求 所以cpu利用率为0

Increase load

 循环发送请求

$ kubectl run --generator=run-pod/v1 -it --rm load-generator --image=busybox /bin/sh

Hit enter for command prompt

while true; do wget -q -O- http://php-apache.default.svc.cluster.local; done

查看CPU负载

$ kubectl get hpa
NAME         REFERENCE                     TARGET      MINPODS   MAXPODS   REPLICAS   AGE
php-apache   Deployment/php-apache/scale   305% / 50%  1         10        1          3m


副本已经增加到7个
$ kubectl get deployment php-apache
NAME         READY   UP-TO-DATE   AVAILABLE   AGE
php-apache   7/7      7           7           19m
 

Stop load

 Ctrl + C 停止请求

$ kubectl get hpa
NAME         REFERENCE                     TARGET       MINPODS   MAXPODS   REPLICAS   AGE
php-apache   Deployment/php-apache/scale   0% / 50%     1         10        1          11m
$ kubectl get deployment php-apache
NAME         READY   UP-TO-DATE   AVAILABLE   AGE
php-apache   1/1     1            1           27m

在这里,CPU利用率下降到0,因此HPA自动将副本数缩减到1。

 

posted @ 2020-03-10 10:38  okay4321  阅读(349)  评论(0编辑  收藏  举报