検索
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
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
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
Copy to Clipboard Copied! この設定により、
gp2-search
という名前の PVC が作成され、search-postgres
Pod にマウントされます。デフォルトでは、ストレージサイズは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: limits: cpu: 500m memory: 128Mi requests: cpu: 250m memory: 64Mi indexer: replicaCount: 3 database: envVar: - name: POSTGRESQL_EFFECTIVE_CACHE_SIZE value: 1024MB - name: POSTGRESQL_SHARED_BUFFERS value: 512MB - name: WORK_MEM value: 128MB queryapi: arguments: - -v=3
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
Copy to Clipboard Copied! 以下は、メモリーリソースがインデクサー Pod に適用される例です。
indexer: resources: limits: memory: 5Gi requests: memory: 1Gi
indexer: resources: limits: memory: 5Gi requests: memory: 1Gi
Copy to Clipboard Copied! 検索 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
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
Copy to Clipboard Copied! - 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-config
config map を作成します。oc apply -f <your-search-collector-config>.yaml
oc apply -f <your-search-collector-config>.yaml
Copy to Clipboard Copied! config 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: |- - apiGroups: - "*" resources: - services - pods - apiGroups: - admission.k8s.io - authentication.k8s.io resources: - "*" DeniedResources: |- - apiGroups: - "*" resources: - secrets - apiGroups: - admission.k8s.io resources: - policies - iampolicies - certificatepolicies
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
Copy to Clipboard Copied! 注記: config map を指定しない場合、デフォルトですべてのリソースが収集されます。
AllowedResources
のみを指定した場合、AllowedResources
にリストされていないすべてのリソースは自動的に除外されます。AllowedResources
とDeniedResources
に同時にリストされているリソースも除外されます。
1.2.1. サーチコンソールのカスタマイズ
検索結果と制限をカスタマイズします。カスタマイズを実行するには、次のタスクを完了します。
OpenShift Container Platform コンソールから検索結果の制限をカスタマイズします。
multicluster-engine
namespace のconsole-mce-config
を更新します。これらの設定はすべてのユーザーに適用され、パフォーマンスに影響を与える可能性があります。次のパフォーマンスパラメーターの説明を表示します。-
SAVED_SEARCH_LIMIT
- 各ユーザーの保存済み検索の最大数。デフォルトでは、ユーザーごとに 10 個の保存済み検索の制限があります。デフォルト値は10
です。制限を更新するには、console-config
config 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"}}'
oc patch configmap console-mce-config -n multicluster-engine --type merge -p '{"data":{"SEARCH_RESULT_LIMIT":"100"}}'
Copy to Clipboard Copied! 提案された検索を追加、編集、または削除するには、
console-search-config
という名前の config map を作成し、suggestedSearches
セクションを設定します。リストされている検索候補もコンソールから表示されます。各検索オブジェクトには、id, name, and searchText
が必要です。次の config map の例を確認してください。kind: ConfigMap apiVersion: v1 metadata: name: console-search-config namespace: <acm-namespace> 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" } ]
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" } ]
Copy to Clipboard Copied! - 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
oc edit managedclusteraddon search-collector -n xyz
Copy to Clipboard Copied! リソース要件をアノテーションとして追加します。以下の例を参照してください。
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
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
Copy to Clipboard Copied!
アノテーションはマネージドクラスターのリソース要件をオーバーライドし、新しいリソース要件で Pod を自動的に再起動します。
注記: コンソールで API Explorer を使用して、マネージドクラスターに定義されているすべてのリソースを検出できます。oc api-resources
コマンドを実行しても、すべてのリソースを検出できます。