HPAの例

1.準備:

  1. デプロイされたK8Sクラスター(1.15バージョンのデプロイメントドキュメントを参照
  2. Metrics Serverがインストールされている(Metrics Serverデプロイメントドキュメントを参照

2.導入を開始する

  1. autuscalertest.yamlファイルを使用してnginxサービスをデプロイし、自動スケーリングサービスを確認します
apiVersion: v1
kind: Service
metadata:
  name: autuscalertest
  labels:
    app: autuscalertest
spec:
  type: NodePort
  ports:
    - port: 80
      targetPort: 80
      nodePort: 30110   #服务端口为30110
      protocol: TCP
  selector:
    app: autuscalertest
---

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: autuscalertest
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: autuscalertest
      annotations:
        prometheus.io/scrape: 'true'
    spec:
      containers:
      - name: podinfod
        image: nginx
        imagePullPolicy: Never
        ports:
        - containerPort: 80
          protocol: TCP
        resources:
          requests:
            memory: "32Mi"
            cpu: "1m"
          limits:
            memory: "256Mi"
            cpu: "100m"


requestsパラメーターは、ポッドを実行するためのリソース要件を指定します。これは存在する必要があります。そうでない場合、
yamlファイルが弾性的に縮小されると異常が発生します。yamlファイルで指定されたコピー数は2
で、ポッドは編集後に開始されます。

kubectl apply -f autuscalertest.yaml
  1. HPAサービスのデプロイHPAサービス
    のyamlファイルhpa.yamlを作成します
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
  name: autuscalertest		#与要监控的服务name保持一致
spec:
  scaleTargetRef:
    apiVersion: extensions/v1beta1
    kind: Deployment
    name: autuscalertest
  minReplicas: 2       #设定最小为2个副本
  maxReplicas: 10      #设定最多为10个副本
  metrics:
  - type: Resource
    resource:
      name: cpu
      targetAverageUtilization: 50      #cpu使用率超过50%就增加pod
  - type: Resource
    resource:
      name: memory
      targetAverageUtilization: 50		#内存使用率超过50%就增加pod

注:名前は対応している必要があります。これは、autuscalertestを監視し、autuscalertestサービスの状態を監視し、CPUとメモリの条件に従って自動スケーリングを実現するサービスを作成することと同じです。
その後、HPAサービスを開始します。

kubectl apply -f hpa.yaml

開始後、サービスの監視ステータスを表示できます

kubectl get hpa

ここに画像の説明を挿入
現在のコピー数は2、最小は2、最大は10、現在のポッドのCPUとメモリ使用量であることがわかります

3.サービスに圧力をかけて、hpaサービスが正常であるかどうかを確認します
。PS:NODE以外のマシンで圧力テストを実行し
ます。1.ツール:webbench、軽量のウェブサイト圧力測定ツールを使用します
。2.ソフトウェアをインストールします:
ps:この記事の実行パス: /ルート

wget wget http://www.ha97.com/code/webbench-1.5.tar.gz
tar xvf  webbench-1.5.tar.gz
cd /root/webbench-1.5
yum install gcc*  ctags* -y
make && make install 

インストール中にエラーが発生する可能性があります:インストール:通常のファイル "/ usr / local / man / man1"を作成できません:そのようなファイルまたはディレクトリはありません。
このディレクトリを手動で作成してください

mkdir -p /usr/local/man/man1

次にmake installを
実行し
ます。3 .圧力テストpsを実行します:my node machine、one of the ip is:172.16.26.94

webbench -c 600 -t 600   http://172.16.26.94:30110   #起服务时指定的是30110端口

説明:-cパラメーターは同時実行の数を
示します-tパラメーターは期間を示します
ここに画像の説明を挿入

4.ポッドを確認する

kubectl get hpa

ここに画像の説明を挿入
1つのノードのみに圧力がかかっているため、1つのノードのリソース使用量は大幅に変更されておらず、他のノードのリソース使用量は大幅に増加しています。
ポッド数は徐々に増加します。しばらくすると、ポッドの状況を再度確認すると、REPLICASが最大値に達していることがわかります。
ここに画像の説明を挿入
カブ

この時点でwebbenchサービスを停止し、サーバーリソースの使用状況を確認します。リソースがゆっくりと解放されます。サービスを停止した後、しばらく待つ必要があります

ここに画像の説明を挿入
ポッドがすぐに最小値になるわけではありません。調整プロセスが必要です。ここに画像の説明を挿入
しばらく待ってからもう一度確認してください。ポッドの数が減少していることがわかります。最終的に、構成要件を満たす最小数が復元されます。
ここに画像の説明を挿入
ここに画像の説明を挿入

リファレンス:https://blog.51cto.com/xiaorenwutest/2480053

おすすめ

転載: blog.csdn.net/u010264186/article/details/107937336