Kubernetes Metrics Server と Horizontal Pod Autoscaler を、Amazon EKS 上でセットアップする方法を教えてください。

最終更新日: 2019 年 4 月 15 日

Kubernetes Metrics Server と Horizontal Pod Autoscaler (HPA) を、Amazon Elastic Container Service for Kubernetes (Amazon EKS) 上でセットアップするにはどうすればよいですか ?

解決方法

git clone https://github.com/kubernetes-incubator/metrics-server.git
cd metrics-server/

2.    Metrics Server ディレクトリのルートからMetrics Server をインストールするために、次のコマンドを実行します。

kubectl create -f deploy/1.8+/

3.    次のコマンドを実行し、Metrics Server が実行されていることを確認します。

kubectl get pods -n kube-system

出力は次の例のようになります。

$ kubectl get pods -n kube-system | grep metrics-server
metrics-server-85cc795fbf-79d72   1/1     Running   0          22s

php-apache デプロイとサービスの作成

1.    次のコマンドを実行し、php-apache デプロイを作成します。

kubectl create deployment php-apache --image=k8s.gcr.io/hpa-example

2.    次のコマンドを実行し、CPU リクエストを設定します。

kubectl patch deployment php-apache -p='{"spec":{"template":{"spec":{"containers":[{"name":"hpa-example","resources":{"requests":{"cpu":"200m"}}}]}}}}'

重要 : CPU に正しい値を設定していない場合、ポッドの CPU 使用率メトリックの定義が行われず、HPA はスケーリングを行えません。

3.    次のコマンドを実行し、デプロイをサービスとして公開します。

kubectl create service clusterip php-apache --tcp=80

4.    次のコマンドを実行し、HPA を作成します。

kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10

5.    次のコマンドを実行し、HPA が作成されたことを確認します。

kubectl get hpa

6.    次のコマンドを実行し、前出のステップで作成したデプロイに接続するポッドを作成します。

kubectl run --generator=run-pod/v1 -i --tty load-generator --image=busybox /bin/sh

7.    次のスクリプトを実行し、ステップ 1 で使用した名前空間におけるポッドの負荷をテストします。

while true; do wget -q -O- http://php-apache; done

注: ロードジェネレーターポッドの while ループと tty セッションから抜けるには、 CTRL+C キーでループをキャンセルしてから、CTRL+D によりセッションを終了してください。

8.    次のコマンドを (できれば別のターミナルウィンドウから) 実行し、HPA が CPU 使用率メトリクスに基づきポッドをスケーリングしている様子を確認します。

kubectl get hpa -w

セットアップした Metrics Server が動作を開始し、リソースベースのメトリクスを取得きるようになりましくり

9.    HPA のテストに使用するリソースをクリーンアップするには、以下のコマンドを実行します。

kubectl delete hpa,service,deployment php-apache
kubectl delete pod load-generator

この記事は役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合