搜索
了解 Red Hat Advanced Cluster Management Search 服务如何让您了解所有集群中的 Kubernetes 资源。
摘要
第 1 章 搜索
了解 Red Hat Advanced Cluster Management Search 服务。使用 Search 来查询集群中的资源数据。请参阅以下文档:
1.1. 搜索服务
对于 Red Hat Advanced Cluster Management for Kubernetes,搜索功能可让您了解所有集群中的 Kubernetes 资源。搜索也对 Kubernetes 资源以及与其他资源的关系进行索引。
1.1.1. 搜索组件
搜索构架由以下组件组成:
组件名称 | 指标 | 指标类型 | 描述 |
---|---|---|---|
|
查看 Kubernetes 资源,收集所有受管集群中资源元数据、计算资源关系,并将收集的数据发送到 | ||
从收集器接收资源元数据并写入 PostgreSQL 数据库。 |
| Histogram | 搜索索引器处理请求(来自受管集群)所需的时间(秒)。 |
| Histogram | 搜索索引器请求(从受管集群)中的总更改 (add、update、delete)。 | |
| 计数 | 搜索索引器(来自受管集群)收到的总请求。 | |
| 量表 | 搜索索引器在给定时间处理的总请求。 | |
通过 GraphQL 提供 |
| Histogram | HTTP 请求持续时间的直方图(以秒为单位)。 |
| Histogram | 数据库请求的延迟(以秒为单位)。 | |
| 计数 | 失败的数据库连接尝试总数。 | |
| 将从所有受管集群收集的数据存储在 PostgreSQL 数据库实例中。 |
在 hub 集群中默认配置搜索。当您置备或手动导入受管集群时,klusterlet-addon-search
会被启用。如果要禁用对受管集群的搜索,请参阅修改集群的 klusterlet 附加设置以了解更多信息。
1.1.2. 搜索自定义和配置
您可以修改 search-v2-operator
自定义资源中的默认值。要查看自定义资源的详情,请运行以下命令:
oc get search search-v2-operator -o yaml
Copy to clipboardCopied
搜索 Operator 会监视 search-v2-operator
自定义资源,协调更改并更新活跃的 pod。查看以下配置描述:
PostgreSQL 数据库存储:
安装 Red Hat Advanced Cluster Management 时,PostgreSQL 数据库被配置为将 PostgreSQL 数据保存在一个空目录 (
emptyDir
) 卷中。如果空目录大小有限,您可以在持久性卷声明 (PVC) 中保存 PostgreSQL 数据,以提高搜索性能。您可以从 Red Hat Advanced Cluster Management hub 集群中选择一个存储类来备份搜索数据。例如,如果您选择gp2
存储类,您的配置可能类似以下示例:
Copy to clipboardCopiedapiVersion: 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-postgres
pod。默认情况下,存储大小为10Gi
。您可以修改存储大小。例如,20Gi
可能足以满足大约 200 个受管集群。通过调整 pod 内存或 CPU 要求、副本计数和更新任何四个搜索 Pod (
indexer
,database
,queryapi
, 或collector
pod)来优化成本。更新search-v2-operator
自定义资源的deployment
部分。search-v2-operator
管理四个部署,它们可以单独更新。您的search-v2-operator
自定义资源可能类似以下文件:
Copy to clipboardCopiedapiVersion: 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
请参阅以下示例,其中内存资源应用到 indexer pod:
Copy to clipboardCopiedindexer: resources: limits: memory: 5Gi requests: memory: 1Gi
您可以为搜索 pod 定义节点放置。
您可以使用
nodeSelector
参数或tolerations
参数更新搜索 pod 的Placement
资源。查看以下示例配置:
Copy to clipboardCopiedspec: 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. 搜索操作和数据类型
使用搜索操作作为条件来指定搜索查询。支持 > ;, >=, <, <=, !=
等字符。请参阅以下搜索操作表:
默认操作 | 数据类型 | 描述 |
---|---|---|
| 字符串、数字 | 这是默认操作。 |
| 字符串、数字 | 这代表了 NOT 操作,这意味着要从搜索结果中排除。 |
| number | |
| date | 与最后一个小时、天、星期、月份和年匹配的日期。 |
| string | 部分字符串匹配。 |
1.1.4. 其他资源
- 有关 Red Hat Advanced Cluster Management for Kubernetes 控制台的更多信息,请参阅 Web 控制台。
1.2. 创建搜索可配置的集合
通过为每个要自定义搜索收集的资源的受管集群创建一个 search-collector-config
配置映射来定义从集群中收集哪些 Kubernetes 资源。
需要的访问权限:集群管理员
将配置映射放在部署了搜索附加组件的同一命名空间中。默认命名空间是 open-cluster-management-agent-addon
。
完成以下步骤:
运行以下命令来创建
search-collector-config
配置映射:
Copy to clipboardCopiedoc apply -f <your-search-collector-config>.yaml
列出配置映射中 allow (
data.AllowedResources
)和 deny list (data.DeniedResources
)部分中的资源。您的配置映射可能类似以下 YAML 文件:
Copy to clipboardCopiedapiVersion: 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
注: 如果没有提供配置映射,则会默认收集所有资源。如果您只提供
AllowedResources
,则AllowedResources
中未列出的所有资源都会被自动排除。同时AllowedResources
和DeniedResources
中列出的资源也会被排除。
1.2.1. 自定义搜索控制台
自定义搜索结果和限制。完成以下任务来执行自定义:
从 OpenShift Container Platform 控制台自定义搜索结果限制。
更新
multicluster-engine
命名空间中的console-mce-config
。这些设置适用于所有用户,并可能会影响性能。查看以下性能参数描述:-
SAVED_SEARCH_LIMIT
- 为每个用户保存的最大搜索量。默认情况下,每个用户可以保存的搜索数量被限制为 10 个。默认值为10
。要更新限制,请在console-config
配置映射中添加以下键值:SAVED_SEARCH_LIMIT: x
。 -
SEARCH_RESULT_LIMIT
- 控制台中显示的最大搜索结果量。默认值为1000
。要删除此限制,请将设为-1
。 -
SEARCH_AUTOCOMPLETE_LIMIT
- 为搜索栏 typeahead 检索的最大建议数。默认值为10,000
。要删除此限制,请将设为-1
。
-
-
从 OpenShift Container Platform 控制台运行以下
patch
命令,将搜索结果改为 100 个项目:
Copy to clipboardCopiedoc patch configmap console-mce-config -n multicluster-engine --type merge -p '{"data":{"SEARCH_RESULT_LIMIT":"100"}}'
要添加、编辑或删除推荐的搜索,请创建一个名为
console-search-config
的配置映射,并配置suggestedSearches
部分。建议的搜索也会从控制台显示。每个搜索对象都需要有一个id、name 和 searchText
。查看以下配置映射示例:
Copy to clipboardCopiedkind: 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
- 添加启用搜索的命名空间。
1.2.2. 在控制台中查询
您可以在 搜索框中 输入任何文字,结果会包括带有这个值的任何属性(如名称或命名空间)。不支持包含空空间的查询。
需要的访问权限:集群管理员
如需更具体的搜索结果,请在搜索中包含属性。您可以组合属性的相关值以获取更精确的搜索范围。例如,搜索 cluster:dev red
以接收与 dev
集群中字符串"red" 匹配的结果。
完成以下步骤,使用搜索进行查询:
- 在导航菜单中点击 Search。
在搜索框中输入要搜索的内容,搜索功能会查找包含该值的资源。
- 当搜索资源时,会收到与原始搜索结果关联的其他资源。这可帮助您了解这些资源如何与系统中的其他资源进行交互。
- 搜索返回并列出带有搜索资源的集群。对于 hub 集群中的资源,集群名称会显示为 local-cluster。
-
您的搜索结果按
kind
分组,每个资源kind
在一个表格中分组。 - 您的搜索选项依赖于集群对象。
-
您可以使用特定标签重新定义结果。在查询标签时,搜索是区分大小写的。请参见以下示例,您可以选择过滤:
名称
、命名空间
、状态
和其他资源字段。Auto-complete 提供了重新定义搜索的建议。请参见以下示例: -
搜索单个字段,如
kind:pod
以查找所有 pod 资源。 搜索多个字段,如
kind:pod namespace:default
以在默认命名空间中查找 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
以查找重启至少两次的所有 pod。
- 如果要保存搜索,请点击 Save search 图标。
- 要下载您的搜索结果,请选择 Export as CSV 按钮。
1.3. 更新 klusterlet-addon-search 部署
要从受管集群收集 Kubernetes 对象,klusterlet-addon-search
pod 在启用了搜索的所有受管集群中运行。此部署在 open-cluster-management-agent-addon
命名空间中运行。具有大量资源的受管集群可能需要更多内存才能使 klusterlet-addon-search
部署正常工作。
需要的访问权限:集群管理员
受管集群中的 klusterlet-addon-search
pod 的资源要求可在 Red Hat Advanced Cluster Management hub 集群的 ManagedClusterAddon
自定义资源中指定。每个带有受管集群名称的受管集群都有一个命名空间。完成以下步骤:
从与受管集群名称匹配的命名空间中编辑
ManagedClusterAddon
自定义资源。运行以下命令以更新xyz
受管集群中的资源要求:
Copy to clipboardCopiedoc edit managedclusteraddon search-collector -n xyz
将资源要求作为注解附加。查看以下示例:
Copy to clipboardCopiedapiVersion: 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