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 環境を安全かつパフォーマンスの高い状態に保ちます。

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

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

推薦する

あなたは本当にオンサイト最適化を理解していますか?

ウェブサイトの最適化は、主にオンサイトとオフサイトの2つの部分に分かれています。どちらも不可欠ですが...

仮想ホスティングがウェブサイトのSEO最適化に与える影響を分析する

ウェブマスターは、ウェブサイトの SEO 最適化に非常に関心を持っています。ウェブサイトのキーワード...

KubernetesはDockerを廃止する

最近、Kubernetes はバージョン 1.20 以降で Docker のサポートを中止することを...

テンセントクラウドのローコード開発は、帰省者の急増により伝染病の予防と管理が強化される中、健康コードの迅速なアップグレードに役立ちます。

帰国の波が近づいており、各地の防疫対策もそれに応じて強化される。四川省がこのほど、省統一健康コード「...

オフサイト ウェブサイトの構築プロセスに関する簡単な説明 (パート 1)

東莞SEO業界の発展と応用が遅れる中、知識格差の欠点が再び明らかになった。この短い8日間で、適応、認...

「クラウドインテリジェンス」になる - デジタルイノベーションを加速させる道

クラウド イノベーションの最初の波では、単一クラウドの考え方からマルチクラウド モデルへの大きな変化...

XEN および KVM 仮想化 VPS にスワップ パーティションを追加する

2host.com から 512M のメモリを搭載した VPS を購入しましたが、奇妙なことに、10...

VMware が vSphere 6 の標準サポートを終了。何をするか

2020 年 3 月、VMware は vSphere 6.0 の標準サポートを終了しました。多くの...

呉作強: ウェブサイトの SEO をうまく行う方法についての体系的な議論

SEO は Search Engine Optimization の略で、一般的には検索エンジン最適...

高級品はオンライン化に慎重:第三者は認可を得るのに困難に直面

鄭爽インターネットに対する当初の恐怖から徐々に「オンライン化」へと移行し、高級品はこの道をゆっくりと...

最適化と入札の違いを分析する

「百度で検索すればわかる」は、今やインターネット上でよく知られたスローガンとなっている。「何千回もあ...

ネットワーク仮想化とネットワーク機能仮想化の概要

ネットワーク仮想化の概念は長い間提案されてきましたが、その具体的な定義は業界では依然として議論の的と...

K8sオフライン展開の説明と実践的な操作

1. 概要Kubernetes は、コンテナ化されたアプリケーションの展開、管理、および操作の自動化...

スマートなキーワードレイアウトでウェブサイトのランキングを素早く向上

ウェブサイトのランキングは重要ですか? SEO 担当者であれば、その答えはご存知でしょう。それは重要...

SEO アカデミー: Google 補足資料の新しい検索方法

SEO アカデミーが以前公開していた Google 補足資料が消えてしまったのでしょうか? 記事を読...