• 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,测试完成。

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

     

     
  • 相关阅读:
    Python模块之re模块
    Python-正则
    Python算法之二分查找法
    Python函数之递归函数
    Python练习题
    Python函数之匿名函数
    PHP iconv 解决utf-8和gb2312编码转换问题
    IE Firefox 中ZIndex的高低准则
    由于您和其他用户试图同时改变同一数据,导致 Microsoft Jet 数据库引擎停止进程解决办法
    Image MagicK 速查
  • 原文地址:https://www.cnblogs.com/cptao/p/10912984.html
Copyright © 2020-2023  润新知