Horizontal Pod Autoscaling(Pod水平自动伸缩),简称HPA。HAP通过监控分析RC或者Deployment控制的所有Pod的负载变化情况来确定是否需要调整Pod的副本数量,这是HPA最基本的原理。
当你创建了HPA后,HPA会从metrics-server或者用户自定义的监控获取每一个一个Pod利用率或原始值的平均值,然后和HPA中定义的指标进行对比,同时计算出需要伸缩的具体值并进行相应的操作

参考:https://cloud.tencent.com/developer/article/1492864

当前1.15.2的k8s放弃了heapster,而使用metrics-server实现HPA

1、准备hpa的yaml文件
下载:https://github.com/kubernetes-incubator/metrics-server

进入yaml目录: cd metrics-server/deploy/1.8+/
编辑metrics-server-deployment.yaml

修改其中的
image: 192.168.100.89:80/metrics-server-amd64:v0.3.3
imagePullPolicy: IfNotPresent
command:
- /metrics-server
- --metric-resolution=30s
- --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP
- --kubelet-insecure-tls

image修改后主要作用是拉取自己的镜像
iamgePullPolicy修改镜像拉取策略
command添加命令和相关参数:

  • /metrics-server选择目录
  • –metric-resolution=30s 从 kubelet 采集数据的周期 30s
  • –kubelet-preferred-address-types优先使用 InternalIP 来访问 kubelet,这样可以避免节点名称没有 DNS 解析记录时,通过节点名称调用节点 kubelet API 失败的情况(未配置时默认的情况)
  • –kubelet-insecure-tls不验证客户端证书
---
apiVersion: v1
kind: ServiceAccount
metadata:name: metrics-servernamespace: kube-system
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:name: metrics-servernamespace: kube-systemlabels:k8s-app: metrics-server
spec:selector:matchLabels:k8s-app: metrics-servertemplate:metadata:name: metrics-serverlabels:k8s-app: metrics-serverspec:serviceAccountName: metrics-servervolumes:# mount in tmp so we can safely use from-scratch images and/or read-only containers- name: tmp-diremptyDir: {}containers:- name: metrics-serverimage: 192.168.100.89:80/metrics-server-amd64:v0.3.3imagePullPolicy: IfNotPresentcommand:- /metrics-server- --metric-resolution=30s- --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP- --kubelet-insecure-tlsvolumeMounts:- name: tmp-dirmountPath: /tmp

部署metrics-server:

kubectl apply -f .

2、创建一个deployment测试 kube-hpa-demo.yaml

加 resources,cpu这部分,否则后面查看hpa的时候,初始化是unknow

---apiVersion: extensions/v1beta1---apiVersion: extensions/v1beta1kind: Deploymentmetadata:name: kube-hpa-demospec:selector:matchLabels:app: hpa-demorevisionHistoryLimit: 10 template:metadata:labels:app: hpa-demospec:containers:- name: kube-hpa-demoimage: 172.16.10.190:8008/helloworld:0.0.8resources:requests:cpu: 100mports:- containerPort: 8080imagePullSecrets:- name: myregistrykey6minReadySeconds: 10strategy:type: RollingUpdaterollingUpdate:maxSurge: 1maxUnavailable: 1
apply create -f kube-heapster-demo.yaml

3、使用自动扩容命令

kubectl autoscale deployment kube-hpa-demo --cpu-percent=10 --min=2 --max=4

4、查看

[root@k8s-node1 ~]# kubectl get hpa
NAME            REFERENCE                  TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
kube-hpa-demo   Deployment/kube-hpa-demo   1%/30%    2         4         2          9m57s[root@k8s-node1 ~]# kubectl get deployment kube-hpa-demo
NAME            READY   UP-TO-DATE   AVAILABLE   AGE
kube-hpa-demo   2/2     2            2           21m
[root@k8s-node1 ~]# kubectl describe hpa kube-hpa-demo
Name:                                                  kube-hpa-demo
Namespace:                                             default
Labels:                                                <none>
Annotations:                                           <none>
CreationTimestamp:                                     Fri, 30 Aug 2019 10:28:29 +0800
Reference:                                             Deployment/kube-hpa-demo
Metrics:                                               ( current / target )resource cpu on pods  (as a percentage of request):  1% (1m) / 30%
Min replicas:                                          2
Max replicas:                                          4
Deployment pods:                                       2 current / 2 desired
Conditions:Type            Status  Reason            Message----            ------  ------            -------AbleToScale     True    ReadyForNewScale  recommended size matches current sizeScalingActive   True    ValidMetricFound  the HPA was able to successfully calculate a replica count from cpu resource utilization (percentage of request)ScalingLimited  True    TooFewReplicas    the desired replica count is more than the maximum replica count
Events:Type    Reason             Age   From                       Message----    ------             ----  ----                       -------Normal  SuccessfulRescale  6m6s  horizontal-pod-autoscaler  New size: 2; reason: All metrics bel

