ltpo自适应刷新k50支持吗 第6关k8s架构师课程之HPA
ltpo自适应刷新k50支持吗 第6关k8s架构师课程之HPA
2024-06-29 07:59:51  作者:幸福遗忘轼  网址:https://m.xinb2b.cn/know/cna133177.html

大家好,我是博哥爱运维,这节课带来k8s的HPA 自动水平伸缩pod,接下来我们就来聊聊关于ltpo自适应刷新k50支持吗 第6关k8s架构师课程之HPA?以下内容大家不妨参考一二希望能帮到您!

ltpo自适应刷新k50支持吗 第6关k8s架构师课程之HPA

ltpo自适应刷新k50支持吗 第6关k8s架构师课程之HPA

HPA

大家好,我是博哥爱运维,这节课带来k8s的HPA 自动水平伸缩pod。

我们知道,初始Pod的数量是可以设置的,同时业务也分流量高峰和低峰,那么怎么即能不过多的占用K8s的资源,又能在服务高峰时自动扩容pod的数量呢,在K8s上的答案是Horizontal Pod Autoscaling,简称HPA 自动水平伸缩,这里只以我们常用的CPU计算型服务来作为HPA的测试,这基本满足了大部分业务服务需求,其它如vpa纵向扩容,还有基于业务qps等特殊指标扩容这个在后面计划会以独立高级番外篇来作教程。

自动水平伸缩,是指运行在k8s上的应用负载(POD),可以根据资源使用率进行自动扩容、缩容,它依赖metrics-server服务pod使用资源指标收集;我们知道应用的资源使用率通常都有高峰和低谷,所以k8s的HPA特性应运而生;它也是最能体现区别于传统运维的优势之一,不仅能够弹性伸缩,而且完全自动化!

我们在生产中通常用得最多的就是基于服务pod的cpu使用率metrics来自动扩容pod数量,下面来以生产的标准来实战测试下(注意:使用HPA前我们要确保K8s集群的dns服务和metrics服务是正常运行的,并且我们所创建的服务需要配置指标分配)

# pod内资源分配的配置格式如下:# 默认可以只配置requests,但根据生产中的经验,建议把limits资源限制也加上,因为对K8s来说,只有这两个都配置了且配置的值都要一样,这个pod资源的优先级才是最高的,在node资源不够的情况下,首先是把没有任何资源分配配置的pod资源给干掉,其次是只配置了requests的,最后才是两个都配置的情况,仔细品品 resources: limits: # 限制单个pod最多能使用1核(1000m 毫核)cpu以及2G内存 cpu: "1" memory: 2Gi requests: # 保证这个pod初始就能分配这么多资源 cpu: "1" memory: 2Gi

我们先不做上面配置的改动,看看直接创建hpa会产生什么情况:

# 为deployment资源web创建hpa,pod数量上限3个,最低1个,在pod平均CPU达到50%后开始扩容kubectl autoscale deployment web --max=3 --min=1 --cpu-percent=50#过一会看下这个hpa资源的描述(截取这下面一部分)# 下面提示说到,HPA缺少最小资源分配的request参数Conditions: Type Status Reason Message ---- ------ ------ ------- AbleToScale True SucceededGetScale the HPA controller was able to get the target's current scale ScalingActive False FailedGetResourceMetric the HPA was unable to compute the replica count: missing request for cpuEvents: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedComputeMetricsReplicas 3m46s (x12 over 6m33s) horizontal-pod-autoscaler invalid metrics (1 invalid out of 1), first error is: failed to get cpu utilization: missing request for cpu Warning FailedGetResourceMetric 89s (x21 over 6m33s) horizontal-pod-autoscaler missing request for cpu

我们现在以上面创建的deployment资源web来实践下hpa的效果,首先用我们学到的方法导出web的yaml配置,并增加资源分配配置增加:

# cat web.yaml apiVersion: apps/v1kind: Deploymentmetadata: labels: app: web name: web namespace: defaultspec: replicas: 1 selector: matchLabels: app: web template: metadata: labels: app: web spec: containers: - image: nginx name: nginx resources: limits: # 因为我这里是测试环境,所以这里CPU只分配50毫核(0.05核CPU)和20M的内存 cpu: "50m" memory: 20Mi requests: # 保证这个pod初始就能分配这么多资源 cpu: "50m" memory: 20Mi

更新web资源:

# kubectl apply -f web.yaml deployment.apps/web configured

然后创建hpa:

# kubectl autoscale deployment web --max=3 --min=1 --cpu-percent=50 horizontalpodautoscaler.autoscaling/web autoscaled# 等待一会,可以看到相关的hpa信息(K8s上metrics服务收集所有pod资源的时间间隔大概在60s的时间)# kubectl get hpa -wNAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGEweb Deployment/web <unknown>/50% 1 3 1 39sweb Deployment/web 0%/50% 1 3 1 76s

我们来模拟业务流量增长,看看hpa自动伸缩的效果:

