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-qpsclient-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 配置控制器的第二个调试信息级别,请将值为 2log-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 :标签值为 rootpropagated
  • 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. 其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.