中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

k8s監控數據組件Pod自動化進行擴縮容HPA怎么用

發布時間:2022-03-19 09:01:15 來源:億速云 閱讀:183 作者:iii 欄目:開發技術

這篇文章主要介紹“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 -A
NAMESPACE              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的自動擴容,需要滿足以下幾個條件

  • 必須安裝metrics-server組件或其他自定義版本的metrics-server

  • 必須配置requests參數

  • 不能擴容無法縮放的對象,如DaemonSet

首先創建一個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 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

訪問測試一下:證明這個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 and
working. 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=10
horizontalpodautoscaler.autoscaling/hpa-nginx autoscaled

看一下hpa的規則情況:

[root@k8s-master01 ~]# kubectl get hpa
NAME        REFERENCE              TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
hpa-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 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

那么,接下來將訪問測試停下,看副本是否會自動縮容到最初;等待一會發現副本回到了最原始的一個。注意這個時間可能會有點慢,稍微等一會,不是報錯了。

[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

關于“k8s監控數據組件Pod自動化進行擴縮容HPA怎么用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

云和县| 武安市| 清丰县| 资源县| 神池县| 桓台县| 安多县| 华安县| 新晃| 鄯善县| 如皋市| 墨脱县| 阿坝| 湖州市| 武宣县| 西藏| 修水县| 温宿县| 松江区| 驻马店市| 新邵县| 卢氏县| 凤台县| 周宁县| 武安市| 额敏县| 郁南县| 利津县| 五峰| 昌平区| 大足县| 苏州市| 革吉县| 恩施市| 滦南县| 柳河县| 盐津县| 沙雅县| 方正县| 观塘区| 柞水县|