APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

【PlatformCon 2023】大規模環境でのKubernetes運用課題と解決法

ACS事業部の谷合です。

OLX Autosという会社のPlatform Engineerの方のセッションをご紹介します。 platformcon.com

スピーカーの方の会社では、独自に開発したInternal Developer Platforms(以降IDP) ORIONで、ユーザの要望に合わせたオンデマンド環境を払い出せるようにしているそうです。 180以上のマイクロサービス、16000ものPodと13000ものHelmリリースがデプロイされており、現状IDPであるORIONでは150を超えるオンデマンド環境を管理しているそうです(!!!!) それらオンデマンド環境は単一のEKSで管理しているとのことでした。このセッションでは、単一障害点のEKSをどのように運用したのかを話されていました。

単一障害点のEKSのパフォーマンス改善

事象1

EKSで管理する環境が増えるにつれて、以下のK8s Operator(以降Controller)がCrashLoopBackOffとなっていることがよくあったそうです。

  • Prometheus Operator
  • Ingress Controller
  • API Gateway

通常Controllerは、K8sリソースをリスト監視するためにInformerという仕組みを使用します。Informerはオブジェクトを取得し、in-memory-cacheに格納します。そして、Controllerはin-memory-cacheからオブジェクトを取得し、workqueueに格納し順番に処理を行っています。上記ControllerはK8s上のリソースを監視しており、監視対象が増えれば、比例して負荷もかかってきます。そのため、払い出し環境が増えることでInformerの仕事量が増え負荷がかかり、最終的にはCrashLoopBackOffとなっていたようです。

これを解消するために、垂直スケールによりスケールアップを考え付きましたが、スケール量には限界があります。
ではどうするか? Controllerの監視を制限しました。namespaceやField Selectorに基づいて制限をかけたことで大幅なパフォーマンス向上が見られたそうです。
しかし、これにも限界があります。

さらなるパフォーマンス向上に向けて、環境ごとに監視用Controllerをスピンアップすることで、高いパフォーマンスが出たそうです。

事象2

すべての環境、すべてのサービスでレスポンスが非常に悪かったそうです。

  • CoreDNSでいくつかのクエリが失敗していた
  • CoreDNSのポッドのリソース消費量も大幅に増加していた
  • CoreDNSがすべての単一障害点となっていた

1点目について、調査を行っていくと、Podの/etc/resolv.confには3つの検索ドメインがありました。
しかし、options ndotsには5 が設定されており、不要なクエリが発行されていました。 そこでドメインの末尾にドット( . )を含めるか、FQDNでクエリを発行することで事象を解消したそうです。

この事象については、以下のブログ記事に非常に詳しく書いているので、見てみてください。 zenn.dev

2点目については、ローカルDNSキャッシュを使用することで、改善できたとのことでした。 kubernetes.io

環境払い出しのパフォーマンス改善

環境の払い出しはCI/CDで行っているが、非常に時間が掛かることが悩みだったようです。
そこで、以下の対処を行うことで事象の解消ができたとのことでした。

Static Overprovisioner

いくつかの必要PodをStatic Overprovisionerとしておくことで、約5分の短縮が図れたそうです。

IP warm pool

L-IPAMデーモンを使用することで、EC2 APIへの問い合わせをすることなく、Podデプロイ時のIP取得に関する時間が短縮できたとのことでした。 repost.aws

さいごに

環境の払い出しは、Platform Engineeringでも非常に大きな割合を占めていると思っています。
IDP経由で、CI/CDを利用した環境払い出し...夢がありますし、エンジニアとして挑戦し甲斐がありますよね!!!
現在Kubernetes環境払い出しのためのツールであるCluster APIの調査を個人的に行っているため、今回のセッションは非常に興味を惹かれるものでした。
環境払い出しだけなく、皆さんの実運用でも役に立つ取り組みがあれば幸いです。

ACS事業部のご紹介

私達ACS事業部はAzure・AKSなどのクラウドネイティブ技術を活用した内製化のご支援をしております。
www.ap-com.co.jp また、一緒に働いていただける仲間も募集中です!
今年もまだまだ組織規模拡大中なので、ご興味持っていただけましたらぜひお声がけください。 www.ap-com.co.jp

本記事の投稿者: 谷合純也
AKS/ACAをメインにインフラ系のご支援を担当しています。
junya0530さんの記事一覧 | Zenn