Kubernetes ロギングの 6 つのベスト プラクティス

Kubernetes ロギングの 6 つのベスト プラクティス

Kubernetes は、Pod にデプロイされた数百のコンテナのライフサイクルの管理に役立ちます。高度に分散されており、その部分は動的です。実装された Kubernetes 環境には通常、ワークロードに基づいて継続的に起動および破棄される数百のコンテナをホストするクラスターとノードを含む複数のシステムが含まれます。

Kubernetes で多数のコンテナ化されたアプリケーションやワークロードを処理する場合、エラーを積極的に監視してデバッグすることが重要です。これらのエラーは、コンテナ内、コンテナ、ノード、またはクラスタ レベルで確認できます。 Kubernetes のロギング メカニズムは、サービスとインフラストラクチャの管理と監視に使用できる非常に重要なコンポーネントです。 Kubernetes では、ログを使用してエラーを追跡したり、アプリケーションをホストしているコンテナのパフォーマンスを調整したりすることもできます。

[[329567]]

stdout (標準出力) と stderr (標準エラー) データ ストリームを構成する

画像ソース: kubernetes.io

最初のステップは、ログがどのように生成されるかを理解することです。 Kubernetes では、ログは stdout と stderr の 2 つのストリームに送信されます。これらのデータ ストリームは JSON ファイルに書き込まれ、このプロセスは Kubernetes によって内部的に処理されます。どのログをどのデータ ストリームに送信するかを設定できます。ベスト プラクティスとして、すべてのアプリケーション ログを stdout に送信し、すべてのエラー ログを stderr に送信することが推奨されます。

サイドカーモデルを使用するかどうかの決定

Kubernetes では、ログを収集するためにサイドカー コンテナを使用することを推奨しています。このアプローチでは、各アプリケーション コンテナーに隣接する「ストリーミング コンテナー」があり、すべてのログを stdout と stderr にストリーミングします。サイドカー モデルを使用すると、ノード レベルでログが公開されるのを回避でき、コンテナー レベルでログを制御できるようになります。

しかし、このモデルの問題は、少量のログ記録にしか適しておらず、大規模なログ記録に直面した場合、多くのリソースが占有される可能性があることです。したがって、実行中のアプリケーション コンテナーごとに個別のログ コンテナーを実行する必要があります。 Kubernetes のドキュメントでは、サイドカー モデルには「大きなオーバーヘッドはほとんどない」と説明されています。このモデルを試してみて、選択する前に消費されるリソースの種類を確認するのはあなた次第です。

別の方法としては、ノード レベルでログを収集するログ エージェントを使用する方法があります。これによりオーバーヘッドが削減され、ログが安全に処理されるようになります。 Fluentd は、Kubernetes ログを大規模に集約するための最良の選択肢として浮上しました。これは、Kubernetes と、Kubernetes ログを使用する任意の数のエンドポイントとの間のブリッジとして機能します。また、アプリ ストアに Fluentd が統合されている Rancher などの Kubernetes 管理プラットフォームを選択することもできます。これにより、最初からインストールして構成する必要がなくなります。

Fluentd がログ データをより適切に集約およびルーティングできることを確認したら、次のステップはログ データをどのように保存および分析するかを決定することです。

ログ分析ツールの選択: EFK または専用ログ

従来、ローカル サーバー中心のシステムでは、アプリケーション ログはシステム上のログ ファイルに保存されます。これらのファイルは、定義された場所で確認することも、中央サーバーに移動することもできます。しかし、Kubernetes では、すべてのログはディスク上の /var/log 内の JSON ファイルに送信されます。ノード内のポッドは一時的かつ短命である可能性があるため、このタイプのログ集約は安全ではありません。 Pod を削除すると、ログ ファイルは失われます。部分的なログ データ損失のトラブルシューティングを行う必要がある場合、これは困難になる可能性があります。

Kubernetes では、すべてのログを Elasticsearch に送信するか、任意のサードパーティのログ ツールを使用するかという 2 つのオプションが公式に推奨されています。ここでも、潜在的な選択肢があります。 Elasticsearch ルートを選択するには、Elasticsearch、Fluentd、Kibana を含むフルスタックの EFK スタックを購入する必要があります。各ツールには独自の役割があります。前述のように、Fluentd はログを集約してルーティングできます。 Elasticsearch は、生のログ データを分析し、読み取り可能な出力を提供する強力なプラットフォームです。 Kibana は、ログ データから美しいカスタム ダッシュボードを作成できるオープン ソースのデータ視覚化ツールです。これは完全にオープンソースのスタックであり、Kubernetes を使用したログ記録のための強力なソリューションです。

それでも、心に留めておくべきことがいくつかあります。 Elasticsearch は Elastic と呼ばれる組織によって構築および保守されているだけでなく、大規模なオープンソース開発者コミュニティによっても貢献されています。大規模なデータクエリの処理において高速かつ強力であることが証明されていますが、大規模に操作する際にはいくつかの問題が発生する可能性があります。自己管理型の Elasticsearch を使用している場合は、大規模なプラットフォームを構築する方法を理解する必要があります。

別の方法としては、クラウドベースのログ分析ツールを使用して Kubernetes ログを保存および分析する方法があります。 Sumo Logic や Splunk などのツールが良い例です。これらのツールの中には、Fluentd を利用してログをプラットフォームにルーティングするものもあれば、Kubernetes のノード レベルに独自のカスタム ログ エージェントを配置するものもあります。これらのツールはセットアップが非常に簡単で、これを使用してダッシュボードをゼロから構築し、最短時間でログを表示できます。

