最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

K8s?HPA(自動(dòng)伸縮)解讀

 更新時(shí)間:2025年08月14日 15:40:00   作者:大新屋  
HPA(HorizontalPodAutoscaler)根據(jù)CPU/內(nèi)存使用率自動(dòng)調(diào)整Pod數(shù)量,實(shí)現(xiàn)水平擴(kuò)展,與垂直擴(kuò)展不同,需安裝MetricsServer,支持Deployment、StatefulSet等資源,但不適用于DaemonSet

HPA簡(jiǎn)介

提示:Kubernetes官方HPA說明文檔 https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale

在 Kubernetes 中,HPA(Horizontal Pod Autoscaler)自動(dòng)伸縮工作負(fù)載資源 (例如Deployment、StatefulSet等), 目的是自動(dòng)伸縮工作負(fù)載以滿足需求。水平擴(kuò)展意味著對(duì)增加的負(fù)載的響應(yīng)是部署更多的pod。這與垂直擴(kuò)展不同,垂直擴(kuò)展對(duì)于Kubernetes來說意味著將更多的資源(例如:內(nèi)存或CPU)分配給已經(jīng)為工作負(fù)載運(yùn)行的pod。如果負(fù)載減少,并且pod的數(shù)量高于配置的最小值,則HPA會(huì)指示工作負(fù)載資源(Deployment、StatefulSet或其他類似資源)縮減。

在新版的Kubernetes中系統(tǒng)資源的采集均使用Metrics Server,可以通過Metrics采集節(jié)點(diǎn)和Pod的內(nèi)存、磁盤、CPU和網(wǎng)絡(luò)的使用率。HPA通過Metrics采集Pod資源的內(nèi)存、CPU等使用情況,如果發(fā)現(xiàn)某個(gè)Pod資源硬件資源負(fù)載過高或過低,會(huì)自動(dòng)伸縮Pod資源,以達(dá)到Pod硬件資源的負(fù)載均衡。

一、HPA接口類型

  • v1 # 穩(wěn)定版自動(dòng)水平伸縮,只支持CPU指標(biāo)
  • v2beta1 # 支持CPU、內(nèi)存和自定義指標(biāo)
  • v2beta2 # 支持CPU、內(nèi)存、自定義指標(biāo)Custom和額外指標(biāo)ExternalMetrics
### 查看K8s集群是否已安裝部署Metrics Server
root@k8s-master01:~# kubectl get pods -n kube-system -o wide| grep metrics-server
metrics-server-5f9cfc9f9-7kkf4             1/1     Running   2 (4d5h ago)   4d23h   172.30.122.133   k8s-master02   <none>           <none>

### 查看K8s集群所支持的HPA接口類型
root@k8s-master01:~# kubectl api-resources | grep HorizontalPodAutoscaler
horizontalpodautoscalers            hpa          autoscaling/v2                    true         HorizontalPodAutoscaler

二、基于CPU使用率創(chuàng)建HPA

  • 注意:水平pod自動(dòng)縮放無法縮放的對(duì)象,例如:守護(hù)進(jìn)程類的工作負(fù)載DaemonSet
  • 注意:K8s集群必須安裝部署Metrics Server才可以使用HPA功能
  • 注意:HPA是根據(jù)Delpoyment工作負(fù)載.spec.resources.requests參數(shù)實(shí)現(xiàn)自動(dòng)伸縮

1、Deployment resources參數(shù)說明

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx-deploy
  name: nginx-deploy
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      run: nginx-pod
  template:
    metadata:
      name: nginx
      labels:
        run: nginx-pod
    spec:
      containers:
      - name: nginx01
        image: registry.cn-shenzhen.aliyuncs.com/dockerghost/nginx:1.24
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
        resources:              # 配置Pod資源請(qǐng)求和資源限制
          requests:             # 配置Pod資源請(qǐng)求
            cpu: 10m            # 配置CPU資源請(qǐng)求10m(毫核),1顆物理CPU等于1000m
            memory: 64Mi        # 配置內(nèi)存資源請(qǐng)求64M
          limits:               # 配置Pod資源限制
            cpu: 100m           # 配置CPU資源限制100m(毫核) ,1顆物理CPU等于1000m
            memory: 128Mi       # 配置內(nèi)存資源限制128M

2、創(chuàng)建Deployment

cat > /data/yaml/hpa/deployment.yaml << 'EOF'
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx-deploy
  name: nginx-deploy
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      run: nginx-pod
  template:
    metadata:
      name: nginx
      labels:
        run: nginx-pod
    spec:
      containers:
      - name: nginx01
        image: registry.cn-shenzhen.aliyuncs.com/dockerghost/nginx:1.24
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: 10m
            memory: 64Mi
          limits:
            cpu: 100m
            memory: 128Mi
EOF

kubectl create -f /data/yaml/hpa/deployment.yaml
kubectl get pods -n default -owide
kubectl get deploy -n default

3、創(chuàng)建Service暴露 Nginx服務(wù)80端口

