Gremlimは、'Noisy Neighbors(うるさい隣人)'を隔離して、Kubernetesクラスタ内で動作するサービスのスケーラビリティをテストすることに関心のあるDevOpsエンジニアを対象に、同社のChaos Engineeringプラットフォームの改良版をリリースした。Kubernetesでは、クラスタを共有する複数のアプリケーションがリソースを奪い合ってパフォーマンスが低下するという、´Noisy Neighbors'の問題が発生する。
Kubernetesは、コンテナのリソースフットプリントを小さくして、インフラストラクチャの利用効率を改善することにより、ホスト上のテナント密度の大幅な向上を可能にする。しかしながら、この密度が、リソース所有に関するコンフリクトを生み出す可能性もある。このようにして、同じノードを共有するサービスが他のサービスのリソースを奪うのが'Noisy Neighbour'問題だ。
GremlinのChaos Engineeringサービスの最新アップデートでは、リソース攻撃の個々のコンテナへの分離、containerdおよびCRI-O両ランタイム上での試験、共有クラスタ環境のネームスペース内の個々のノードへの実験のアクセス制御、といったことが可能になっている。
conrtainerdは、DockerやKubernetesやその他の、任意のオペレーティングシステム(OS)上で動作するようにシステムコールやOS特有の機能を抽象化したいプラットフォームで使用するために設計された、業界標準のランタイムである。CRI-Oはcontainerdのライトウェイトな代替プロダクトで、高速かつ安定的なワークロードのために設計された。
UI経由でのKubernetesターゲティング (出典: Gremlin)
個々のPodのスケーリングとKubernetesのリソース制限をテストすることにより、Noisy Neighboursによるアプリケーション障害の防止策を実装することが可能になる。
最後に紹介する機能は、マルチテナント環境で大規模なクラスタを運用する組織を対象としたものだ。Kubernetesでは、ネームスペースによってチーム間のオブジェクトを分離する。オブジェクトはひとつのネームスペース内にのみ存在し、各ネームスペースへのアクセスのコントロールが可能である。Gremlinの新しいアクセス管理では、カオス攻撃を行うユーザに対して、これと同じような論理的分離を維持することが可能になる。
ネームスペースによるアクセス管理 (出典: Gremlin)
Gremlinは、Linuxディストリビューション、コンテナ、クラウドプラットフォームの試験を行うためのChaos Engineeringプラットフォームである。リソース制限、環境の状態変更、ネットワーク変動のシミュレーションや個々の要求に対する影響などによるシステムに障害を挿入するための、攻撃用のフレームワークを提供する。ストレス下にある複雑なシステムに適用して継続的に試験を実施することにより、障害の発生原因を事前に特定することを目的としている。
Kubernetesは、単一ノードに複数のPodをデプロイ可能にすると同時に、個々のPodを周辺に影響を与えることなくスケールアウトする。HPA(Holizontal Pod Autocaling)は、アプリケーション全体をスケールアウトするのではなく、PodをCPU使用状況の観測に基づいてスケールアウトすることによって、システムの効率性を向上する。Kubernetsのリソース制限は、コンテナがリソースを大量に消費して、ノード上の他のサービスを妨害することを回避するためのものだ。
GremlinのプロダクトディレクタであるLorne Kiligerman氏は、これらの動作をテストしないことには、アプリケーションがPodを個別にスケールアウトする上で十分に分離されているかどうかを判断したり、Nosiy Neighboursが同じノードを共有するサービスを中断する可能性があるかどうかを知ることは難しい、とコメントしている。
AmazonとNetflixは、複雑なシステムのスケールアップ時に、最悪のシナリオを克服できるための取り組みのひとつとして、10年程前にChaos Engineeringを 開発した。Gremlinは2016年に設立され、両社の開発経験に基づいたプラットフォームを構築した後、2019年にはネイティブなKubernetes Chaos Engineering as a serviceをローンチしている。
NetflixのChaos MonkeyもオープンソースのChaos Engineeringツールだが、アズ・ア・サービスとして運用するのではなく、システム停止のスケジュールを生成するために、1日1回、Chaos Monkeyをコールするcronジョブをセットアップすることで動作する。
関連するニュースとして、AWSは先頃、フォールトインジェクションサービスを2021年内にローンチすると発表した。GrubHubのサイト信頼性エンジニアであるDoug Campbell氏は、ChaosConf 2020で、Chaos EngineeringとGremlinと既存のDevOps文化の適合性について論じている。