1.準備:
- デプロイされたK8Sクラスター(1.15バージョンのデプロイメントドキュメントを参照)
- Metrics Serverがインストールされている(Metrics Serverデプロイメントドキュメントを参照)
2.導入を開始する
- 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
- 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