RBACを使用してログへのアクセスを制御する

Kubernetes の認証メカニズムでは、ロールベースのアクセス制御 (RBAC) を使用して、ユーザーのアクセスとシステム権限を検証します。操作中に生成された監査ログには、ユーザーが権限を持っているかどうか (authorization.k8s.io/decision) と、ユーザーに権限が付与された理由 (authorization.k8s.io/reason) に基づいて注釈が付けられます。デフォルトでは、監査ログは有効になっていません。認証の問題を追跡するにはこれを有効にすることをお勧めします。これは kubectl を使用して設定できます。

ログの形式を一定に保つ

Kubernetes ログは、Kubernetes アーキテクチャのさまざまな部分によって生成されます。これらの集約されたログは、Fluentd や FluentBit などのログ集約ツールが簡単に処理できるように、一貫した形式にする必要があります。これは、stdout と stderr を構成するときや、Fluentd を使用してラベルとメタデータを割り当てるときなどに留意する必要があります。この構造化されたログは Elasticsearch に送られ、ログ分析中の遅延が短縮されます。

ログ収集デーモンのリソース制限の設定

大量のログが生成されるため、クラスターレベルでのログの管理が困難になります。 DaemonSet は Linux と同様に Kubernetes でも​​使用されます。特定のタスクを実行するためにバックグラウンドで実行されます。 Fluentd と filebeat は、ログ収集用に Kubernetes によってサポートされている 2 つのデーモンです。利用可能なシステム リソースに基づいてログ ファイルの収集を最適化するには、各デーモンにリソース制限を設定する必要があります。

結論は

Kubernetes は複数のレイヤーとコンポーネントで構成されているため、それらを適切に監視および追跡することで、障害が発生しても冷静さを保つことができます。 Kubernetes では、シームレスな統合によるログ記録に外部の「Kubernetes ネイティブ」ツールの使用を推奨しており、管理者がログを取得しやすくなります。この記事で説明されているプラ​​クティスは、どのような状況でも適切に機能する堅牢なログ記録アーキテクチャを実現するために重要です。コンピューティング リソースを最適化された方法で消費し、Kubernetes 環境を安全かつパフォーマンスの高い状態に保ちます。

<<:  仮想マシンからコンテナまで、さまざまなサービス仮想化技術とその適用シナリオについて詳しく説明します。

>>:  クラウドコンピューティングの統合は必須

推薦する

エンタープライズSEOのために何をすべきか

ご存知のとおり、企業サイト、特にポータルサイト化されていないサイトの場合、SEO を行うことは非常に...

Baidu のハイパーリンク アルゴリズムのアップグレード後に Web サイトの外部リンク構築を改善する方法

Baidu Webmaster Platform に「ハイパーリンク不正アルゴリズムのアップグレード...

クラウド支出の無駄を削減する 5 つの方法

「マクロ経済環境がますます厳しくなり、ビジネスリーダーがビジネスの回復力を高める方法を模索する中、C...

ページの類似性による弊害とその解決策

ページの類似性は、検索エンジンによるウェブサイトのコンテンツの品質評価に直接影響します。ウェブサイト...

ウェブサイトの直帰率が高い理由について簡単に説明します

最近、多くの初心者SEO担当者は最適化のために最適化を行っています。ウェブサイトを構築する目的はBa...

企業のクラウドコスト最適化は、クラウドリソースの効率性を向上させることを目指すべきである。

近年、低炭素開発は我が国の国家戦略となっています。 2022年に開催された我が国の共産党第20回全国...

オンラインとオフラインで同じ価格を提供しているSuning.comは、どのような問題に直面する必要があるのでしょうか?

最近、Suning.comは再び中国の電子商取引業界で注目を集めています。しかし、今回は値下げやプロ...

企業ウェブサイトの SEO 最適化の重要性に関する分析

私たち一人一人は、自分たちの生活が世界を揺るがすような変化を経験していると感じているようです。コンピ...

greenvaluehost-5 USD/4 GB RAM/200 GB HDD/300 MB 無制限

Greenvaluehost は、月額料金がわずか 5 ドルの特別版スーパー VPS をリリースしま...

2019年モバイルゲーム市場開発状況調査レポート

コア要約: 2018年、中国のモバイルゲーム市場は上昇傾向を維持し、市場規模は1,646.1億元で前...

ハイブリッドクラウドアプリケーション統合を成功させる方法

ハイブリッド クラウド環境では、すべてのアプリケーションが適切に連携して動作することを保証することが...

レッドハット、2019年度第1四半期決算を発表、前年比20%増

オープンソース ソリューションの世界的な大手プロバイダーである Red Hat は、2018 年 5...

略奪されたTaobaoアフィリエイトサイトはどのようにして栄光を取り戻すことができるのでしょうか?

今年の6月は多くのウェブマスター、特にTaobaoアフィリエイトサイトにとって不運な月でした。その多...

基礎知識はSEOの魂

SEO 担当者は、毎日「SEO」という 3 つの単語を見ると、少し美的疲労を感じるかもしれません。実...

テンセントは「WeChatの盗作に対する無策」に反応:オリジナル保護メカニズムを開始

2月1日夜、新華社通信は3本連続で記事を掲載し、一般アカウントのコンテンツの「盗用」がますます横行し...