5、删除扩容

[root@k8s-node1 k8s]# kubectl delete hpa kube-hpa-demo
horizontalpodautoscaler.autoscaling "kube-hpa-demo" deleted

k8s学习(九) 使用metrics-server 进行hpa扩容相关推荐

  1. Kubernetes基于Metrics Server的HPA

    Kubernetes基于Metrics Server的HPA [TOC] 1. 环境说明和相关介绍 我的kubernetes环境: kubeadm安装的kubernetes1.11 Horizonta ...

  2. k8s 1.14部署metrics server显示running但是报ServiceUnavailable错误

    k8s 1.14部署metrics server显示running但是报ServiceUnavailable错误 查看metrics server日志: [root@master metrics-se ...

  3. 【K8S 七】Metrics Server部署中的问题

    目录 填坑过程 问题一:启动metrics server报证书错误:x509: cannot validate certificate for x.x.x.x because it doesn't c ...

  4. k8s搭建监控:安装metrics server和dashboard

    安装metrics server 参考:https://github.com/kubernetes-sigs/metrics-server kubectl  create -f components. ...

  5. K8S 学习笔记三 核心技术 Helm nfs prometheus grafana 高可用集群部署 容器部署流程

    K8S 学习笔记三 核心技术 2.13 Helm 2.13.1 Helm 引入 2.13.2 使用 Helm 可以解决哪些问题 2.13.3 Helm 概述 2.13.4 Helm 的 3 个重要概念 ...

  6. k8s学习笔记- 部署prometheus

    1.Prometheus概述 Prometheus是一个开源监控系统,它前身是SoundCloud的警告工具包.从2012年开始,许多公司和组织开始使用Prometheus. 该项目的开发人员和用户社 ...

  7. Kubernetes 【监控】1. Metrics Server、Aggregator APIServer和Prometheus监控体系

    文章目录 1. 背景 2. 简介 3. 监控对象类型 4. Metrics Server简介 5. Metrics Server部署 5.1 下载并解压Metrics-Server 5.2 修改Met ...

  8. Kubernetes — 安装 Metrics Server

    目录 文章目录 目录 Kubernetes Metrics Server 启用 API Aggregator 安装 Metrics Server Kubernetes Metrics Server K ...

  9. ASP.NET Core on K8S学习初探(1)

    " [LOG] ASP.NET Core on K8S Starting..." 01 - 写在之前 当近期的一个App上线后,发现目前的docker实例(应用服务BFF+中台服务 ...

最新文章

  1. Datawhale组队学习 Task02:顺序表和链表(2天)
  2. 聊聊Service Mesh:linkerd
  3. Python自动化办公之Excel拆分并自动发邮件
  4. 是栈还是队列c语言实验报告怎么写,队列和栈(C语言)
  5. ionic判断android版本,$ionicplatform 判断是android还是ios?
  6. java必知必会_Java构造器必知必会
  7. linux sed 循环多行,linux sed 多行处理详细总结
  8. 文件权限管理命令chmod,chown与文本搜索命令grep
  9. 201204NEWS
  10. linux vnc开启防火墙,[转载]CentOS 6.0 下 VNC 配置方法(带防火墙配置)
  11. 什么是量子加密(二)
  12. 常用编程语言介绍及各语言特点
  13. matlab球面投影(二)
  14. Tableau对Airbnb房源的经营分析
  15. 我要用生锈的机关枪击穿现在
  16. ISD9160学习笔记01_大联大Nuvoton ISD9160语音识别开发板初体验
  17. OpenPCDet配置安装记录
  18. R语言学习 - Rstudio
  19. 数据库选型-国产数据库如何满足你的需求
  20. 《Unity3D人工智能编程精粹》笔记

热门文章

  1. sysctl 默认值_设置Linux内核参数 /etc/sysctl.conf
  2. 苹果发布Apple Watch 5手表,是否值得购买?这真的要看个人!!!
  3. 机械革命深海泰坦 X8 Pro 怎么样?测评值得买吗?
  4. 2计算机一级考试,全国计算机等级考试一级考试练习题(二)
  5. 苹果手机没有声音显示耳机模式_安卓苹果暗色模式PK,看完之后没有夜猫子不选Ta|ios|手机|暗色|黑色|coloros...
  6. 计算机考研学校复试线排行,计算机专业考研学校全国排名及各高校复试分数线...
  7. 帕金森和特发性震颤的区别
  8. springCloud(微服务)基础及五大组件
  9. Android 自定义倒计时圆环动画酷炫效果
  10. Xshell和Xftp下载