24、k8s-pod的控制器-第三种-HPA(Horizontal Pod Autoscaler)-自动调整pod的数量

监测pod的使用情况来做调整

概念:HPA可以获取每个pod的利用率、然后和HPA中定义的指标(如cpu、内存等使用情况)进行对比、同时计算出需要伸缩的具体值、最后实现pod数量的调整、其实HPA与之前的Deployment
控制器一样、也属于一种kubernetes资源对象、它通过追踪分析目标pod的负载变化情况、来确定是否需要针对性的调整目标pod的副本数量

1、安装部署metrics-server

metrics-server可以用来收集集群中的资源使用情况
1、安装git:yum install -y git
2、从github上克隆服务:·git clone -b v0.3.6 https://github.com/kubernetes-sigs/metrics-server.git        #如果无法克隆就直接去git上下载·直接网页下载:https://github.com/kubernetes-sigs/metrics-server/tree/v0.3.6        #再上传解压·这里注意使用得版本:0.3.6是包含了deploy目录的 、0.4以上就没有这个目录了·且注意下载的0.3.6解压后会报错、直接解压再压缩里面的文件夹即可、再上传到服务器解压
3、修改deployment.yaml的参数、注意修改的是镜像和初始化参数:·进入解压后的文件里:cd metrics-server/deploy/1.8+/·编辑yaml文件:vim metrics-server-deployment.yaml
-------------------------------------------------------Ⅰ、#添加hostNetwork: truespec:        #注意是在template下的spec添加 hostNetwork: trueserviceAccountName: metrics-serverⅡ、修改镜像仓库下载的地址:image:containers:- name: metrics-serverimage: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6    #修改为阿里云仓库Ⅲ、添加启动参数srgs:在containers下添加containers:- name: metrics-serverimage: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6imagePullPolicy: Alwaysargs:- --kubelet-insecure-tls- --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP
--------------------------------------------------------------------------------------------------------
4、安装部署metrics-server、去到该目录下metrics-server/deploy/1.8+/执行所有的yaml文件:·执行yaml文件:[root@master-1 1.8+]# kubectl apply -f ./        #这就安装了metrics-server了、运行在pod下的服务·查看生产的pod情况、默认在kube-system空间下生成:kubectl get pods -nkube-system----------------------------------------------------------------------------------    NAME                               READY   STATUS    RESTARTS   AGEcoredns-6955765f44-7rtrd           1/1     Running   15         25dcoredns-6955765f44-gvx48           1/1     Running   15         25detcd-master-1                      1/1     Running   17         25dkube-apiserver-master-1            1/1     Running   18         25dkube-controller-manager-master-1   1/1     Running   25         25dkube-flannel-ds-amd64-7b4gl        1/1     Running   1          17hkube-flannel-ds-amd64-ws2xl        1/1     Running   20         25dkube-proxy-777s9                   1/1     Running   17         25dkube-proxy-xgfdl                   1/1     Running   13         25dkube-scheduler-master-1            1/1     Running   25         25dmetrics-server-6b976979db-m7488    1/1     Running   0          2m3s        #这个就是生成的pod 、上面其它都是系统自带的---------------------------------------------------------------------------------------------------------------------------5、查看node运行占用资源情况:kubectl top node
---------------------------------------------------
NAME       CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
master-1   159m         3%     1000Mi          58%
node-1     44m          1%     337Mi           19%
--------------------------------------------------------
5、查看pod的资源占用情况:kubectl top pods -nkube-system

图为vim metrics-server-deployment.yaml  文件修改情况

 

2、准备deployment和service

