目录

文章目录

  • 目录
  • @[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 水平自动伸缩),简称 HPAHPA 通过监控分析一些控制器控制的所有 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相关推荐

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

    Pod 自动扩缩容 之前提到过通过手工执行kubectl scale命令和在Dashboard上操作可以实现Pod的扩缩容,但是这样毕竟需要每次去手工操作一次,而且指不定什么时候业务请求量就很大了,所 ...

  2. k8s之HPA(Pod水平自动伸缩)

    Horizontal Pod Autoscaler官方文档:Pod 水平自动扩缩 | Kubernetes Pod 水平自动扩缩(Horizontal Pod Autoscaler) 可以基于 CPU ...

  3. k8s之Horizontal Pod Autoscaler(Pod水平自动伸缩)

    官方文档:Pod 水平自动扩缩 | Kuberneteshttps://kubernetes.io/zh/docs/tasks/run-application/horizontal-pod-autos ...

  4. Kubernetes(K8s)基本概念:HPA(Pod横向自动扩容)、StatefulSet

    Kubernetes基本概念:HPA.StatefulSet 一.水平扩展:HPA 二.StatefulSet 1)有状态服务的理解 2)StatefulSet的特性 一.水平扩展:HPA HPA全程 ...

  5. k8s pod容器自动伸缩

    kubernetes 弹性伸缩布局 有三种弹性伸缩: (1) CA(Cluster Autoscaler): Node级别自动扩/缩容cluster-autoscaler组件. (2) HPA(Hor ...

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

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

  7. Kubernetes Pod垂直自动伸缩(VPA)

    VPA 简介 VPA 全称 Vertical Pod Autoscaler,即垂直 Pod 自动扩缩容,它根据容器资源使用率自动设置 CPU 和 内存 的requests,从而允许在节点上进行适当的调 ...

  8. Kubernetes Pod垂直自动伸缩

    VPA 简介 VPA全称Vertical Pod Autoscaler,即垂直Pod自动扩缩容,它根据容器资源使用率自动设置CPU和内存的requests,从而允许在节点上进行适当的调度,以便为每个P ...

  9. Java学习日报—消息队列—2021/11/23

    1. 消息队列 1.1 基本概念 消息队列的本质就是发送 -存储 - 消费: 生产者先将消息投递一个叫做「队列」的容器中,然后再从这个容器中取出消息,最后再转发给消费者,仅此而已. 这是传统的队列模型 ...

最新文章

  1. opencv_python使用cv2.imread()读取中文路径,cv2.imwrite()把图片写入中文路径。
  2. Android 之小技巧
  3. 我现在编程方面的特别大的问题
  4. sql获取oracle数据库数据,通过sql语句获取数据库的基本信息
  5. 2016-2017-2学期《程序设计与数据结构》教学进程
  6. Android-JNI编程-图文解析
  7. 协程分析之 context 上下文切换
  8. Kafka权威指南-学习笔记---第一章
  9. Jmeter接口压力测试学习总结
  10. 手机屏幕怎么计算机,怎么将手机屏幕投屏到电脑上
  11. APP中如何判断手机类型
  12. Android仿微信朋友圈九宫格图片展示自定义控件,支持缩放动画~
  13. 【Tornado】| 扫码签到系统雏形及思路
  14. XTPToolKitPro常用功能
  15. Mycat个人心得笔记(一)
  16. 视频编解码-----理论基础(3)
  17. IOC容器中bean的生命周期,iocbean生命周期
  18. 计算机学科专业考研总分,2021计算机专业考研备考常识与考试科目分值
  19. 用FireFox火狐浏览器的3D Tilt 插件查看网页3D视图效果
  20. 手机变速齿轮_变速齿轮神途手机版下载

热门文章

  1. 渠道分析 之 渠道分析的价值 -3
  2. 哪些是性价比高的骨传导蓝牙耳机,五款骨传导蓝牙耳机推荐
  3. 对计算机专业最难的,计算机专业: 最好的7所大学! 也是全中国“最难考”的大学!...
  4. 连接线是计算机硬件吗,音箱线怎么连接电脑?有源音箱和无源音箱连接电脑教程...
  5. 电脑屏幕旋转工具 躺着看才舒服。
  6. parameter缩略语_WB 术语及缩略语表
  7. KingbaseES的表空间
  8. 台式机win10系统能连接上wifi,但是不能上网,终于解决了
  9. word2vec中计算两个词的距离或者相似程度。
  10. 7-6 计算存款利息 (10分)