Kubernetes Node のオートスケーラーとして従来に使われていたのは ClusterAutoscaler でこれは Kubernetes を使っている方なら誰でも利用されていたと思います。
Karpenter は Kubernetes Node のオートスケーラーとして新しく登場したオプションになっており従来 Amazon EKS などで ClusterAutoscaler を利用してオートスケールをする場合には Auto Scaling Group に依存している形になります。Karpenter の場合は未スケジュールの Pod などのスペックを見て最適なキャパシティを選択して直接 EC2 を起動する方式を採用しており起動速度やワークロードに対して最適な選択肢を提供するものとなっています。
今回はその Karpenter のメトリクスを New Relic に対して転送する方法をご紹介します。
環境構成
今回は以下の環境で実施しました。
- Amazon EKS v1.27
- Karpenter v0.33.1
- New Relic Kubernetes Integration (nri-bundle-5.0.58)
EKS は作成されている前提で進めますので Amazon EKS のセットアップガイドに従ってクラスター未作成の方は作成を実施してください。
Karpenter のドキュメントにも Cluster の作成の項目がありのちほど必要な手順が省略されるのでオススメです。
New Relic のアカウントが必要になりますので New Relic のアカウントを持ってない場合はアカウントを作成してください。
Karpenter のデプロイ
Karpenter もドキュメントに従ってセットアップを進めてください。
https://karpenter.sh/preview/getting-started/getting-started-with-karpenter/
Karpenter は 8000 番ポートでメリトクスアクセスのためのポートを公開しており /metrics にリクエストすることでメトリクスを取得できるようになっています。
次に New Relic の Kubernetes Integration を導入して Prometheus のメトリクスも収集できるようにします。
New Relic Kubernetes Integration の導入
New Relic Kubernetes Integration の導入をします。
https://docs.newrelic.com/docs/kubernetes-pixie/kubernetes-integration/get-started/introduction-kubernetes-integration/
Helmで導入をします。
今回は Prometheus Agent を利用するので以下の形で実行します。
yaml 管理することでもう少し効率的に管理ができますがインストール時はワンライナーで導入します。
license key の箇所には New Relic のアカウントで取得できる Lisence Key を利用します。
https://docs.newrelic.com/docs/apis/intro-apis/new-relic-api-keys/
ここまで無事リリースが完了して全てのリソースが正常に動けば準備が整いましたので Prometheus のメトリクスを Karpenter から取得します。
Prometheus メトリクスの取得
Prometheus メトリクスの取得をしていきます。
今回は Prometheus Agent を利用していますのでその手順に沿って設定をします。
Prometheus Agent の場合、newrelic.io/scrape: "true" か prometheus.io/scrape: "true" のannotationが付与されている場合にスクレイプをしにいくようになっています。
Karpenter の Deployment と Service にannotationを付与します。
実際に変更ができたら Promethesu のメトリクスが取得できているかを確認します。
確認の方法として New Relic に Prometheus Agent の Dashboard が用意されているのでそちらを見て頂くか NRQL で取得できていますのでそちらで確認することができます。
参考までに NRQL での取得例を添付します。
Prometheus Agent のダッシュボードからメトリクスが取得されていることを確認することも出来るようになっています。
ここまで確認できたら設定としては以上となります。
オートスケーラーとして正常に動いているかはクラスタ運用としても重要になる点になりますので必要なデータを New Relic に集約してご活用ください。
The views expressed on this blog are those of the author and do not necessarily reflect the views of New Relic. Any solutions offered by the author are environment-specific and not part of the commercial solutions or support offered by New Relic. Please join us exclusively at the Explorers Hub (discuss.newrelic.com) for questions and support related to this blog post. This blog may contain links to content on third-party sites. By providing such links, New Relic does not adopt, guarantee, approve or endorse the information, views or products available on such sites.