k8s監(jiān)控?cái)?shù)據(jù)組件Pod自動(dòng)化進(jìn)行擴(kuò)縮容HPA
自動(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.134 <none> 80/TCP 3m17s kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 8d
訪問(wèn)測(cè)試一下:證明這個(gè)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> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a rel="external nofollow" >nginx.org</a>.<br/> Commercial support is available at <a rel="external nofollow" >nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>
配置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)訪問(wè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)將訪問(wèn)測(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í)際的情況使用?。?!
以上就是監(jiān)控?cái)?shù)據(jù)組件Pod自動(dòng)化進(jìn)行擴(kuò)縮容-HPA的詳細(xì)內(nèi)容,更多關(guān)于Pod自動(dòng)化擴(kuò)縮容HPA的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
用 Win2003 架設(shè)郵件服務(wù)器 圖文詳解
很多企業(yè)局域網(wǎng)內(nèi)都架設(shè)了郵件服務(wù)器,用于進(jìn)行公文發(fā)送和工作交流。但使用專業(yè)的企業(yè)郵件系統(tǒng)軟件需要大量的資金投入,這對(duì)于很多企業(yè)來(lái)說(shuō)是無(wú)法承受的2012-10-10銀河麒麟V10服務(wù)器版安裝達(dá)夢(mèng)DM8數(shù)據(jù)庫(kù)的詳細(xì)過(guò)程
這篇文章主要介紹了銀河麒麟V10服務(wù)器版安裝達(dá)夢(mèng)DM8數(shù)據(jù)庫(kù)的詳細(xì)過(guò)程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-03-03網(wǎng)站壓力測(cè)試工具-ab工具apache?bench使用過(guò)程
apache?bench是apache自帶的壓力測(cè)試工具。ab不僅可以對(duì)apache服務(wù)器進(jìn)行網(wǎng)站訪問(wèn)壓力測(cè)試,也可以對(duì)或其它類型的服務(wù)器進(jìn)行壓力測(cè)試。ab工具上手學(xué)習(xí)較快,可以提供需要的基本性能指標(biāo),但沒(méi)有圖形化結(jié)果,不能監(jiān)控。因此可以用作臨時(shí)緊急任務(wù)和簡(jiǎn)單測(cè)試。2022-11-11git創(chuàng)建版本庫(kù)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了git創(chuàng)建版本庫(kù)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08解決Ubuntu虛擬機(jī)NAT不能上網(wǎng)的幾種方法小結(jié)
vmware安裝ubuntu虛擬機(jī)后,網(wǎng)絡(luò)經(jīng)常抽風(fēng),也不知道具體是什么原因?qū)е碌?有時(shí)候開機(jī)就不能上網(wǎng),有時(shí)候,是突然不能上網(wǎng),這個(gè)時(shí)候,嘗試重啟虛擬機(jī)后者電腦,看看能否解決,或者使用下面的方法看看2023-12-12dell 服務(wù)器安裝 centos 7.9 系統(tǒng)的方法
本文介紹了在Dell服務(wù)器上安裝CentOS 7.9系統(tǒng)的步驟,包括查看系統(tǒng)版本、設(shè)置靜態(tài)IP地址、重啟網(wǎng)絡(luò)服務(wù)等,文章還提到了如何為系統(tǒng)生成新的UUID,這些步驟為用戶提供了在Dell服務(wù)器上安裝和配置CentOS 7.9系統(tǒng)的基礎(chǔ)知識(shí)2024-11-11詳解linux命令查看服務(wù)器上的實(shí)時(shí)日志
在項(xiàng)目開發(fā)過(guò)程中,在調(diào)試的階段,往往需要debug或者進(jìn)行查看日志,這篇文章主要介紹了linux命令如何查看服務(wù)器上的實(shí)時(shí)日志,需要的朋友可以參考下2022-09-09