文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

k8s监控数据组件Pod自动化进行扩缩容HPA怎么用

2023-06-29 14:01

关注

这篇文章主要介绍“k8s监控数据组件Pod自动化进行扩缩容HPA怎么用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“k8s监控数据组件Pod自动化进行扩缩容HPA怎么用”文章能帮助大家解决问题。

自动扩缩容HPA:全称是Horizontal Pod Autoscaler

我们安装k8s集群的时候,安装过一个metrics-server的组件,这是一个监控数据组件,提供HPA和基础资源监控的能力。就是这面这个Pod:

[root@k8s-master01 ~]# kubectl get pod -n kube-system metrics-server-6bf7dcd649-5fhrw            1/1     Running   2 (3d5h ago)   8d

通过这个组件可以看到节点或者Pod的内存和CPU的使用率:

[root@k8s-master01 ~]# kubectl top pod -ANAMESPACE              NAME                                         CPU(cores)   MEMORY(bytes)   default                busybox                                      0m           0Mi             kube-system            calico-kube-controllers-5dffd5886b-4blh7     3m           18Mi            kube-system            calico-node-fvbdq                            42m          135Mi           kube-system            calico-node-g8nqd                            52m          73Mi

除了可以进行简单的监控功能,还可以利用这个监控的数据做一些其他的操作。

比如我们可以给Pod的资源设定某个值,当资源的使用超过这个值,那么系统就会认为这个Pod当前存在压力,从而就行扩容。

一般使用CPU和自定义指标进行扩容,内存相对较少。

HPA实践:

注意事项:要想实现HPA的自动扩容,需要满足以下几个条件

首先创建一个nginx的yaml文件:

kubectl create deployment hpa-nginx --image=nginx --dry-run=client -o yaml > hpa-nginx.yaml

然后进入yaml文件中进行配置:在配置镜像那里进行配置,下列代码的后三行,如果也想对基于内存扩容的话也可以将内存写上。

resources:是资源的意思

requests:是请求的意思,这里应该是请求资源的意思

    spec:      containers:      - image: nginx        name: nginx        resources:          requests:            cpu: 10m

执行yaml文件创建副本:

[root@k8s-master01 ~]# kubectl create -f hpa-nginx.yaml deployment.apps/hpa-nginx created

暴露出一个service端口:

[root@k8s-master01 ~]# kubectl expose deployment hpa-nginx --port=80[root@k8s-master01 ~]# kubectl get svcNAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGEhpa-nginx    ClusterIP   10.98.236.134   <none>        80/TCP    3m17skubernetes   ClusterIP   10.96.0.1       <none>        443/TCP   8d

访问测试一下:证明这个Pod可以用了

[root@k8s-master01 ~]# curl 10.98.236.134<!DOCTYPE html><html><head><title>Welcome to nginx!</title><style>html { color-scheme: light dark; }body { width: 35em; margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif; }</style></head><body><h2>Welcome to nginx!</h2><p>If you see this page, the nginx web server is successfully installed andworking. Further configuration is required.</p><p>For online documentation and support please refer to<a href="http://nginx.org/" rel="external nofollow"   >nginx.org</a>.<br/>Commercial support is available at<a href="http://nginx.com/" rel="external nofollow"   >nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p></body></html>

配置Hpa自动扩缩容的规则:这条命令是说当hpa-nginx这个Pod的cpu值达到10的时候,将进行自动扩容,最小扩容1个,最大扩容10个。

[root@k8s-master01 ~]# kubectl autoscale deployment hpa-nginx --cpu-percent=10 --min=1 --max=10horizontalpodautoscaler.autoscaling/hpa-nginx autoscaled

看一下hpa的规则情况:

[root@k8s-master01 ~]# kubectl get hpaNAME        REFERENCE              TARGETS   MINPODS   MAXPODS   REPLICAS   AGEhpa-nginx   Deployment/hpa-nginx   0%/10%    1         10        1          2m38s

下面进行一个循环访问hpa-nginx:观察hpa的cpu值会不会上升

[root@k8s-master01 ~]# while true; do wget -q -O- http://10.98.236.134 >/dev/null; done

观察是否已经进行扩容:可以看到hpa-nginx的副本数已经进行了自动扩容

[root@k8s-master01 ~]# kubectl get hpaNAME        REFERENCE              TARGETS    MINPODS   MAXPODS   REPLICAS   AGEhpa-nginx   Deployment/hpa-nginx   640%/10%   1         10        1          7m14s[root@k8s-master01 ~]# kubectl top pod NAME                        CPU(cores)   MEMORY(bytes)   busybox                     0m           0Mi             hpa-nginx-bd88bdd8f-7gdwq   1m           3Mi             hpa-nginx-bd88bdd8f-8c6j6   1m           3Mi             hpa-nginx-bd88bdd8f-cfcjs   1m           7Mi             hpa-nginx-bd88bdd8f-h8vx7   74m          7Mi             hpa-nginx-bd88bdd8f-kpgl8   2m           3Mi             hpa-nginx-bd88bdd8f-lpf45   1m           3Mi             hpa-nginx-bd88bdd8f-lwc2h   1m           3Mi             hpa-nginx-bd88bdd8f-qkgfd   1m           3Mi             hpa-nginx-bd88bdd8f-t9fj9   1m           3Mi             hpa-nginx-bd88bdd8f-tbrl4   1m           7Mi

那么,接下来将访问测试停下,看副本是否会自动缩容到最初;等待一会发现副本回到了最原始的一个。注意这个时间可能会有点慢,稍微等一会,不是报错了。

[root@k8s-master01 ~]# kubectl get hpaNAME        REFERENCE              TARGETS   MINPODS   MAXPODS   REPLICAS   AGEhpa-nginx   Deployment/hpa-nginx   2%/10%    1         10        10         11m[root@k8s-master01 ~]# kubectl get podNAME                        READY   STATUS    RESTARTS       AGEbusybox                     1/1     Running   26 (46m ago)   8dhpa-nginx-bd88bdd8f-h8vx7   1/1     Running   0              27m

关于“k8s监控数据组件Pod自动化进行扩缩容HPA怎么用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