日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無(wú)先后,達(dá)者為師

網(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.134           80/TCP    3m17s
kubernetes   ClusterIP   10.96.0.1               443/TCP   8d

訪問測(cè)試一下:證明這個(gè)Pod可以用了

[root@k8s-master01 ~]# curl 10.98.236.134



Welcome 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

欄目分類
最近更新