Kubernetesは、コンテナ用のオープンソースのオーケストレーションツールです。
現在、市場をリードしており、コンテナを扱う企業であれば、すでにKubernetesを使用しているか、近い将来に使用を検討していることでしょう。
しかし、コンテナのデプロイ、スケーリング、管理の自動化を支援するため、Kubernetesは複雑なシステムになっています。
開発者は、ノードとポッドを管理し、トラブルシューティングするために専門的な知識を必要とします。
なぜトラブルシューティングツールが必要なのか?
小規模な環境でも、コントローラやコントロールペインで個々のPodの問題をトラブルシュートするのは困難です。
大規模な環境では、Kubernetesは複数ノードのクラスタで展開され、ポッドで動作するアプリケーションの弾力性と高可用性をサポートするために多くの可動部が存在します。
そのため、IT/DevOpsチームは、Kubernetes環境の問題を管理したり、トラブルシューティングしたりするために複数のツールを必要とします。
Kubernetes環境ではトラブルシューティングが困難です。
ツールは、問題を特定し、修正する時間を節約します。
また、パフォーマンスを監視し、ポッドとスタックで起きている変更を追跡し、ポッドのクラッシュレポートを生成するのに役立ちます。
1. コモドール
Komodor は Kubernetes ネイティブのトラブルシューティングツールで、豊富な機能セットを提供することで、トラブルシューティングの複雑さを解消しています。
Komodorは、K8sスタック全体の変更を追跡し、その波及効果を分析し、スタックのトラブルシューティングに必要なコンテキストを管理者に提供します。
ハイブリッドアプリケーションとして、Web UI(サービスビュー)とKomodorエージェントは、K8sクラスタにインストールされます。
これにより、管理者はサービス間の変更を容易に把握することができます。
Komodorは、管理者がKubernetesスタックを制御し、完全に可視化することを支援します。
Komodorは、バージョン管理システム内のコード、設定、K8stack、監視・警告ツールなど、システムを端から端まで追跡する一元化されたツールです。
Komodorのタイムラインは、どのコードがプッシュされたか、誰がプッシュしたかなど、環境で起きている変化を管理者が確認することを可能にします。
アノテーションにより、管理者はK8 YAMLファイル内でKomodorに関連する全ての設定を行うことができます。
Komodor設定変更APIにより、管理者は設定変更を集中管理サーバーに送信し、Komodorサービスビューの一部として表示することができます。
Komodorエージェントは、Kubernetesクラスタとの対話を可能にし、管理者がトラブルシューティングプロセスをスピードアップすることを可能にします。
2. 織物の範囲
Weave Scope は、Kubernetes クラスタのトラブルシューティングを行うためのツールです。
インフラストラクチャのトポロジーのレポートを生成し、デプロイメントと管理チームが Kubernetes インフラストラクチャで実行中のアプリケーションのパフォーマンスのボトルネックを特定するのに役立ちます。
Weavescopeには、アプリとプローブの2つのコンポーネントがあります。
どちらもscopeスクリプトを使用して単一のコンテナにデプロイできます。
プローブは実行中のホストに関する情報を収集する役割を担い、そのメトリクスはアプリに送信され、レポートを形成します。
Weave Scopeは設定や統合の必要がありません。
管理者は起動するだけでよいのです。
Docker、K8s、AWS ECSとシームレスに統合されています。
Kubernetesで実行されているコンテナをリアルタイムで表示し、管理者はコンテナ化されたアプリケーションのパフォーマンスに関連する問題を簡単に特定し修正することができます。
この記事もチェック:Ubuntu Linuxでデフォルトのアプリケーションを設定する方法
3. クラッシュ
Crash Diagnostics (Crashd) は、DevOps 管理者が Kubernetes インフラと簡単に対話し、インフラから情報を収集できるようにすることで、トラブルシューティングや診断の自動化を支援するツールです。
CrashdはStarlack言語を使用しています。
StarlarkはPythonの方言で、設定言語としての利用を想定しています。
Crashdのスクリプトは、変数宣言、関数定義、データ型、複合型など、通常のプログラミング構成を持っています。
Crashdは、クラスタリソースとともに特定のアプリケーションと相互作用するStarlarkスクリプトファイルを実行します。
Crashdスクリプトは、ファイルに格納されたStarlark関数のコレクションで構成されています。
これには、クラスタ内のノードとアプリケーションについて対話し、診断データおよびその他の情報を収集するための関数が含まれています。
Crashdは、K8sを実行しているインフラストラクチャとの対話を簡単に自動化します。
セキュアなシェルを介して、コンピュートクラスターノードと対話し、情報を取得します。
Kubernetes APIサーバからクラスタログを取得し、クラスタAPIで管理されたクラスタからデータを簡単に抽出します。
4. パワフルシール
Netflixのようなカオスエンジニアリングを導入したチームには、PowerfulSealがおすすめです。
PowerfulSeal は、Kubernetes クラスタ用のカオステストツールです。
クラスタに障害を注入することでインフラにカオスをもたらし、DevOps管理者ができるだけ早く問題を検出できるようにします。
管理者はPodの自己破壊を書き込むことができます。
ポッドを破壊した後、サービスがHTTPプローブに応答し続けるかどうかをチェックするのです。
これは、管理者がシステムの回復力を検証する方法の1つです。
PowerfulSealは、Netflixが開発したChaos Monkeyに触発されたものです。
これは、Amazon Web Services上で動作する仮想マシンをランダムに終了させるものでした。
Chaos Monkeyは、開発者がソフトウェアがなくても機能すると確信していたノードを停止させるものでした。
PowerfulSealは、YAMLシナリオを簡単に書くことができ、素晴らしいタブコンプリートサポートにより、管理者にインタラクティブモードを提供します。
また、PowerfulSealは、OpenStack上で動作するK8s用のKubernetesドライバを持ち、異なるクラウドプロバイダをサポートするドライバを持っています。
Azure、AWS、GCPといった様々なクラウドプロバイダーをサポートするドライバもあります。
まとめ
予測が困難な非常に複雑なものがある場合、実際の問題は予定通りには発生せず、既知のパターンで問題が発生することはありません。
問題をテストし、トラブルシュートし、デバッグする最善の方法は、環境に適したツールを使用することです。
この記事では、4つのKubernetesトラブルシューティングツールと、管理者がKubernetes環境を簡単かつ効率的にトラブルシュートするためにそれらが提供するものについて見てきました。