ラベル、アノテーション、セレクターを使用したKubernetesリソースのフィルタリング

最終更新日: 19 年 2022 月 XNUMX 日

ラベル、アノテーション、セレクターを使用して、Kubernetesオブジェクトにアタッチされたメタデータを管理できます。 ラベルと注釈はデータを定義し、セレクターはデータのフィルター処理と動的グループの作成に使用されます。

ラベル

ラベルは、ポッドやサービスなどのKubernetesオブジェクトにキーと値のペアの形式で添付できるメタデータの一種です。 ラベルは、意味があり、ユーザーに関連するオブジェクトの識別属性を指定するために使用することを目的としていますが、コアシステムにセマンティクスを直接暗示するものではありません。 ラベルを使用して、オブジェクトのサブセットを整理および選択できます。 ラベルは、作成時にオブジェクトに添付し、その後いつでも追加および変更できます。 各オブジェクトには、キー/値ラベルのセットを定義できます。 各キーは、特定のオブジェクトに対して一意である必要があります。 詳細については、Kubernetesの公式ドキュメントをご覧ください。  ラベルとセレクター.

以下は、Kubernetesリソースにラベルを追加するためのサンプルです。
サンプル:

Labels:
app=argus
pod-template-hash=b7c9bdf5

LogicMonitorでは、ラベルは次の形式でリソースプロパティとして表示されます。
kubernetes.label.<key>:<value>

注釈 

注釈は、オブジェクトに関する任意の非識別情報を格納するために使用されます。 アノテーションを使用して、サービスを開発したチームの名前など、調査しているオブジェクトに関する追加のコンテキストを収集できます。 ラベルとは異なり、セレクターでアノテーションを使用してリソースのサブセットを識別することはできません。

詳細については、Kubernetesの公式ドキュメントをご覧ください。 注釈.  

以下は、Kubernetesリソースにアノテーションを追加するための例です。

サンプル:

Annotations:
testAnnotation: annotationValue

LogicMonitorでは、注釈は次の形式でリソースプロパティとして表示されます。

kubernetes.annotation.<key>:<value>

セレクター

セレクターは、Kubernetesで特定のラベルでタグ付けされたオブジェクトを識別するために使用されます。 セレクターを使用して、関連するリソースをグループ化できます。 たとえば、セレクターを使用して、サービスの同じラベルを共有するポッドをマップできます。 詳細については、Kubernetesの公式ドキュメントをご覧ください。 ラベルとセレクター

さまざまなリソースに設定されているセレクターのタイプは次のとおりです。

  • ノードセレクター:指定したnodeSelectorラベルとラベルが一致するノードにポッドをスケジュールできます。 詳細については、を参照してください。 nodeSelectorのKubernetesドキュメント.
  • ポッドセレクター:ポリシーが適用されるポッドのグループを選択します。 サンプルポリシーは、ラベル「role=db」のポッドを選択します。 空のpodSelectorは、名前空間内のすべてのポッドを選択します。 詳細については、を参照してください。 podSelectorのKubernetesドキュメント.
  • ラベルセレクター:フィルターリソースにラベルを追加します。 詳細については、を参照してください。 ラベルセレクター のセクションから無料でダウンロードできます。


ラベルセレクター


LabelSelectorsを使用すると、特定のラベルでタグ付けしたオブジェクトを識別できます。 LabelSelectorには次のXNUMXつのタイプがあります。

マッチラベル

matchLabelsは、キーと値のペアで構成され、ラベルのキーと値によるフィルタリングを可能にする等式ベースの要件を使用して値が一致します。

マッチ式

matchExpressionsは、キー、演算子、および値で構成されます セットベース ラベル要件により、一連の値に従ってキーをフィルタリングできます。

MatchExpressionsには、次の演算子が含まれています

  • IN
  • ありませんで
  • 存在する
  • 存在しない

セレクターのプロパティ

XNUMXつのセレクター形式があります。

  • kubernetes.spec.selector (CSV形式):コンマ区切り形式でリソースをフィルタリングするため、およびkubectlを使用するため。
    例えば: kubectl get pods -l 'abc=xyz, mno=prq'
  • kubernetes.spec.selector.appliesto (表現形式):動的グループのカスタムクエリを作成します。

次の例は、ラベル、注釈、およびセレクターの使用法を示しています。

Kubernetesリソースのラベルとセレクターの表示

LogicMonitorポータルでプロパティ情報を表示するには、次の場所に移動します。 リソース>デバイス>必要なデバイスを選択>情報タブ.

Kubernetesリソースのフィルタリング

次のプロパティを使用して、LogicMonitorポータルで利用可能なKubernetesリソースをフィルタリングできます。

  • kubernetes.spec.selector:kubectlコマンドを使用してリソースをフィルタリングできます。

Selectorを使用した動的グループの作成

を使用して動的グループを作成できます kubernetes.spec.selector.appliesto プロパティで、次の手順を実行します。 動的グループの詳細については、を参照してください。 デバイスの自動割り当て.

  1. MFAデバイスに移動する リソース>追加>グループ>デバイスグループの追加.
  2. デバイスグループの名前と説明を入力します。
  3. 有効にします デバイスの自動割り当て チェックボックスをオンにします。
  4. 選択 カスタムクエリ 次のように入力します。

kubernetes.label.app ==  “argus”

式の更新または追加の詳細については、を参照してください。 AppliesToスクリプト構文.

適用されたセレクターは、「argus」リソースをフィルタリングします。 このセレクターを使用して、Kubernetesリソースをフィルタリングすることもできます。 

ラベルを使用した動的グループの作成

ラベルを使用して、Kubernetesリソースの動的グループを作成できます。 動的グループの詳細については、を参照してください。 デバイスの自動割り当て.

  1. MFAデバイスに移動する リソース>追加>グループ>デバイスグループの追加.
  2. デバイスグループの名前と説明を入力します。
  3. 有効にします デバイスの自動割り当て チェックボックスをオンにします。
  4. 選択 カスタムクエリ 次のように入力します。

    Kubernetes.labels.component == etcd

注釈を使用した動的グループの作成

アノテーションを使用して、Kubernetesリソースの動的グループを作成できます。 動的グループの詳細については、を参照してください。 デバイスの自動割り当て.

  1. MFAデバイスに移動する リソース>追加>グループ>デバイスグループの追加.
  2. デバイスグループの名前と説明を入力します。
  3. 有効にします デバイスの自動割り当て チェックボックスをオンにします。
  4. 選択 カスタムクエリ 次のように入力します。

    kubernetes.annotation.agentVersion” and a value of “azure-mdsd-1.17.0

Note:フィルターを変更または作成する場合は、を参照してください。 Kubernetesリソースの監視中にフィルタを適用する。

記事上で