实战:HPA(Pod 水平自动伸缩)-2021.11.23
目录
文章目录
- 目录
- @[toc]
- 实验环境
- 实验软件
- 1、基础知识
- 1.HPA 控制器
- 2.Metrics Server
- a.聚合 API
- 3.什么是`vpa`
- 2、实战演示
- :cupid:**实战演示1**:安装`metrics-server`
- 安装前须知
- :round_pushpin:step1:下载仓库官方metrics server安装的资源清单
- :round_pushpin:step2:修改 `components.yaml` 的镜像地址
- :round_pushpin:step3:部署并查看pod日志
- :round_pushpin:step4:添加一个`--kubelet-insecure-tls`参数跳过证书校验
- :round_pushpin:step5:再次部署并查看
- :round_pushpin:step6:验证效果
- :cupid:实战演示2:测试HPA(默认是CPU的hpa)
- :round_pushpin:step1:创建一个Nginx pod资源清单文件
- :round_pushpin:step2: 部署并查看
- :round_pushpin:step3: 创建一个 `HPA` 资源对象
- :round_pushpin:step4:发现一些fail信息并排查
- :round_pushpin:step5:资源清单文件里添加requests资源重新部署并查看
- :round_pushpin:step6:我们来创建一个pod模拟增大负载进行测试
- :round_pushpin:step7: 我们来关掉 busybox 来减少负载
- :cupid:实战演示3:测试HPA(内存的hpa)
- :round_pushpin:step1: 创建资源清单文件
- :round_pushpin:step2: 直接部署
- :round_pushpin: step3:创建一个基于内存的 HPA 资源对象
- :round_pushpin: step4:直接创建上面的资源对象即可
- :round_pushpin: step5:进行压测
- 3、注意事项
- 1.cpu压测方法
- 2.内存压测方法
- 3.ConfigMap的写法
- 关于我
- 最后
![image-20211123103644534](https://bucket-hg.oss-cn-shanghai.aliyuncs.com/img/image-20211123103644534.png)
实验环境
实验环境:
1、win10,vmwrokstation虚机;
2、k8s集群:3台centos7.6 1810虚机,1个master节点,2个node节点k8s version:v1.22.2containerd://1.5.5
实验软件
链接:https://pan.baidu.com/s/1I2oQvi2GC1g5J0vxOBooqg
提取码:59mi
–来自百度网盘超级会员V6的分享
1、基础知识
1.HPA 控制器
在前面的学习中我们使用了一个 kubectl scale
命令可以来实现 Pod 的扩缩容功能,但是这个是完全手动操作的,要应对线上的各种复杂情况,**我们需要能够做到自动化去感知业务,来自动进行扩缩容。**为此,Kubernetes 也为我们提供了这样的一个资源对象:Horizontal Pod Autoscaling(Pod 水平自动伸缩)
,简称 HPA
,HPA 通过监控分析一些控制器控制的所有 Pod 的负载变化情况来确定是否需要调整 Pod 的副本数量,这是 HPA 最基本的原理:
我们可以简单的通过 kubectl autoscale
命令来创建一个 HPA 资源对象,HPA Controller
默认30s
轮询一次(可通过 kube-controller-manager
的--horizontal-pod-autoscaler-sync-period
参数进行设置),查询指定的资源中的 Pod 资源使用率,并且与创建时设定的值和指标做对比,从而实现自动伸缩的功能。
2.Metrics Server
在 HPA 的第一个版本中,我们需要 Heapster(目前这个已经废弃了)
提供 CPU 和内存指标,在 HPA v2 过后就需要安装 Metrcis Server 了,Metrics Server
可以通过标准的 Kubernetes API 把监控数据暴露出来,有了 Metrics Server
之后,我们就完全可以通过标准的 Kubernetes API 来访问我们想要获取的监控数据了:
https://10.96.0.1/apis/metrics.k8s.io/v1beta1/namespaces/<namespace-name>/pods/<pod-name>
比如当我们访问上面的 API 的时候,我们就可以获取到该 Pod 的资源数据,**这些数据其实是来自于 kubelet 的 Summary API
采集而来的。**不过需要说明的是我们这里可以通过标准的 API 来获取资源监控数据,并不是因为 Metrics Server
就是 APIServer 的一部分,而是通过 Kubernetes 提供的 Aggregator(聚合器)
汇聚插件来实现的,是独立于 APIServer 之外运行的。
a.聚合 API
Aggregator
允许开发人员编写一个自己的服务,把这个服务注册到 Kubernetes 的 APIServer 里面去,这样我们就可以像原生的 APIServer 提供的 API 使用自己的 API 了,我们把自己的服务运行在 Kubernetes 集群里面,然后 Kubernetes 的 Aggregator
通过 Service 名称就可以转发到我们自己写的 Service 里面去了。这样这个聚合层就带来了很多好处:
- 增加了 API 的扩展性:开发人员可以编写自己的 API 服务来暴露他们想要的 API。
- 丰富了 API:核心 kubernetes 团队阻止了很多新的 API 提案,通过允许开发人员将他们的 API 作为单独的服务公开,这样就无须社区繁杂的审查了。
- 开发分阶段实验性 API:新的 API 可以在单独的聚合服务中开发,当它稳定之后,在合并会 APIServer 就很容易了。
- 确保新 API 遵循 Kubernetes 约定:如果没有这里提出的机制,社区成员可能会被迫推出自己的东西,这样很可能造成社区成员和社区约定不一致。
3.什么是vpa
hpa:水平自动扩缩容
vpa:垂直自动扩缩容,我始终在一个pod里面,假设我的memory limits是100Mi,但是现在已经用到了98Mi,如果再大的话就oom了,此时vpa
会在垂直方向上提升你的memory limits的大小。这种vpa比较适合一些资源消耗比较大的应用,例如es
,你给大了资源浪费,给小了,又不够。所以vpa
就派上用场了。当然,vpa
不像hpa
默认集成在k8s里面的,需要你自己去配置的。
另外:vpa
会涉及一些CRD的operator
里的一些知识。
[root@master1 ~]#vim hpa-demo.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: hpa-demo
spec:selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginxports:- containerPort: 80resources:requests:memory: 50Micpu: 50mlimits:memory: 100Micpu: 100m
2、实战演示
实战:HPA(Pod 水平自动伸缩)-2021.11.23相关推荐
- Kubernetes Pod 水平自动伸缩(HPA)
Pod 自动扩缩容 之前提到过通过手工执行kubectl scale命令和在Dashboard上操作可以实现Pod的扩缩容,但是这样毕竟需要每次去手工操作一次,而且指不定什么时候业务请求量就很大了,所 ...
- k8s之HPA(Pod水平自动伸缩)
Horizontal Pod Autoscaler官方文档:Pod 水平自动扩缩 | Kubernetes Pod 水平自动扩缩(Horizontal Pod Autoscaler) 可以基于 CPU ...
- k8s之Horizontal Pod Autoscaler(Pod水平自动伸缩)
官方文档:Pod 水平自动扩缩 | Kuberneteshttps://kubernetes.io/zh/docs/tasks/run-application/horizontal-pod-autos ...
- Kubernetes(K8s)基本概念:HPA(Pod横向自动扩容)、StatefulSet
Kubernetes基本概念:HPA.StatefulSet 一.水平扩展:HPA 二.StatefulSet 1)有状态服务的理解 2)StatefulSet的特性 一.水平扩展:HPA HPA全程 ...
- k8s pod容器自动伸缩
kubernetes 弹性伸缩布局 有三种弹性伸缩: (1) CA(Cluster Autoscaler): Node级别自动扩/缩容cluster-autoscaler组件. (2) HPA(Hor ...
- 通过一个实际例子理解Kubernetes里pod的自动scale - 水平自动伸缩
kubectl scale命令用于程序在负载加重或缩小时进行pod扩容或缩小,我们通过一些实际例子来观察scale命令到底能达到什么效果. 命令行创建一个deployment: kubectl run ...
- Kubernetes Pod垂直自动伸缩(VPA)
VPA 简介 VPA 全称 Vertical Pod Autoscaler,即垂直 Pod 自动扩缩容,它根据容器资源使用率自动设置 CPU 和 内存 的requests,从而允许在节点上进行适当的调 ...
- Kubernetes Pod垂直自动伸缩
VPA 简介 VPA全称Vertical Pod Autoscaler,即垂直Pod自动扩缩容,它根据容器资源使用率自动设置CPU和内存的requests,从而允许在节点上进行适当的调度,以便为每个P ...
- Java学习日报—消息队列—2021/11/23
1. 消息队列 1.1 基本概念 消息队列的本质就是发送 -存储 - 消费: 生产者先将消息投递一个叫做「队列」的容器中,然后再从这个容器中取出消息,最后再转发给消费者,仅此而已. 这是传统的队列模型 ...
最新文章
- opencv_python使用cv2.imread()读取中文路径,cv2.imwrite()把图片写入中文路径。
- Android 之小技巧
- 我现在编程方面的特别大的问题
- sql获取oracle数据库数据,通过sql语句获取数据库的基本信息
- 2016-2017-2学期《程序设计与数据结构》教学进程
- Android-JNI编程-图文解析
- 协程分析之 context 上下文切换
- Kafka权威指南-学习笔记---第一章
- Jmeter接口压力测试学习总结
- 手机屏幕怎么计算机,怎么将手机屏幕投屏到电脑上
- APP中如何判断手机类型
- Android仿微信朋友圈九宫格图片展示自定义控件,支持缩放动画~
- 【Tornado】| 扫码签到系统雏形及思路
- XTPToolKitPro常用功能
- Mycat个人心得笔记(一)
- 视频编解码-----理论基础(3)
- IOC容器中bean的生命周期,iocbean生命周期
- 计算机学科专业考研总分,2021计算机专业考研备考常识与考试科目分值
- 用FireFox火狐浏览器的3D Tilt 插件查看网页3D视图效果
- 手机变速齿轮_变速齿轮神途手机版下载
热门文章
- 渠道分析 之 渠道分析的价值 -3
- 哪些是性价比高的骨传导蓝牙耳机,五款骨传导蓝牙耳机推荐
- 对计算机专业最难的,计算机专业: 最好的7所大学! 也是全中国“最难考”的大学!...
- 连接线是计算机硬件吗,音箱线怎么连接电脑?有源音箱和无源音箱连接电脑教程...
- 电脑屏幕旋转工具 躺着看才舒服。
- parameter缩略语_WB 术语及缩略语表
- KingbaseES的表空间
- 台式机win10系统能连接上wifi,但是不能上网,终于解决了
- word2vec中计算两个词的距离或者相似程度。
- 7-6 计算存款利息 (10分)
Pod 自动扩缩容 之前提到过通过手工执行kubectl scale命令和在Dashboard上操作可以实现Pod的扩缩容,但是这样毕竟需要每次去手工操作一次,而且指不定什么时候业务请求量就很大了,所 ...
Horizontal Pod Autoscaler官方文档:Pod 水平自动扩缩 | Kubernetes Pod 水平自动扩缩(Horizontal Pod Autoscaler) 可以基于 CPU ...
官方文档:Pod 水平自动扩缩 | Kuberneteshttps://kubernetes.io/zh/docs/tasks/run-application/horizontal-pod-autos ...
Kubernetes基本概念:HPA.StatefulSet 一.水平扩展:HPA 二.StatefulSet 1)有状态服务的理解 2)StatefulSet的特性 一.水平扩展:HPA HPA全程 ...
kubernetes 弹性伸缩布局 有三种弹性伸缩: (1) CA(Cluster Autoscaler): Node级别自动扩/缩容cluster-autoscaler组件. (2) HPA(Hor ...
kubectl scale命令用于程序在负载加重或缩小时进行pod扩容或缩小,我们通过一些实际例子来观察scale命令到底能达到什么效果. 命令行创建一个deployment: kubectl run ...
VPA 简介 VPA 全称 Vertical Pod Autoscaler,即垂直 Pod 自动扩缩容,它根据容器资源使用率自动设置 CPU 和 内存 的requests,从而允许在节点上进行适当的调 ...
VPA 简介 VPA全称Vertical Pod Autoscaler,即垂直Pod自动扩缩容,它根据容器资源使用率自动设置CPU和内存的requests,从而允许在节点上进行适当的调度,以便为每个P ...
1. 消息队列 1.1 基本概念 消息队列的本质就是发送 -存储 - 消费: 生产者先将消息投递一个叫做「队列」的容器中,然后再从这个容器中取出消息,最后再转发给消费者,仅此而已. 这是传统的队列模型 ...