このページの改善にご協力ください
本ユーザーガイドの改善にご協力いただけませんか? このページの下部までスクロールし、[GitHub でこのページの編集] を選択します。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。
Vertical Pod Autoscaler でポッドリソースを調整する
Kubernetes Vertical Pod Autoscaler
前提条件
-
既存の Amazon EKS クラスターがあります。そうでない場合は、「Amazon EKS の使用を開始する」を参照してください。
-
Kubernetes メトリクスサーバーがインストールされています。詳細については、「KubernetesMetrics Server でリソースの使用状況を表示する」を参照してください。
-
Amazon EKS クラスターと通信するように設定された
kubectl
クライアントを使用しています。 -
デバイスに、OpenSSL
1.1.1
以降がインストールされています。
Vertical Pod Autoscaler をデプロイする
このセクションでは、Vertical Pod Autoscaler をクラスターにデプロイします。
Vertical Pod Autoscaler をデプロイするには
-
ターミナルウィンドウを開き、Vertical Pod Autoscaler ソースコードをダウンロードするディレクトリに移動します。
-
kubernetes/autoscaler
GitHub リポジトリのクローンを作成します。 git clone https://github.com/kubernetes/autoscaler.git
-
vertical-pod-autoscaler
ディレクトリを変更します。cd autoscaler/vertical-pod-autoscaler/
-
(オプション) Vertical Pod Autoscaler の別のバージョンをすでにデプロイしている場合は、次のコマンドを使用して削除します。
./hack/vpa-down.sh
ノードが
registry.k8s.io
コンテナレジストリに対してインターネットからアクセスできない場合は、次のイメージをプルして、独自のプライベートリポジトリにプッシュする必要があります。イメージをプルして独自のプライベートリポジトリにプッシュする方法の詳細については、「あるリポジトリから別のリポジトリにコンテナイメージをコピーする」 を参照してください。registry.k8s.io/autoscaling/vpa-admission-controller:0.10.0 registry.k8s.io/autoscaling/vpa-recommender:0.10.0 registry.k8s.io/autoscaling/vpa-updater:0.10.0
プライベートの Amazon ECR リポジトリにイメージをプッシュする場合は、マニフェストの
registry.k8s.io
をレジストリに置き換えます。
をアカウントID に置き換えます。111122223333
をクラスターのある AWS リージョン に置き換えます。次のコマンドは、お使いのリポジトリにマニフェストのリポジトリ名と同じ名前を付けていることを前提としています。リポジトリに別名を付けた場合も、同様に変更する必要があります。region-code
sed -i.bak -e 's/registry.k8s.io/
111122223333
.dkr.ecr.region-code
.amazonaws.com/' ./deploy/admission-controller-deployment.yaml sed -i.bak -e 's/registry.k8s.io/111122223333
.dkr.ecr.region-code
.amazonaws.com/' ./deploy/recommender-deployment.yaml sed -i.bak -e 's/registry.k8s.io/111122223333
.dkr.ecr.region-code
.amazonaws.com/' ./deploy/updater-deployment.yaml-
次のコマンドを使用して、Vertical Pod Autoscaler をクラスターにデプロイします。
./hack/vpa-up.sh
-
Vertical Pod Autoscaler Pods が正常に作成されたことを確認します。
kubectl get pods -n kube-system
出力例は次のとおりです。
NAME READY STATUS RESTARTS AGE [...] metrics-server-
8459fc497
-kfj8w
1/1 Running 0 83m vpa-admission-controller-68c748777d
-ppspd
1/1 Running 0 7s vpa-recommender-6fc8c67d85
-gljpl
1/1 Running 0 8s vpa-updater-786b96955c
-bgp9d
1/1 Running 0 8s
Vertical Pod Autoscaler のインストールをテストします
このセクションでは、サンプルアプリケーションをデプロイして、Vertical Pod Autoscaler が動作していることを確認します。
Vertical Pod Autoscaler のインストールをテストするには
-
次のコマンドを使用して
hamster.yaml
Vertical Pod Autoscaler の例をデプロイします。kubectl apply -f examples/hamster.yaml
-
hamster
アプリケーション例から Pods を取得します。kubectl get pods -l app=hamster
出力例は次のとおりです。
hamster-
c7d89d6db
-rglf5
1/1 Running 0 48s hamster-c7d89d6db
-znvz5
1/1 Running 0 48s -
cpu
とmemory
の予約を表示する Pods の 1 つを説明します。
を前のステップの出力で返された ID の 1 つに置き換えます。c7d89d6db-rglf5
kubectl describe pod hamster-
c7d89d6db-rglf5
出力例は次のとおりです。
[...] Containers: hamster: Container ID: docker://e76c2413fc720ac395c33b64588c82094fc8e5d590e373d5f818f3978f577e24 Image: registry.k8s.io/ubuntu-slim:0.1 Image ID: docker-pullable://registry.k8s.io/ubuntu-slim@sha256:b6f8c3885f5880a4f1a7cf717c07242eb4858fdd5a84b5ffe35b1cf680ea17b1 Port: <none> Host Port: <none> Command: /bin/sh Args: -c while true; do timeout 0.5s yes >/dev/null; sleep 0.5s; done State: Running Started: Fri, 27 Sep 2019 10:35:16 -0700 Ready: True Restart Count: 0 Requests: cpu: 100m memory: 50Mi [...]
元の Pod は 100 millicpu の CPU と 50 メビバイトのメモリを予約していることがわかります。このアプリケーション例では、100 millicpu は Pod の実行に必要なものより少ないため、CPU に制約があります。また、必要とするよりもはるかに少ないメモリを予約します。Vertical Pod Autoscaler
vpa-recommender
デプロイでは、hamster
Pods を分析して、CPU とメモリの要件が適切かどうかを確認します。調整が必要な場合、vpa-updater
は更新された値で Pods を再起動します。 -
vpa-updater
が新しいhamster
Pod を起動するまで待ちます。これには 1~2 分かかります。次のコマンドを使用して、Pods をモニタリングできます。注記
新しい Pod が起動されたかどうかが不明な場合は、Pod 名を前のリストと比較します。新しい Pod が起動すると、新しい Pod 名が表示されます。
kubectl get --watch Pods -l app=hamster
-
新しい
hamster
Pod が開始されたら、それについて説明し、更新された CPU とメモリの予約を表示します。kubectl describe pod hamster-
c7d89d6db
-jxgfv
出力例は次のとおりです。
[...] Containers: hamster: Container ID: docker://2c3e7b6fb7ce0d8c86444334df654af6fb3fc88aad4c5d710eac3b1e7c58f7db Image: registry.k8s.io/ubuntu-slim:0.1 Image ID: docker-pullable://registry.k8s.io/ubuntu-slim@sha256:b6f8c3885f5880a4f1a7cf717c07242eb4858fdd5a84b5ffe35b1cf680ea17b1 Port: <none> Host Port: <none> Command: /bin/sh Args: -c while true; do timeout 0.5s yes >/dev/null; sleep 0.5s; done State: Running Started: Fri, 27 Sep 2019 10:37:08 -0700 Ready: True Restart Count: 0 Requests: cpu: 587m memory: 262144k [...]
以前の出力では、
cpu
予約が元の値の 5 倍以上である 587 millicpu に増加したことがわかります。memory
は 262,144 キロバイト (約 250 メビバイト、つまり元の値の 5 倍) に増加しました。この Pod はリソース不足であり、Vertical Pod Autoscaler は見積りをより適切な値で修正しました。 -
hamster-vpa
リソースの詳細を表示して、新しい推奨事項を表示します。kubectl describe vpa/hamster-vpa
出力例は次のとおりです。
Name: hamster-vpa Namespace: default Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"autoscaling.k8s.io/v1beta2","kind":"VerticalPodAutoscaler","metadata":{"annotations":{},"name":"hamster-vpa","namespace":"d... API Version: autoscaling.k8s.io/v1beta2 Kind: VerticalPodAutoscaler Metadata: Creation Timestamp: 2019-09-27T18:22:51Z Generation: 23 Resource Version: 14411 Self Link: /apis/autoscaling.k8s.io/v1beta2/namespaces/default/verticalpodautoscalers/hamster-vpa UID: d0d85fb9-e153-11e9-ae53-0205785d75b0 Spec: Target Ref: API Version: apps/v1 Kind: Deployment Name: hamster Status: Conditions: Last Transition Time: 2019-09-27T18:23:28Z Status: True Type: RecommendationProvided Recommendation: Container Recommendations: Container Name: hamster Lower Bound: Cpu: 550m Memory: 262144k Target: Cpu: 587m Memory: 262144k Uncapped Target: Cpu: 587m Memory: 262144k Upper Bound: Cpu: 21147m Memory: 387863636 Events: <none>
-
アプリケーション例の試用が終了したら、次のコマンドで削除します。
kubectl delete -f examples/hamster.yaml