### 創(chuàng)建Service
kubectl get deploy -n default
kubectl expose deploy nginx-deploy --port=80
kubectl get service -n default –owide

### 訪問Nginx 80端口
curl 10.96.249.147

4、查看當(dāng)前Pod資源使用率

kubectl top pods -n default

5、HPA參數(shù)說明

apiVersion: autoscaling/v2           # 填寫API資源版本號(hào),通過kubectl api-resources | grep HorizontalPodAutoscaler命令查詢API資源版本號(hào)
kind: HorizontalPodAutoscaler       # 指定資源類型,HorizontalPodAutoscaler資源類型是HorizontalPodAutoscaler
metadata:                           # 包含HorizontalPodAutoscaler的元數(shù)據(jù)
  name: nginx-deploy-hpa            # 自定義HorizontalPodAutoscaler的名稱
  namespace: default                # 指定HPA運(yùn)行的命名空間,與Deployment命名空間相同,默認(rèn)default
spec:
  scaleTargetRef:                  # 指定HPA要監(jiān)控的目標(biāo),包括API版本、類型(如Deployment)、名稱
    apiVersion: apps/v1            # 指定要監(jiān)控目標(biāo)的Deployment API資源版本號(hào)
    kind: Deployment               # 指定要監(jiān)控目標(biāo)的Deployment資源類型
    name: nginx-deploy             # 指定要監(jiān)控目標(biāo)Deployment的名稱
  minReplicas: 1                   #  Pod副本的最小數(shù)量
  maxReplicas: 10                  #  Pod副本的最大數(shù)量
  metrics:                         # 定義觸發(fā)Pod數(shù)量調(diào)整的指標(biāo)
  - type: Resource                 # 指標(biāo)類型,如Resource(資源使用率)或Pods(基于Pods的數(shù)量)
    resource:
      name: cpu                    # 資源名稱,如cpu或memory
      target:
        type: Utilization          # 目標(biāo)類型,如Unilization(利用率)或AverageValue(平均值)
        averageUtilization: 50     # 目標(biāo)利用率百分比(例如 50表示50%)
      # averageValue: 100Mi        # 目標(biāo)平均值(例如100Mi表示100MB)

6、創(chuàng)建HPA(根據(jù)CPU使用率)

cat > /data/yaml/hpa/horizontalpodautoscaler.yaml << 'EOF'
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: nginx-deploy-hpa
  namespace: default
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: nginx-deploy
  minReplicas: 1
  maxReplicas: 5
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50
EOF

kubectl create -f /data/yaml/hpa/horizontalpodautoscaler.yaml
kubectl get hpa -n default

7、創(chuàng)建HPA(根據(jù)CPU平均值)

cat > /data/yaml/hpa/horizontalpodautoscaler.yaml << 'EOF'
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: nginx-deploy-hpa
  namespace: default
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: nginx-deploy
  minReplicas: 1
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: AverageValue
        averageValue: 50m
EOF

kubectl create -f /data/yaml/hpa/horizontalpodautoscaler.yaml
kubectl get hpa -n default

8、創(chuàng)建HPA(根據(jù)Memory使用率)

cat > /data/yaml/hpa/horizontalpodautoscaler.yaml << 'EOF'
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: nginx-deploy-hpa
  namespace: default
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: nginx-deploy
  minReplicas: 1
  maxReplicas: 5
  metrics:
  - type: Resource
    resource:
      name: memory
      target:
        type: Utilization
        averageUtilization: 50
EOF

kubectl create -f /data/yaml/hpa/horizontalpodautoscaler.yaml
kubectl get hpa -n default

9、創(chuàng)建HPA(根據(jù)Memory平均值)

cat > /data/yaml/hpa/horizontalpodautoscaler.yaml << 'EOF'
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: nginx-deploy-hpa
  namespace: default
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: nginx-deploy
  minReplicas: 1
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: memory
      target:
        type: AverageValue
        averageValue: 6Mi
EOF

kubectl create -f /data/yaml/hpa/horizontalpodautoscaler.yaml
kubectl get hpa -n default

10、模擬壓力測(cè)試Nginx容器

### 當(dāng)前只運(yùn)行了一個(gè)Pod
root@k8s-master01:~# kubectl get pod -n default
NAME                            READY   STATUS    RESTARTS   AGE
nginx-deploy-6998946c5b-g2h8c   1/1     Running   0          64m

### 查看Deployment Service
root@k8s-master01:~# kubectl get service -n default | grep nginx-deploy
nginx-deploy   ClusterIP   10.96.249.147   <none>        80/TCP    37m

### 模擬壓力測(cè)試Nginx容器
while true; do wget -q -O- http://10.96.249.147 > /dev/null; done

### 打開另一個(gè)窗口查看Pod CPU資源使用率和自動(dòng)伸縮
for i in `seq 100`;do  sleep 2;kubectl top pods;kubectl get pods -n default;echo;done

11、使用kubectl autoscale命令創(chuàng)建HPA

