Horizontal Pod Autoscaling可以根据CPU利用率自动伸缩一个Replication Controller、Deployment 或者Replica Set中的Pod数量。
Horizontal Pod Autoscaler需要使用Heapster所收集到的 度量数据,请确保Heapster被正确部署到Kubernetes集群中。
使用nginx测试
1)创建deployment和service
  1. [root@node-01 ~]# cat deployment-nginx.yaml
  2. apiVersion: apps/v1beta1
  3. kind: Deployment
  4. metadata:
  5. name: nginx-deployment
  6. spec:
  7. replicas: 2 # tells deployment to run 2 pods matching the template
  8. template: # create pods using pod definition in this template
  9. metadata:
  10. labels:
  11. app: nginx
  12. spec:
  13. nodeSelector:
  14. app: nginx
  15. containers:
  16. - name: nginx
  17. image: nginx:1.8
  18. ports:
  19. - containerPort: 80
  20. livenessProbe:
  21. httpGet:
  22. path: /
  23. port: 80
  24. initialDelaySeconds: 10
  25. timeoutSeconds: 2
  26. periodSeconds: 10
  27. resources:
  28. limits:
  29. cpu: 200m
  30. memory: 30Mi
  31. requests:
  32. cpu: 100m
  33. memory: 20Mi
  34. ---
  35. apiVersion: v1
  36. kind: Service
  37. metadata:
  38. name: nginx-deployment
  39. labels:
  40. app: nginx-deployment
  41. spec:
  42. ports:
  43. - port: 80
  44. protocol: TCP
  45. selector:
  46. app: nginx
  1. [root@node-01 ~]# kubectl apply -f deployment-nginx.yaml

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

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

增加负载

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

检查pod的负载情况

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

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

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

 

kubernetes之Pod水平自动伸缩(HPA)的更多相关文章

  1. Kubernetes Pod水平自动伸缩(HPA)

    HPA简介 HAP,全称 Horizontal Pod Autoscaler, 可以基于 CPU 利用率自动扩缩 ReplicationController.Deployment 和 ReplicaS ...

  2. Horizontal Pod Autoscaler(Pod水平自动伸缩)

    Horizontal Pod Autoscaler 根据观察到的CPU利用率(或在支持自定义指标的情况下,根据其他一些应用程序提供的指标)自动伸缩 replication controller, de ...

  3. 13.深入k8s:Pod 水平自动扩缩HPA及其源码分析

    转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 源码版本是1.19 Pod 水平自动扩缩 Pod 水平自动扩缩工作原理 Pod 水平自动 ...

  4. kubernetes云平台管理实战:HPA水平自动伸缩(十一)

    一.自动伸缩 1.启动 [root@k8s-master ~]# kubectl autoscale deployment nginx-deployment --max=8 --min=2 --cpu ...

  5. 通过一个实际例子理解Kubernetes里pod的自动scale - 水平自动伸缩

    kubectl scale命令用于程序在负载加重或缩小时进行pod扩容或缩小,我们通过一些实际例子来观察scale命令到底能达到什么效果. 命令行创建一个deployment: kubectl run ...

  6. [置顶] Kubernetes1.7新特性:新增自动伸缩条件和参数

    一.核心概念 Horizontal Pod Autoscaling,简称HPA,是Kubernetes中实现POD水平自动伸缩的功能.云计算具有水平弹性的特性,这个是云计算区别于传统IT技术架构的主要 ...

  7. 【六】K8s-Pod 水平自动扩缩实践(简称HPA)

    一.概述 Pod 水平自动扩缩(Horizontal Pod Autoscaler)简称 HPA,HPA 可以根据 CPU 利用率进行自动伸缩 Pod 副本数量,除了 CPU 利用率,也可以基于其他应 ...

  8. Kubernetes之Pod使用

    一.什么是Podkubernetes中的一切都可以理解为是一种资源对象,pod,rc,service,都可以理解是 一种资源对象.pod的组成示意图如下,由一个叫”pause“的根容器,加上一个或多个 ...

  9. Kubernetes使用Keda进行弹性伸缩,更合理利用资源

    我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 简介 Kubernetes自带的HPA是只支持CPU/MEM的,很多时候我们并不根据这两项指标来进行伸缩资源.比如消费 ...

随机推荐

  1. 【LeetCode】1060. Missing Element in Sorted Array 解题报告 (C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 遍历 日期 题目地址:https://leetcode ...

  2. 【九度OJ】题目1124:Digital Roots 解题报告

    [九度OJ]题目1124:Digital Roots 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1124 题目描述: T ...

  3. 【LeetCode】Largest Number 解题报告

    [LeetCode]Largest Number 解题报告 标签(空格分隔): LeetCode 题目地址:https://leetcode.com/problems/largest-number/# ...

  4. 一、golang以及vscode的安装和配置

    1.golang的下载安装 golang的官网最近好像整合了内容,统一到了一个地址:https://go.dev/ 首页直接点击download,下载自己对应的版本即可. 安装是傻瓜式的,一般默认安装 ...

  5. 数据结构作业——P53页算法设计题(7):原地逆转链表

    一. 题目描述: 设计一个算法,将链表中所有结点的链接方向"原地"逆转,即要求仅利用原表的存储空间,换句话说,要求算法的空间复杂度为O(1). 二.算法设计 #include< ...

  6. Regularizing Deep Networks with Semantic Data Augmentation

    目录 概 主要内容 代码 Wang Y., Huang G., Song S., Pan X., Xia Y. and Wu C. Regularizing Deep Networks with Se ...

  7. A Tutorial on Energy-Based Learning

    目录 概 主要内容 损失函数 Energy Loss Generalized Perceptron Loss Generalized Margin Loss Hinge Loss Log Loss L ...

  8. vue 滚动公告

    <!-- 滚动公告 --> <div class="textArr"> <p class="slice-enter-active" ...

  9. 使用PyTorch构建神经网络模型进行手写识别

    使用PyTorch构建神经网络模型进行手写识别 PyTorch是一种基于Torch库的开源机器学习库,应用于计算机视觉和自然语言处理等应用,本章内容将从安装以及通过Torch构建基础的神经网络,计算梯 ...

  10. 【工具】Java转换exe

    一.导出jar包 eclipse中对着要转换的项目,右键,导出 搜索jar,选择jar文件,下一步 选择要输出的项目 继续下一步 选择主程序 完成 二.下载及安装exe4j,并转换jar文件为exe文 ...