序文上記に引き続き、 Ubuntu 2204をベースにkubeadmを使用してk8sクラスターをデプロイし、 helmをベースにmetrics-serverをデプロイしました。 次に、 kubectl topコマンドを使用して、CPU やメモリなどのノードとポッドのリソース使用状況をリアルタイムで表示できます。 この記事では、そのデータリンクと実装原理を紹介し、k8s における監視システムについても説明します。 kubectlトップkubectl top はよく使用する基本コマンドですが、監視値を取得するにはmetrics-serverコンポーネントをデプロイする必要があります。
使用しているバージョンは最新バージョン 1.24.3 なので、必ずmetrics-server をデプロイしてください。 ノードのリソース使用状況を確認します。 $ kubectl トップノード ポッドのリソース使用量を確認します。 --containers はポッド内のすべてのコンテナを表示できます。 $ kubectl top ポッド- n メトリック- サーバー 指標の具体的な意味:
kubectl top ポッドのメモリ計算ポッドが起動されるたびに、一時停止コンテナが作成されます。コンテナなので、リソース(通常 2 ~ 3 MB のメモリ)を消費する必要があります。 cgroup ファイルでは、ビジネス コンテナーと一時停止コンテナーは同じ pod フォルダー内にあります。 ただし、cadvisor がポッドのメモリ使用量を照会する場合、まずポッドの下のコンテナ リストを取得し、次に各コンテナのメモリ使用量を 1 つずつ取得します。ただし、ここでのコンテナ リストには一時停止が含まれていないため、最終的なトップ ポッドの結果には一時停止コンテナは含まれません。 ポッドメモリ使用量の計算kubectl top pod によって取得されるメモリ使用量は、cadvisor のcontainer_memory_usage_bytesではなく、次のように計算されるcontainer_memory_working_set_bytesです。
container_memory_working_set_bytes は、コンテナによって使用される実際のメモリ量であり、制限が設定されている場合に OOM を決定する基準にもなります。 kubectl top コマンドと top の違いは上記と同じであり、直接比較することはできません。同時に、ポッドに制限を設定した場合でも、ポッド内の top に表示されるメモリと CPU の合計量は、ポッドの割り当て可能な量ではなく、マシンの合計量のままです。
実施原則データリンクk8s ダッシュボード、kubectl top などはすべて、apiserver を通じて監視データを取得します。データリンクは次のとおりです。
監視システムメトリック API の概念が提案されたとき、公式ページでは新しい監視システムが提案され、監視リソースは次の 2 つのタイプに分けられました。
クベレット廃止された heapster と metric-server はどちらも単なるデータ転送と集約です。どちらも kubelet API インターフェースを呼び出してデータを取得します。インジケーターを収集するための cAdvisor モジュールは実際には kubelet コードに統合されており、監視データは kubelet によって公開されるポート 10250 を通じて取得できます。
kubelet はメトリック インターフェースを提供しますが、実際の監視ロジックは組み込みの cAdvisor モジュールによって処理されます。 cアドバイザーcAdvisor は Google によってオープンソース化されており、Go 言語で開発されています。プロジェクトアドレス: https://github.com/google/cadvisor。 cadvisor は、CPU 使用率、メモリ使用率、ネットワーク スループット、ファイル システム使用率など、マシン上で実行されているすべてのコンテナーに関する情報を収集できるだけでなく、他のコンポーネントによるデータ キャプチャを容易にするための基本的なクエリ インターフェイスと HTTP インターフェイスも提供します。 K8S では、デフォルトの起動項目として Kubelet に統合されており、k8s の公式標準となっています。 cadvisor がインジケーターを取得すると、実際には runc/libcontainer ライブラリが呼び出されます。libcontainer は cgroup ファイルのカプセル化です。つまり、cadvsior は単なるフォワーダーであり、そのデータは cgroup ファイルから取得されます。 cグループcgroup ファイル内の値は、次のような監視データの最終的なソースです。
通常、cgroup フォルダーの内容には、CPU、メモリ、ディスク、ネットワークなどの情報が含まれます。 デバイス: デバイス制御権限 メモリ内でよく使用されるいくつかのインジケーターの意味: memory.usage_in_bytes : 使用されているメモリの量(キャッシュとバッファを含む)(バイト単位)。Linux の userd_mem に相当します。 |
<<: Kubernetes1.24.3はHelm経由でMetrics-Serverをインストールします
>>: Kubernetes アプリケーション アクセス管理の理解
1. チーム機能の分担についてこれら 2 つの問題を理解した後、チーム機能の分割はより科学的かつ合理...
多くの企業にとって、改訂は必須です。なぜ私がこう言うのか?それは、ほとんどの企業が自社の企業ウェブサ...
私の故郷は湖北省の小さな郡都です。人口:60万人。過去2年間に多くの不動産開発業者が参入してきた。こ...
VPS を購入してマシンのパフォーマンスをテストしたい場合、非常に重要なパラメータ DD に加えて、...
今日、多くのWeiboユーザーは、自分のWeibo投稿の下に、従来の「リツイート」「お気に入り」「コ...
2019年のハノーバー産業見本市で、SAPはBeckhoff、Endress+Hauser、Hils...
XiNiX は、実に長い歴史を持つ企業です。少なくとも、私がまだ仮想ホストで遊んでいたころから、この...
先週の朝、あるネットユーザーからメールを受け取りました。彼のウェブサイトは数か月前からダウンしており...
多くのウェブマスターは、日々の業務を外部リンクに集中させ、ウェブサイトのコンテンツ更新戦略を無視して...
長い間、このような記事を書いていませんでした。最近は忙しかったんです。まず第一に、SEO トラフィッ...
クラウド コンピューティングは企業のビジネスを新たなレベルに引き上げましたが、近年、クラウド コンピ...
ポストトラフィック時代では、モバイルインターネットと消費者インターネットの配当は消え、コンテンツ電子...
私は働き始めてちょうど1年半になります。最初の仕事は、主に英語を中心に、Googleで対外貿易SEO...
クラウドコンピューティングのビジネスモデルは、IT をサービスとして実現することです。外部であれ内部...
実際のリソース需要がそれほど高くなく、トラブルを避けたいだけなので、より良いサービスを受けるために販...