網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
k8s監(jiān)控?cái)?shù)據(jù)組件Pod自動(dòng)化進(jìn)行擴(kuò)縮容HPA_服務(wù)器其它
作者:、重明 ? 更新時(shí)間: 2022-05-21 編程語(yǔ)言自動(dòng)擴(kuò)縮容HPA:全稱是Horizontal Pod Autoscaler
我們安裝k8s集群的時(shí)候,安裝過(guò)一個(gè)metrics-server
的組件,這是一個(gè)監(jiān)控?cái)?shù)據(jù)組件,提供HPA和基礎(chǔ)資源監(jiān)控的能力。就是這面這個(gè)Pod:
[root@k8s-master01 ~]# kubectl get pod -n kube-system metrics-server-6bf7dcd649-5fhrw 1/1 Running 2 (3d5h ago) 8d
通過(guò)這個(gè)組件可以看到節(jié)點(diǎn)或者Pod的內(nèi)存和CPU的使用率:
[root@k8s-master01 ~]# kubectl top pod -A NAMESPACE NAME CPU(cores) MEMORY(bytes) default busybox 0m 0Mi kube-system calico-kube-controllers-5dffd5886b-4blh6 3m 18Mi kube-system calico-node-fvbdq 42m 135Mi kube-system calico-node-g8nqd 52m 73Mi
除了可以進(jìn)行簡(jiǎn)單的監(jiān)控功能,還可以利用這個(gè)監(jiān)控的數(shù)據(jù)做一些其他的操作。
比如我們可以給Pod的資源設(shè)定某個(gè)值,當(dāng)資源的使用超過(guò)這個(gè)值,那么系統(tǒng)就會(huì)認(rèn)為這個(gè)Pod當(dāng)前存在壓力,從而就行擴(kuò)容。
一般使用CPU和自定義指標(biāo)進(jìn)行擴(kuò)容,內(nèi)存相對(duì)較少。
HPA實(shí)踐:
注意事項(xiàng):要想實(shí)現(xiàn)HPA的自動(dòng)擴(kuò)容,需要滿足以下幾個(gè)條件
- 必須安裝metrics-server組件或其他自定義版本的metrics-server
- 必須配置requests參數(shù)
- 不能擴(kuò)容無(wú)法縮放的對(duì)象,如DaemonSet
首先創(chuàng)建一個(gè)nginx的yaml文件:
kubectl create deployment hpa-nginx --image=nginx --dry-run=client -o yaml > hpa-nginx.yaml
然后進(jìn)入yaml文件中進(jìn)行配置:在配置鏡像那里進(jìn)行配置,下列代碼的后三行,如果也想對(duì)基于內(nèi)存擴(kuò)容的話也可以將內(nèi)存寫上。
resources:是資源的意思
requests:是請(qǐng)求的意思,這里應(yīng)該是請(qǐng)求資源的意思
spec: containers: - image: nginx name: nginx resources: requests: cpu: 10m
執(zhí)行yaml文件創(chuàng)建副本:
[root@k8s-master01 ~]# kubectl create -f hpa-nginx.yaml deployment.apps/hpa-nginx created
暴露出一個(gè)service端口:
[root@k8s-master01 ~]# kubectl expose deployment hpa-nginx --port=80 [root@k8s-master01 ~]# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hpa-nginx ClusterIP 10.98.236.13480/TCP 3m17s kubernetes ClusterIP 10.96.0.1 443/TCP 8d
訪問測(cè)試一下:證明這個(gè)Pod可以用了
[root@k8s-master01 ~]# curl 10.98.236.134Welcome to nginx! Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.Thank you for using nginx.
配置Hpa自動(dòng)擴(kuò)縮容的規(guī)則:這條命令是說(shuō)當(dāng)hpa-nginx這個(gè)Pod的cpu值達(dá)到10的時(shí)候,將進(jìn)行自動(dòng)擴(kuò)容,最小擴(kuò)容1個(gè),最大擴(kuò)容10個(gè)。
[root@k8s-master01 ~]# kubectl autoscale deployment hpa-nginx --cpu-percent=10 --min=1 --max=10 horizontalpodautoscaler.autoscaling/hpa-nginx autoscaled
看一下hpa的規(guī)則情況:
[root@k8s-master01 ~]# kubectl get hpa NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE hpa-nginx Deployment/hpa-nginx 0%/10% 1 10 1 2m38s
下面進(jìn)行一個(gè)循環(huán)訪問hpa-nginx:觀察hpa的cpu值會(huì)不會(huì)上升
[root@k8s-master01 ~]# while true; do wget -q -O- http://10.98.236.134 >/dev/null; done
觀察是否已經(jīng)進(jìn)行擴(kuò)容:可以看到hpa-nginx的副本數(shù)已經(jīng)進(jìn)行了自動(dòng)擴(kuò)容
[root@k8s-master01 ~]# kubectl get hpa NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE hpa-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
那么,接下來(lái)將訪問測(cè)試停下,看副本是否會(huì)自動(dòng)縮容到最初;等待一會(huì)發(fā)現(xiàn)副本回到了最原始的一個(gè)。注意這個(gè)時(shí)間可能會(huì)有點(diǎn)慢,稍微等一會(huì),不是報(bào)錯(cuò)了。
[root@k8s-master01 ~]# kubectl get hpa NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE hpa-nginx Deployment/hpa-nginx 2%/10% 1 10 10 11m [root@k8s-master01 ~]# kubectl get pod NAME READY STATUS RESTARTS AGE busybox 1/1 Running 26 (46m ago) 8d hpa-nginx-bd88bdd8f-h8vx7 1/1 Running 0 27m
這個(gè)功能雖然好用,但在實(shí)際生成中一定要結(jié)合實(shí)際的情況使用!!!
原文鏈接:https://yyang.blog.csdn.net/article/details/122861622
相關(guān)推薦
- 2022-09-01 基于MFC實(shí)現(xiàn)類的序列化詳解_C 語(yǔ)言
- 2022-01-31 微信小程序獲取二維碼中URL中帶的參數(shù)
- 2022-02-12 Cognos Sample for Oracle數(shù)據(jù)源
- 2022-08-10 淺談pandas關(guān)于查看庫(kù)或依賴庫(kù)版本的API原理_python
- 2022-07-23 Python代碼實(shí)現(xiàn)雙鏈表_python
- 2022-07-09 設(shè)置滾動(dòng)條默認(rèn)樣式 谷歌瀏覽器
- 2022-10-18 linux下shell腳本備份文件的方法實(shí)現(xiàn)_linux shell
- 2022-08-15 SynchronizedList和Vector的區(qū)別
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支