zoukankan      html  css  js  c++  java
  • kubernetes之Pod水平自动伸缩(HPA)

    Horizontal Pod Autoscaling可以根据CPU利用率自动伸缩一个Replication Controller、Deployment 或者Replica Set中的Pod数量。
    Horizontal Pod Autoscaler需要使用Heapster所收集到的 度量数据,请确保Heapster被正确部署到Kubernetes集群中。
    使用nginx测试
    1)创建deployment和service
    [root@node-01 ~]# cat deployment-nginx.yaml
    apiVersion: apps/v1beta1
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      replicas: 2 # tells deployment to run 2 pods matching the template
      template: # create pods using pod definition in this template
        metadata:
          labels:
            app: nginx
        spec:
          nodeSelector:
            app: nginx
          containers:
          - name: nginx
            image: nginx:1.8
            ports:
            - containerPort: 80
            livenessProbe:
              httpGet:
                path: /
                port: 80
              initialDelaySeconds: 10
              timeoutSeconds: 2
              periodSeconds: 10
            resources:
              limits:
                cpu: 200m
                memory: 30Mi
              requests:
                cpu: 100m
                memory: 20Mi
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-deployment
      labels:
        app: nginx-deployment
    spec:
      ports:
      - port: 80
        protocol: TCP
      selector:
        app: nginx
    [root@node-01 ~]# kubectl apply -f deployment-nginx.yaml

    创建一个HPA控制器,用于监控对象资源利用率

    kubectl autoscale deployment nginx-deployment --min=2 --max=6 --cpu-percent=50
    # 对nginx的deployment的对象创建HPA控制器,当CPU的使率超过50%时实现自动化扩容,支持1到6之前Pod副本数量,以使得Pod CPU使用率维持在50% 以内。

    增加负载

    $ kubectl run -i --tty load-generator --image=busybox /bin/sh
    
    Hit enter for command prompt
    
    $ while true; do wget -q -O- http://nginx-deployment; done

    检查pod的负载情况

    [root@node-01 ~]# kubectl get hpa
    NAME               REFERENCE                     TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
    nginx-deployment   Deployment/nginx-deployment   4%/20%    2         5         2          28h
    [root@node-01 ~]# kubectl get hpa
    NAME               REFERENCE                     TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
    nginx-deployment   Deployment/nginx-deployment   64%/20%   2         5         5          28h

    同时看到replicas已经增加到了5,测试完成。

    注意 自动伸缩完成副本数量的改变可能需要几分钟的时间。

     

     
  • 相关阅读:
    线性代数学习笔记(代数版)
    洛谷P2765 魔术球问题(贪心 最大流)
    洛谷P2770 航空路线问题(费用流)
    洛谷P4013 数字梯形问题(费用流)
    洛谷P2774 方格取数问题(最小割)
    洛谷P2761 软件补丁问题(状压DP,SPFA)
    项目mysql数据导入数据的Java程序
    axd与ashx区别
    LD1-K(求差值最小的生成树)
    rabbitMQ入门
  • 原文地址:https://www.cnblogs.com/cptao/p/10912984.html
Copyright © 2011-2022 走看看