1、创建deployment: ·kubectl run nginx --image=nginx:1.17.1 --requests=cpu=100m -ndev·--requests=cpu=100m    #cpu的限制、一定要加·查看deployment和生成的pod: kubectl get deploy,pod -ndev----------------------------------------------------------------------NAME                    READY   UP-TO-DATE   AVAILABLE   AGEdeployment.apps/nginx   1/1     1            1           5m34s        #这里的nginx是deployment的名字NAME                         READY   STATUS    RESTARTS   AGEpod/nginx-778cb5fb7b-f4wbg   1/1     Running   0          5m34s        #nginx-778cb5fb7b-f4wbg是pod的名字---------------------------------------------------------------------------------------------------------
2、创建server暴露给外界访问:·kubectl expose deployment nginx --type=NodePort --port=80 -ndev    #--type=NodePort 生成一个给外界访问的端口·查看server:kubectl get deploy,pod,service -ndev--------------------------------------------------------------------NAME                    READY   UP-TO-DATE   AVAILABLE   AGEdeployment.apps/nginx   1/1     1            1           10mNAME                         READY   STATUS    RESTARTS   AGEpod/nginx-778cb5fb7b-f4wbg   1/1     Running   0          10mNAME            TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGEservice/nginx   NodePort   10.105.35.10   <none>        80:30114/TCP   89s            #这里的30114端口是给外界访问的:ip:30114-------------------------------------------------------------------------------------------------------------------------------

 

3、部署HPA

1、创建HPA的yaml文件:
---------------------------------------------------------
apiVersion: autoscaling/v1            #注意这里的版本
kind: HorizontalPodAutoscaler
metadata:name: pc-hpanamespace: devspec:minReplicas: 1        #最小pod数量maxReplicas: 10       #最大pod数量targetCPUUtilizationPercentage: 3     #cpu使用率指标scaleTargetRef:                #指定要控制nginx的信息apiVersion: apps/v1        kind: Deploymentname: nginx----------------------------------------------------------------------
2、执行文件创建HPA:kubectl create -f pc-hpa.yaml
3、查看HPA:kubectl get hpa -ndev
-------------------------------------------------------------
NAME     REFERENCE          TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
pc-hpa   Deployment/nginx   0%/3%     1         10        1          45s#TARGETS 0%/3%    0是正在使用的cpu率、3是指定的阈值
----------------------------------------------------------------------------
4、再开三个窗口实时观看deployment、pod和hpa的情况:·第一个窗口:kubectl get deploy -ndev -w·第二个窗口: kubectl get pods -ndev -w·第三个窗口: kubectl get hpa -ndev -w
5、使用postman工具向nginx服务发送访问请求:·http://192.168.177.160:30114/    #测试正常·向网址发送10000个请求观察hpa的cpu变化和pod、deployment的变化

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/734429.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

编译安装Haproxy

一、三种软负载均衡器的区别 1、关于三种负载均衡器的性能对比: LVS是基于内核实现的,他的性能最好; 其次是haproxy,最后是nginx 关于三种负载均衡器的代理类型对比: LVS只支持基于ip的四层代理转发,也不支持正则匹配; haproxy和nginx都可以作为四层代理和七层代理,同时…

CentOS7.9部署站点运行

简介 本章节主要讲的是在Linux系统CentOS7.9上去完成.NET Core 6.0软件的安装,确定Linux的版本是x64还是arm64的,然后到.NET Core的官网下载6.0的SDK,并进行安装 步骤 1.进入站点目录 2.运行站点 3.配置 Nginx 站点代理 4.浏览站点 实施 1.进入站点目录[root@ml006 /]# cd /…

三大财务报表之间的勾稽关系

财务须知:三大财务报表之间的勾稽关系是怎样,附合并报表系统 三大财务报表是利润表、资产负债表、现金流量表,财务报表之间有勾稽关系,好比资产负债表是底子,利润表就是外面的面子,而现金流量表就是实实在在的日子,可以通过财务报表看出企业财务经营状况是怎么样,那他们…

MMM高可用配置

目录1.MMM的概述2.MMM的工作原理3.如何实现主主复制 1.MMM的概述 MMM(Master-Master replication manager for MySQL,MySQL主主复制管理器) 是一套支持双主故障切换和双主日常管理的脚本程序。MMM 使用 Perl 语言开发,主要用来监控和管理 MySQL Master-Master (双主)复制…

《Programming from the Ground Up》阅读笔记:p1-p18

《Programming from the Ground Up》学习第1天,p1-18总结,总计18页。 一、技术总结 1.fetch-execute cycle p9, The CPU reads in instructions from memory one at a time and executes them. This is known as the fetch-execute cycle。 2.general-purpose vs special-pu…

SpringMVC-02-什么是SpringMVC

