2.4. 策略控制器高级配置
您可以使用 ManagedClusterAddOn 自定义资源自定义受管集群上的策略控制器配置。以下 ManagedClusterAddOns 配置策略框架、Kubernetes 配置策略控制器和证书策略控制器。需要的访问权限:集群管理员
2.4.1. 配置监管框架的并发性 复制链接链接已复制到粘贴板!
为每个受管集群配置监管框架的并发性。要更改默认值 2,请在引号内设置 policy-evaluation-concurrency 注解,使用非零整数。然后,在 hub 集群的受管集群命名空间中将 ManagedClusterAddOn 对象名称上的值设置为 governance-policy-framework。
请参阅以下 YAML 示例,其中 concurrency 在名为 cluster1 的受管集群中被设置为 2 :
要设置 client-qps 和 client-burst 注解,请更新 ManagedClusterAddOn 资源并定义参数。
请参阅以下 YAML 示例,其中对每秒的查询设置为 30,并且名为 cluster1 的受管集群中 burst 被设置为 45 :
2.4.2. 配置配置策略控制器的并发 复制链接链接已复制到粘贴板!
您可以为每个受管集群配置配置策略控制器的并发性,以更改它可以同时评估的配置策略。要更改默认值 2,请在引号内设置 policy-evaluation-concurrency 注解,使用非零整数。然后,将 ManagedClusterAddOn 对象名称上的值设置为 hub 集群的受管集群命名空间中的 config-policy-controller。
注:增加并发值会增加 config-policy-controller pod、Kubernetes API 服务器和 OpenShift API 服务器上的 CPU 和内存使用率。
请参阅以下 YAML 示例,其中 concurrency 在名为 cluster1 的受管集群中被设置为 5 :
2.4.3. 配置对 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,并且受管集群上 burst 被设置为 100,名为 cluster1 :
2.4.4. 配置调试日志 复制链接链接已复制到粘贴板!
当您为每个策略控制器配置并收集调试日志时,您可以调整日志级别。
注: 缩减调试日志的卷意味着日志中显示较少的信息。
您可以减少策略控制器发出的调试日志,以便在日志中仅显示错误的错误。要减少调试日志,请在注解中将 debug 日志值设置为 -1。查看每个值代表什么:
-
-1: 仅限错误日志 -
0:信息性日志 -
1: 调试日志 -
2: 详细的调试日志
要接收 Kubernetes 配置控制器的第二个调试信息级别,请将值为 2 的 log-level 注解添加到 ManagedClusterAddOn 自定义资源中。默认情况下,日志级别被设置为 0,这意味着您会收到信息性的消息。查看以下示例:
另外,对于 ConfigurationPolicy 资源中的每个 spec.object-template[],您可以将参数 recordDiff 设置为 Log。objectDefinition 和受管集群上的对象之间的差别记录在受管集群的 config-policy-controller pod 中。查看以下示例:
这个 ConfigurationPolicy 资源带有 recordDiff: Log:
如果集群中的 ConfigMap 资源列出了 fieldToUpdate: "1",则 diff 会出现在 config-policy-controller pod 日志中,并带有以下信息:
重要: 避免记录安全对象的区别。差别以纯文本形式记录。
2.4.5. 监管指标 复制链接链接已复制到粘贴板!
策略框架公开指标来显示策略分布和合规性。在 hub 集群中使用 policy_governance_info 指标来查看趋势并分析任何策略失败。有关指标概述,请参阅以下主题:
2.4.5.1. Metric: policy_governance_info 复制链接链接已复制到粘贴板!
OpenShift Container Platform 监控组件会收集 policy_governance_info 指标。如果启用可观察性,组件会收集一些聚合数据。
注: 如果启用可观察性,请从 Grafana Explore 页面输入对指标的查询。创建策略时,您要创建一个 root 策略。框架监视根策略、放置 资源和 PlacementBindings 资源,以获取有关创建 传播策略的 位置的信息,以将策略分发到受管集群。
对于根和传播策略,如果策略合规,则指标会记录 0,如果策略不合规,则记录 1。
policy_governance_info 指标使用以下标签:
-
type:标签值为root或propagated。 -
policy:关联的根策略的名称。 -
policy_namespace:定义根策略的 hub 集群上的命名空间。 -
cluster_namespace:分发策略的集群的命名空间。
这些标签和值启用查询来显示集群中可能发生的许多事情,这些情况可能很难跟踪。
注: 如果您不需要指标数据,且对性能或安全性有任何顾虑,您可以禁用指标集合。在传播器部署中,将 DISABLE_REPORT_METRICS 环境变量设置为 true。您还可以将 policy_governance_info 指标添加到 observability allowlist 作为自定义指标。如需了解更多详细信息,请参阅 添加自定义指标。
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.6. 验证配置更改 复制链接链接已复制到粘贴板!
当使用控制器应用新配置时,Cluster Applied 参数会在 ManagedClusterAddOn 中更新。该条件时间戳有助于正确验证配置。例如,这个命令可在 local-cluster 中的 cert-policy-controller 已更新时验证:
oc get -n local-cluster managedclusteraddon cert-policy-controller | grep -B4 'type: ManifestApplied'
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
- lastTransitionTime: "2023-01-26T15:42:22Z"
message: manifests of addon are applied successfully
reason: AddonManifestApplied
status: "True"
type: ManifestApplied
2.4.7. 其他资源 复制链接链接已复制到粘贴板!
- 请参阅 Kubernetes 配置策略控制器
- 返回监管主题以获取更多主题。
- 返回到此主题的开头,策略控制器高级配置。