zoukankan      html  css  js  c++  java
  • K8S

    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。

  • 相关阅读:
    Maven private reprository 更新
    Spark运行模式:cluster与client
    Spark脚本调用
    Java中hashCode与equal方法详解
    String值传递剖析
    Comparator 与 Comparable
    深入理解Java的接口和抽象类
    HitHub使用
    二叉树的递归与非递归遍历
    P1137 旅行计划
  • 原文地址:https://www.cnblogs.com/lnas01/p/12454223.html
Copyright © 2011-2022 走看看