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

最終更新日: 2020 年 5 月 18 日

Kubernetes Metrics Server と Horizontal Pod Autoscaler (HPA) を、Amazon Elastic Kubernetes Service (Amazon EKS) 上でセットアップしたいと考えています。

解決方法

環境の設定

1.    Amazon Elastic Compute Cloud (Amazon EC2) のインスタンスを作成します

2.    Amazon EC2 インスタンスに kubectl をインストールします

3.    お使いの EC2 インスタンスに AWS コマンドラインインターフェイス (AWS CLI) をインストール設定します。

4.    Amazon EKS クラスターを指定するように、kubeconfig.file を構成します

Kubernetes Metrics Server の作成

1.    次のコマンドを実行し、Metricx Server をインストールします。

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml

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

kubectl get pods -n kube-system -l k8s-app=metrics-server

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

kubectl get pods -n kube-system -l k8s-app=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

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

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


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