1、概述Spring MVC是Spring Framework的Web开发部分,是基于Java实现MVC的轻量级Web框架。官方文档:https://docs.spring.io/spring-framework/docs/4.3.24.RELEASE/spring-framework-reference/html/ 中文官方文档:https://www.w3cschool.cn/spring_mvc_documentation_lines…

视图控制器UINavigationController的介绍与基本使用

UINavigationController 是 iOS 中用于管理视图控制器层次结构的一个重要组件,通常用于实现基于堆栈的导航。它提供了一种用户界面,允许用户在视图控制器之间进行层次化的导航,例如从列表视图到详细视图。 UINavigationController 的主要功能管理视图控制器堆栈:使用一个堆…

拉普拉斯网格变形实现

因为课题需要,除了RBF还做了一个Laplace网格变形,其他大佬已经把原理写的很详细了,我就简单介绍一下公式,主要还是写写实现过程。过程同样参考了大佬的部分代码,而且实现的时候刚开始敲代码不久,所以有点乱QAQ。 首先,计算离散拉普拉斯坐标,网格上的点vi的拉普拉斯坐标…

文本三剑客之grep和awk

文本三剑客之grep和awk 目录文本三剑客之grep和awk 一、grep命令 grep命令的语法:grep[选项]...查找条件 目标文件命令 作用-m数字 多个匹配只取第一个-v 取反-i 忽略大小写-n 显示匹配的行号-c 统计匹配的行数-o 仅显示匹配到的字符串-A 数字 匹配后几行-B 数字 匹配前几行-C…

shell之条件测试语句

shell之条件测试语句 目录shell之条件测试语句一、test命令或[]中括号判断1、test命令2、[]中括号2.1 整数值比较[]2.2 实例操作2.2.1 查看系统内存是否超出预定值2.2.2 比较两个数的大小2.3 字符串比较2.3.1 案例:判断字符串是否相同2.3.2 案例:判断字符串是否为空2.4 逻辑测…

ikbc poker 2说明书

Poker II电子版说明书这是带6个dip开关,type-c接口,背后有理线槽支持侧向出线的一款poker。背后的金属铭牌型号为Poker Ⅱ。ikbc官网已经没有poker相关的内容了,说明书固件都无从下载。这份电子版说明书是找客服要的,这里存一下以作备份。原文档链接:ikbc_poker_II_说明书…

Django数据库

一、MySQL驱动程序安装 我们使用Django来操作MySQL,实际上底层还是通过python来操作的。因此我们想要用Django来操作MySQL,首先还是需要安装一个驱动程序。在Python3中,驱动程序有多种选择。比如pymysql以及mysqlclient等。这里我们就使用mysqlclient来操作。mysqlclient安装…

最后两次oop作业总结

1.前言 最后两次作业(即第七八次作业)大题目都是家居强电电路模拟程序,每次作业分别给了一个礼拜的时间去完成,题量较少,难度逐渐升高,以下为依次对两周题目集的知识点,题量和难度进行概述:第六次作业: 第六次作业只有一道题 家居强电电路模拟程序3,题目大概是输入设…

日志采集/分析

目录EFK1. 日志系统2. 部署ElasticSearch2.1 创建handless服务2.2 创建sts3. 部署kibana4. 部署ilogtail(docker-compose)4.1 编写docker-compose4.2 配置ilogtail采集4.3 查看容器采集的日志4.4 采集容器标准输出日志(可选)4.5 查看采集的容器日志5. 部署kafka5.1 kafka介绍…

AOD始终显示时间和信息(Dream)简析

AOD始终显示时间和信息(Dream)简析DreamManagerService启动在SystemServer的startOtherServices方法中会启动DreamManagerService服务这里是调用SystemServiceManager的startService方法显然,在SystemServiceManager的startService方法中首先将要启动的系统服务添加到其mSer…

操作系统——学习笔记(2)CPU虚拟化

学习黑皮书的一些呆瓜行为hhhhh

免费的攻击面管理平台-森罗

产品简介 森罗是有安科技推出的一款全新综合网络安全攻击面管理平台,集网络空间测绘与漏洞扫描于一体。森罗自带万象漏洞扫描器,与Nessus和Nuclei等许多产品一样,但它更现代,具有免等待的OOB测试策略、高级漏洞PoC IDE和强大的VDSL(漏洞域特定语言)引擎,使您能够轻松快速…