--cpu-percent=50   # 指定 Deployment 目標(biāo) CPU 使用率百分比
--min=1            # 指定 Deployment 應(yīng)具有的最小副本數(shù)。即使 CPU 利用率很低,水平 Pod 自動(dòng)縮放器也不會(huì)將 Deployment 縮小到此數(shù)值以下
--max=5           # 指定 Deployment 應(yīng)具有的最大副本數(shù)。如果 CPU 利用率非常高,水平 Pod 自動(dòng)縮放器也不會(huì)將 Deployment 擴(kuò)展到此數(shù)值以上

kubectl autoscale deploy nginx-deploy --cpu-percent=50 --min=1 --max=5
kubectl get hpa -n default

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • K8S節(jié)點(diǎn)本地存儲(chǔ)被撐爆問題徹底解決方法

    K8S節(jié)點(diǎn)本地存儲(chǔ)被撐爆問題徹底解決方法

    這篇文章主要為大家介紹了K8S節(jié)點(diǎn)本地存儲(chǔ)被撐爆問題徹底解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • k8s整合istio配置gateway入口、配置集群內(nèi)部服務(wù)調(diào)用管理(最新推薦)

    k8s整合istio配置gateway入口、配置集群內(nèi)部服務(wù)調(diào)用管理(最新推薦)

    這篇文章主要介紹了k8s整合istio配置gateway入口、配置集群內(nèi)部服務(wù)調(diào)用管理,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • Kubernetes調(diào)度機(jī)制與策略實(shí)驗(yàn)詳解

    Kubernetes調(diào)度機(jī)制與策略實(shí)驗(yàn)詳解

    本文通過實(shí)際操作,詳細(xì)介紹了Kubernetes調(diào)度機(jī)制的核心原理和常用調(diào)度策略的配置方法,包括節(jié)點(diǎn)選擇、親和性與反親和性、污點(diǎn)與容忍等,實(shí)驗(yàn)環(huán)境為Kubernetes集群,并通過一系列步驟驗(yàn)證了這些調(diào)度策略的實(shí)際應(yīng)用
    2025-12-12
  • RFO SIG之openEuler AWS AMI 制作詳解

    RFO SIG之openEuler AWS AMI 制作詳解

    這篇文章主要為大家介紹了RFO SIG之openEuler AWS AMI 制作詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • k8s編排之Deployment知識(shí)點(diǎn)詳解

    k8s編排之Deployment知識(shí)點(diǎn)詳解

    這篇文章主要為大家介紹了k8s編排之Deployment知識(shí)點(diǎn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • Kubernetes如何限制不同團(tuán)隊(duì)只能訪問各自namespace實(shí)現(xiàn)

    Kubernetes如何限制不同團(tuán)隊(duì)只能訪問各自namespace實(shí)現(xiàn)

    這篇文章主要為大家介紹了Kubernetes如何限制不同團(tuán)隊(duì)只能訪問各自namespace實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • k8s的包管理工具h(yuǎn)elm使用簡(jiǎn)介

    k8s的包管理工具h(yuǎn)elm使用簡(jiǎn)介

    這篇文章主要為大家介紹了k8s的包管理工具h(yuǎn)elm使用簡(jiǎn)介,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • k8s容器放開鎖內(nèi)存限制問題

    k8s容器放開鎖內(nèi)存限制問題

    nccl-test容器運(yùn)行mpirun時(shí)因NCCL_BUFFSIZE過大導(dǎo)致OOM,需通過修改docker服務(wù)配置文件,將LimitMEMLOCK設(shè)為infinity并重啟docker,以解除內(nèi)存鎖定限制
    2025-09-09
  • Kubernetes訪問控制之鑒權(quán)方法詳解

    Kubernetes訪問控制之鑒權(quán)方法詳解

    這篇文章主要為大家介紹了Kubernetes訪問控制之鑒權(quán)方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • k8s的架構(gòu)組成操作代碼

    k8s的架構(gòu)組成操作代碼

    k8s是一個(gè)輕便的和可擴(kuò)展的開源平臺(tái),用于管理容器化應(yīng)用和服務(wù),通過k8s能夠進(jìn)行應(yīng)用的自動(dòng)化部署和擴(kuò)縮容,這篇文章主要介紹了k8s的架構(gòu)組成,需要的朋友可以參考下
    2024-05-05

最新評(píng)論

五台县| 汉川市| 库车县| 宣化县| 睢宁县| 友谊县| 富锦市| 大同市| 黄骅市| 浑源县| 张家港市| 徐水县| 本溪市| 洪泽县| 彝良县| 绥阳县| 崇仁县| 鹤壁市| 江达县| 綦江县| 古蔺县| 东港市| 黎平县| 永寿县| 昭平县| 鄂尔多斯市| 胶南市| 华安县| 秀山| 鞍山市| 镇巴县| 无锡市| 虎林市| 光泽县| 日土县| 兴业县| 乐平市| 察雅县| 台中市| 德惠市| 子长县|