# 我们启动一个临时pod,来模拟大量请求# kubectl run -it --rm busybox --image=busybox -- sh/ # while :;do wget -q -O- http://web;done# 等待2 ~ 3分钟,注意k8s为了避免频繁增删pod,对副本的增加速度有限制# kubectl get hpa web -wNAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGEweb Deployment/web 0%/50% 1 3 1 11mweb Deployment/web 102%/50% 1 3 1 14mweb Deployment/web 102%/50% 1 3 3 14m# 看下hpa的描述信息下面的事件记录# kubectl describe hpa webEvents: Type Reason Age From Message ---- ------ ---- ---- -------... Normal SuccessfulRescale 62s horizontal-pod-autoscaler New size: 3; reason: cpu resource utilization (percentage of request) above target

好了,HPA的自动扩容已经见过了,现在停掉压测,观察下HPA的自动收缩功能:

# 可以看到,在业务流量高峰下去后,HPA并不急着马上收缩pod数量,而是等待5分钟后,再进行收敛,这是稳妥的作法,是k8s为了避免频繁增删pod的一种手段# kubectl get hpa web -wNAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGEweb Deployment/web 102%/50% 1 3 3 16mweb Deployment/web 0%/50% 1 3 3 16mweb Deployment/web 0%/50% 1 3 3 20mweb Deployment/web 0%/50% 1 3 1 21m

  • 大家对于囤货的有什么想法吗(上海同事梳理的囤货清单)
  • 2024-06-29上海同事梳理的囤货清单昨天晚上下班后,闲聊群里又开始活跃了,一个北京的同事在群里发了一张图片,并且问是不是真的该去囤点什么,其他的北京同事也说,朋友圈里都在说囤货,感觉不囤点都显得不合群了“感觉囤货像个傻子,不囤货也像傻子。
  • 西红柿牛腩做法(怎么做西红柿牛腩)
  • 2024-06-29怎么做西红柿牛腩用料:牛腩1000克、西红柿900克、大葱0.5根、生姜5片、香菜2棵、番茄酱2汤匙、开水1壶、食盐适量、食用油适量牛肉凉水下锅焯水,焯出血沫捞出,温水洗净待用个西红柿切块待用炒锅烧热后放油,煸香葱姜。
  • 新十强城市(前十城迎来大洗牌)
  • 2024-06-29前十城迎来大洗牌十四五即将起航,新蓝图,新远航!新局势之下的南北经济正愈发变得比东西差异还更加“巨大”;人们已经不得不重视北方经济的衰落,但当前西部大开发正在势头之上;北方正让人变得“担心”起来北方经济低迷的阴霾正让。
  • 四川国庆去哪里玩(你知道吗)
  • 2024-06-29你知道吗九寨沟:因沟内九个藏族村寨坐落而得名,翠海、叠瀑、彩林、雪峰、藏情、蓝冰,被称为“九寨沟六绝”景区内有108个高山湖泊和大熊猫、金丝猴等珍稀动物是世界自然遗产,国家重点风景名胜区,国家AAAAA级旅游。
  • 伊万卡抱小儿子(伊万卡带仨娃骑行)
  • 2024-06-29伊万卡带仨娃骑行当地时间9月3日,伊万卡·特朗普出现在家附近的迈阿密海滩,在石子路上带着孩子骑自行车因为佩戴着宽檐帽,前第一千金的眼睛被遮住了,不过从她脸上那灿烂的笑容看,她的心情还是很不错的至少比三天前独自外出时要。
  • 乐队的夏天提到的实验(试论乐队的夏天)
  • 2024-06-29试论乐队的夏天□徐瀚祺【内容提要】本文以《乐队的夏天》第一季节目为例,从主题、人物、场景方面的奇观化表达入手,分析了其中的视听语言对乐队文化的呈现,力图为其他音乐类综艺摆脱内容泛化提供启示【关键词】音乐类综艺视听语。
  • 安妮·埃尔诺是演员吗 法安妮.埃尔诺
  • 2024-06-29安妮·埃尔诺是演员吗 法安妮.埃尔诺我们回过来谈妇女的历史,发现一切都为男人而存在,在创造性的性自由当中没有过我们的好处加布里也尔·吕西埃的自杀使我们惶惑不安,就像一位陌生的姐妹自杀一样,我们还对蓬皮杜的狡猾感到愤怒,他为了避免说出对骚。
  • 楚乔传结局宇文玥和楚乔身世(重温楚乔传才懂)
  • 2024-06-29重温楚乔传才懂重温楚乔传,我们有一些同感,那就是楚乔对燕洵的爱要超过宇文玥表面上看,燕洵是在青山院对楚乔一见钟情,称她为“小野猫”而楚乔在接触了众纨绔子弟后,也只是对燕洵有好感,所以也就出现了后来楚乔跟随燕洵前往燕。
  • 生完孩子子宫脱垂会有什么影响(什么是子宫脱垂)
  • 2024-06-29什么是子宫脱垂最近看了一条新闻,在宝岛台湾有一位50多岁的女性,生育了4个子女,一开始只是打喷嚏会漏尿但是随着年龄的增加,有一次竟然发现打喷嚏后,有一团肉掉在下体外,最后医生确实是子宫掉落到阴道外了,属于子宫脱垂编。