検索
Red Hat Advanced Cluster Management Search サービスが、すべてのクラスターにわたる Kubernetes リソースの可視性をどのように提供するかを説明します。
概要
第1章 検索 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management Search サービスを学習します。検索を使用して、クラスターからリソースデータをクエリーします。以下のドキュメントを参照してください。
1.1. 検索サービス リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management for Kubernetes では、検索機能でクラスター全体の Kubernetes リソースを視認できるようにします。検索では、Kubernetes リソースや他のリソースとの関係もインデックス化されます。
1.1.1. 検索コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
検索アーキテクチャーは、以下のコンポーネントで構成されています。
| コンポーネント名 | メトリクス | メトリックのタイプ | 説明 |
|---|---|---|---|
|
|
Kubernetes リソースを監視し、リソースメタデータを収集し、すべてのマネージドクラスターにわたるリソースの関係を計算し、収集したデータを | ||
|
コレクターからリソースのメタデータを受信し、PostgreSQL データベースに書き込みます。 |
| ヒストグラム | 検索インデクサーが (マネージドクラスターからの) 要求を処理するのにかかる時間 (秒)。 |
|
| ヒストグラム | (マネージドクラスターからの) 検索インデクサー要求における変更の合計 (追加、更新、削除)。 | |
|
| カウンター | 検索インデクサーが (マネージドクラスターから) 受信したリクエストの合計。 | |
|
| ゲージ | 検索インデクサーが指定された時間で処理する要求の合計数。 | |
|
GraphQL を介して |
| ヒストグラム | HTTP 要求の継続時間のヒストグラム (秒単位)。 |
|
| ヒストグラム | データベース要求のレイテンシー (秒単位)。 | |
|
| カウンター | 失敗したデータベース接続試行の合計数。 | |
|
| すべてのマネージドクラスターから収集されたデータを PostgreSQL データベースのインスタンスに保存します。 |
デフォルトでは、検索はハブクラスターで設定されます。マネージドクラスターをプロビジョニングするか、手動でインポートすると、klusterlet-addon-search が有効になります。マネージドクラスターの検索を無効にする場合は、クラスターの klusterlet アドオン設定の変更 を参照してください。
1.1.2. 検索のカスタマイズと設定 リンクのコピーリンクがクリップボードにコピーされました!
search-v2-operator カスタムリソースのデフォルト値を変更できます。カスタムリソースの詳細を表示するには、次のコマンドを実行します。
oc get search search-v2-operator -o yaml
検索オペレーターは、search-v2-operator カスタムリソースを監視し、変更を調整して、アクティブな Pod を更新します。次の設定の説明を参照してください。
PostgreSQL データベースストレージ:
Red Hat Advanced Cluster Management をインストールすると、PostgreSQL データベースは、PostgreSQL データを空のディレクトリー (
emptyDir) ボリュームに保存するように設定されます。空のディレクトリーサイズが制限されている場合は、PostgreSQL データを永続ボリューム要求 (PVC) に保存して、検索パフォーマンスを向上させることができます。Red Hat Advanced Cluster Management ハブクラスターからストレージクラスを選択して、検索データをバックアップできます。たとえば、gp2ストレージクラスを選択した場合、設定は次の例のようになります。apiVersion: search.open-cluster-management.io/v1alpha1 kind: Search metadata: name: search-v2-operator namespace: open-cluster-management labels: cluster.open-cluster-management.io/backup: "" spec: dbStorage: size: 10Gi storageClassName: gp2この設定により、
gp2-searchという名前の PVC が作成され、search-postgresPod にマウントされます。デフォルトでは、ストレージサイズは10Giです。ストレージサイズを変更できます。たとえば、約 200 のマネージドクラスターには20Giで十分な場合があります。4 つの検索 Pod (
indexer、database、queryapi、collector) の Pod メモリーまたは CPU 要件、レプリカ数、更新ログレベルを調整することでコストを最適化します。search-v2-operatorカスタムリソースのdeploymentセクションを更新します。search-v2-operatorによって管理される 4 つのデプロイメントがあり、個別に更新できます。search-v2-operatorカスタムリソースは、次のファイルのようになる場合があります。apiVersion: search.open-cluster-management.io/v1alpha1 kind: Search metadata: name: search-v2-operator namespace: open-cluster-management spec: deployments: collector: resources:1 limits: cpu: 500m memory: 128Mi requests: cpu: 250m memory: 64Mi indexer: replicaCount: 3 database:2 envVar: - name: POSTGRESQL_EFFECTIVE_CACHE_SIZE value: 1024MB - name: POSTGRESQL_SHARED_BUFFERS value: 512MB - name: WORK_MEM value: 128MB queryapi: arguments:3 - -v=3以下は、メモリーリソースがインデクサー Pod に適用される例です。
indexer: resources: limits: memory: 5Gi requests: memory: 1Gi検索 Pod のノード配置を定義できます。
nodeSelectorパラメーターまたはtolerationsパラメーターを使用して、検索 Pod のPlacementリソースを更新できます。次の設定例を表示します。spec: dbStorage: size: 10Gi deployments: collector: {} database: {} indexer: {} queryapi: {} nodeSelector: node-role.kubernetes.io/infra: "" tolerations: - effect: NoSchedule key: node-role.kubernetes.io/infra operator: Exists- Advanced search ドロップダウンボタンを選択して検索クエリーを指定し、Column、Operator、Value オプションをフィルタリングするか、検索制約を追加します。
1.1.3. 検索操作とデータ型 リンクのコピーリンクがクリップボードにコピーされました!
検索操作を条件として使用して検索クエリーを指定します。>, >=, <, <=, != などの文字がサポートされます。以下の検索操作の表を参照してください。
| デフォルトの動作 | データのタイプ | 説明 |
|---|---|---|
|
| string, number | これがデフォルトの動作です。 |
|
| string, number | これは、NOT 操作を表します。これは、検索結果から除外することを意味します。 |
|
| number | |
|
| date | 過去時間、日、週、月、および年に一致する日付。 |
|
| string | 部分文字列の一致。 |
1.1.4. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- Red Hat Advanced Cluster Management for Kubernetes コンソールに関するその他のトピックは、Web コンソール を参照してください。
1.2. 検索設定可能コレクションの作成 リンクのコピーリンクがクリップボードにコピーされました!
検索が収集するリソースをカスタマイズする各マネージドクラスターに対して search-collector-config config map を作成し、クラスターから収集される Kubernetes リソースを定義します。
必要なアクセス権: クラスター管理者
検索アドオンがデプロイされているのと同じ namespace に config map を配置します。デフォルトの namespace は open-cluster-management-agent-addon です。
以下の手順を実行します。
次のコマンドを実行して、
search-collector-configconfig map を作成します。oc apply -f <your-search-collector-config>.yamlconfig map 内の許可 (
data.AllowedResources) セクションと拒否リスト (data.DeniedResources) セクションにリソースをリストします。config map は、次の YAML ファイルのようになります。apiVersion: v1 kind: ConfigMap metadata: name: search-collector-config namespace: <namespace where search-collector add-on is deployed> data: AllowedResources: |-1 - apiGroups: - "*" resources: - services - pods - apiGroups: - admission.k8s.io - authentication.k8s.io resources: - "*" DeniedResources: |-2 - apiGroups: - "*" resources: - secrets - apiGroups: - admission.k8s.io resources: - policies - iampolicies - certificatepolicies注記: config map を指定しない場合、デフォルトですべてのリソースが収集されます。
AllowedResourcesのみを指定した場合、AllowedResourcesにリストされていないすべてのリソースは自動的に除外されます。AllowedResourcesとDeniedResourcesに同時にリストされているリソースも除外されます。
1.2.1. サーチコンソールのカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
検索結果と制限をカスタマイズします。カスタマイズを実行するには、次のタスクを完了します。
OpenShift Container Platform コンソールから検索結果の制限をカスタマイズします。
multicluster-enginenamespace のconsole-mce-configを更新します。これらの設定はすべてのユーザーに適用され、パフォーマンスに影響を与える可能性があります。次のパフォーマンスパラメーターの説明を表示します。-
SAVED_SEARCH_LIMIT- 各ユーザーの保存済み検索の最大数。デフォルトでは、ユーザーごとに 10 個の保存済み検索の制限があります。デフォルト値は10です。制限を更新するには、console-configconfig map にキー値SAVED_SEARCH_LIMIT: xを追加します。 -
SEARCH_RESULT_LIMIT: コンソールに表示される検索結果の最大量。デフォルト値は1000です。この制限を削除するには、-1に設定します。 -
SEARCH_AUTOCOMPLETE_LIMIT: 検索バーの先行入力に対して取得される候補の最大数。デフォルト値は10,000です。この制限を削除するには、-1に設定します。
-
-
OpenShift Container Platform コンソールから次の
patchコマンドを実行して、検索結果を 100 項目に変更します。
oc patch configmap console-mce-config -n multicluster-engine --type merge -p '{"data":{"SEARCH_RESULT_LIMIT":"100"}}'提案された検索を追加、編集、または削除するには、
console-search-configという名前の config map を作成し、suggestedSearchesセクションを設定します。リストされている検索候補もコンソールから表示されます。各検索オブジェクトには、id, name, and searchTextが必要です。次の config map の例を確認してください。kind: ConfigMap apiVersion: v1 metadata: name: console-search-config namespace: <acm-namespace>1 data: suggestedSearches: |- [ { "id": "search.suggested.workloads.name", "name": "Workloads", "description": "Show workloads running on your fleet", "searchText": "kind:DaemonSet,Deployment,Job,StatefulSet,ReplicaSet" }, { "id": "search.suggested.unhealthy.name", "name": "Unhealthy pods", "description": "Show pods with unhealthy status", "searchText": "kind:Pod status:Pending,Error,Failed,Terminating,ImagePullBackOff,CrashLoopBackOff,RunContainerError,ContainerCreating" }, { "id": "search.suggested.createdLastHour.name", "name": "Created last hour", "description": "Show resources created within the last hour", "searchText": "created:hour" }, { "id": "search.suggested.virtualmachines.name", "name": "Virtual Machines", "description": "Show virtual machine resources", "searchText": "kind:VirtualMachine" } ]- 1
- 検索が有効になっている namespace を追加します。
1.2.2. コンソールでのクエリー リンクのコピーリンクがクリップボードにコピーされました!
検索ボックス にテキスト値を入力すると、名前や namespace などのプロパティーからのその値が含まれる結果が表示されます。空白を含むクエリーはサポートされていません。
必要なアクセス権: クラスター管理者
検索結果をさらに絞り込むには、検索にプロパティーセレクターを追加します。プロパティーに関連する値を組み合わせて、検索範囲をより正確に指定できます。たとえば、cluster:dev red と検索すると、dev クラスター内で "red" の文字列と一致する結果が返されます。
検索でクエリーを作成するには、次の手順を実行します。
- ナビゲーションメニューの 検索 をクリックします。
Search box に単語を入力すると、検索機能で、対象の値が含まれたリソースを見つけ出します。
- リソースを検索すると、元の検索結果に関連する他のリソースが表示されるので、リソースがシステム内にある他のリソースとどのように対話するのかを視覚的に確認できます。
- 検索すると、各クラスターと、検索したリソースが返され、リスト表示されます。ハブ クラスターのリソースの場合には、クラスター名は local-cluster として表示されます。
-
検索結果は、
kindでグループ化され、リソースのkindごとに表でグループ化されます。 - 検索オプションはクラスターオブジェクトにより異なります。
-
特定のラベルで結果を絞り込むことができます。ラベルのクエリー時の検索は、大文字と小文字が区別されます。フィルタリング用に選択できる例
name、namespace、status、およびその他のリソースフィールドを参照してください。自動補完では、補完候補を表示して検索を絞り込むことができます。以下の例を参照してください。 -
kind:podなど、フィールド 1 つを検索すると、すべての Pod リソースが返されます。 kind:pod namespace:defaultなど、複数のフィールドを検索すると、デフォルトの namespace にある Pod が返されます。注記:
- 複数の値を含む複数のプロパティーセレクターを検索すると、クエリーされた値のいずれかを返します。以下の例を参照してください。
-
kind:Pod name:aと検索すると、aという名前の Pod が返されます。 -
kind:Pod name:a,bと検索すると、aまたはbという名前の Pod が返されます。 -
kind:pod status:!Runningを検索すると、ステータスがRunningではないすべての Pod リソースが返されます。 -
kind:pod restarts:>1を検索すると、最低でも 2 回再起動した全 Pod が返されます。
- 検索を保存する場合は、Save search アイコンをクリックします。
- 検索結果をダウンロードするには、Export as CSV ボタンを選択します。
1.3. klusterlet-addon-search デプロイメントの更新 リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターから Kubernetes オブジェクトを収集するために、検索が有効になっているすべてのマネージドクラスターで klusterlet-addon-search Pod が実行されます。このデプロイメントは、open-cluster-management-agent-addon namespace で実行されます。多数のリソースを持つマネージドクラスターでは、klusterlet-addon-search デプロイメントが機能するために、より多くのメモリーが必要になる場合があります。
必要なアクセス権: クラスター管理者
マネージドクラスター内の klusterlet-addon-search Pod のリソース要件は、Red Hat Advanced Cluster Management ハブクラスター内の ManagedClusterAddon カスタムリソースで指定できます。マネージドクラスターごとに、マネージドクラスター名を持つ namespace があります。以下の手順を実行します。
マネージドクラスター名と一致する namespace から
ManagedClusterAddonカスタムリソースを編集します。次のコマンドを実行して、xyzマネージドクラスターのリソース要件を更新します。oc edit managedclusteraddon search-collector -n xyzリソース要件をアノテーションとして追加します。以下の例を参照してください。
apiVersion: addon.open-cluster-management.io/v1alpha1 kind: ManagedClusterAddOn metadata: annotations: addon.open-cluster-management.io/search_memory_limit: 2048Mi addon.open-cluster-management.io/search_memory_request: 512Mi
アノテーションはマネージドクラスターのリソース要件をオーバーライドし、新しいリソース要件で Pod を自動的に再起動します。
注記: コンソールで API Explorer を使用して、マネージドクラスターに定義されているすべてのリソースを検出できます。oc api-resources コマンドを実行しても、すべてのリソースを検出できます。