2.4. 策略控制器高级配置
您可以使用 ManagedClusterAddOn
自定义资源自定义受管集群上的策略控制器配置。以下 ManagedClusterAddOns
配置策略框架 governance-policy-framework
, config-policy-controller
, cert-policy-controller
, 和 iam-policy-controller
。
需要的访问权限:集群管理员
2.4.1. 配置并发
您可以为每个受管集群配置配置策略控制器的并发性,以更改它可以同时评估的配置策略。要更改默认值 2
,请在引号中使用非零整数来设置 policy-evaluation-concurrency
注解。您可以在 hub 集群的受管集群命名空间中将 ManagedClusterAddOn
对象名称上的值设置为 config-policy-controller
。
注:增加并发值会增加 config-policy-controller
pod、Kubernetes API 服务器和 OpenShift API 服务器上的 CPU 和内存使用率。
在以下 YAML 示例中,在名为 cluster1
的受管集群中,并发设置为 5
:
apiVersion: addon.open-cluster-management.io/v1alpha1 kind: ManagedClusterAddOn metadata: name: config-policy-controller namespace: cluster1 annotations: policy-evaluation-concurrency: "5" spec: installNamespace: open-cluster-management-agent-addon
2.4.2. 配置对 API 服务器的请求率
配置配置策略控制器在每个受管集群上进行的 API 服务器的请求率。速率提高了配置策略控制器的响应,这也会增加 Kubernetes API 服务器和 OpenShift API 服务器的 CPU 和内存使用率。默认情况下,请求的速度会根据 policy-evaluation-concurrency
设置进行扩展,并被设置为每秒 30
个查询(QPS),带有 45
burst 值,代表短时间内的请求数。
您可以通过在引号内使用非零整数设置 client-qps
和 client-burst
注解来配置速率和突发。您可以在 hub 集群的受管集群命名空间中将 ManagedClusterAddOn
对象名称上的值设置为 config-policy-controller
。
在以下 YAML 示例中,每秒的查询设置为 20
,在名为 cluster1
的受管集群中,突发设置为 100
:
apiVersion: addon.open-cluster-management.io/v1alpha1 kind: ManagedClusterAddOn metadata: name: config-policy-controller namespace: cluster1 annotations: client-qps: "20" client-burst: "100" spec: installNamespace: open-cluster-management-agent-addon
2.4.3. 配置调试日志
当您为每个策略控制器配置和收集调试日志时,您可以调整日志级别。
注: 缩减调试日志的卷意味着日志中显示较少的信息。
您可以减少策略控制器提供的调试日志,以便在日志中显示仅限错误的错误。要减少 debug 日志,请在注解中将 debug 日志值设置为 -1
。查看每个值代表什么:
-
-1
: error logs only -
0
:信息性日志 -
1:
调试日志 -
2
: 详细调试日志
要接收 Kubernetes 配置控制器的第二个调试信息级别,请将值为 2
的 log-level
注解添加到 ManagedClusterAddOn
自定义资源中。默认情况下,日志级别
被设置为 0
,这意味着您会收到信息性的消息。查看以下示例:
apiVersion: addon.open-cluster-management.io/v1alpha1 kind: ManagedClusterAddOn metadata: name: config-policy-controller namespace: cluster1 annotations: log-level: "2" spec: installNamespace: open-cluster-management-agent-addon
2.4.4. 监管指标
策略框架公开指标来显示策略分布和合规性。在 hub 集群中使用 policy_governance_info
指标来查看趋势并分析任何策略失败。有关指标概述,请参阅以下主题:
2.4.4.1. Metric: policy_governance_info
policy_governance_info
由 OpenShift Container Platform 监控功能收集,如果启用了,Red Hat Advanced Cluster Management observability 会收集一些聚合数据。
注 :如果启用了可观察性,您可以从 Grafana Explore 页面输入对指标的查询。创建策略时,您要创建一个 root 策略。框架监视根策略以及 PlacementRules
(已弃用)或 Placement
(已弃用)和 PlacementBindings
,以确定在哪里创建 传播 策略,以便将策略分发到受管集群。
对于根和传播策略,如果策略合规,则指标会记录 0
,如果策略不合规,则记录 1
。
policy_governance_info
指标使用以下标签:
-
type
:标签值为root
或propagated
。 -
policy
:关联的根策略的名称。 -
policy_namespace
:定义根策略的 hub 集群上命名空间。 -
cluster_namespace
:分发策略的集群的命名空间。
这些标签和值启用查询来显示集群中可能发生的许多事情,这些情况可能很难跟踪。
注 :如果不需要指标数据,且对性能或安全性有任何顾虑,则可以禁用此功能。在传播器部署中,将 DISABLE_REPORT_METRICS
环境变量设置为 true
。您还可以将 policy_governance_info
指标添加到 observability allowlist 作为自定义指标。如需了解更多详细信息,请参阅 添加自定义指标。
2.4.4.2. Metric: config_policies_evaluation_duration_seconds
config_policies_evaluation_duration_seconds
直方图跟踪集群中准备好评估的所有配置策略所需的秒数。使用以下指标查询直方图:
-
config_policies_evaluation_duration_seconds_bucket
:存储桶是累积的,以秒为单位的以下可能的值:1, 3, 9, 10.5, 15, 30, 60, 90, 90, 120, 180, 300, 450, 600 等。 -
config_policies_evaluation_duration_seconds_count
: 所有事件的计数。 -
config_policies_evaluation_duration_seconds_sum
: 所有值的总和。
使用 config_policies_evaluation_duration_seconds
指标来确定 ConfigurationPolicy
evaluationInterval
设置是否需要为不需要频繁评估的资源密集型策略更改。您还可以以 Kubernetes API 服务器的资源使用率更高的成本增加并发性。如需了解更多详细信息,请参阅配置并发 部分。
要接收有关评估配置策略的时间的信息,请执行类似以下表达式的 Prometheus 查询:
rate(config_policies_evaluation_duration_seconds_sum[10m])/rate (config_policies_evaluation_duration_seconds_count[10m]
open-cluster-management-agent-addon
命名空间中的受管集群上运行的 config-policy-controller
pod 会计算指标。config-policy-controller
默认不会将指标发送到可观察性。
2.4.5. 验证配置更改
当控制器应用新配置时,ManifestApplied
参数会在 ManagedClusterAddOn
中更新。该条件时间戳可用于正确验证配置。例如,这个命令可在 local-cluster
中的 cert-policy-controller
已更新时验证:
oc get -n local-cluster managedclusteraddon cert-policy-controller | grep -B4 'type: ManifestApplied'
您可能会收到以下输出:
- lastTransitionTime: "2023-01-26T15:42:22Z" message: manifests of addon are applied successfully reason: AddonManifestApplied status: "True" type: ManifestApplied
2.4.6. 其他资源
- 请参阅 Kubernetes 配置策略控制器
- 返回监管主题以获取更多主题。
- 返回到此主题的开头,策略控制器高级配置。