1.2. 推荐的基础架构实践
本主题为 OpenShift Container Platform 中的基础架构提供推荐的性能和可扩展性实践。
1.2.1. 基础架构节点大小
基础架构节点是标记为运行 OpenShift Container Platform 环境组成部分的节点。基础架构节点的资源要求取决于集群中的集群年龄、节点和对象,因为这些因素可能会导致 Prometheus 的指标或时间序列增加。以下基础架构节点大小是基于在 Control plane 节点大小 部分中详述的集群密度测试中观察到的结果,其中监控堆栈和默认 ingress-controller 被移到这些节点。
worker 节点数量 | 集群密度或命名空间数量 | CPU 内核 | 内存 (GB) |
---|---|---|---|
27 | 500 | 4 | 24 |
120 | 1000 | 8 | 48 |
252 | 4000 | 16 | 128 |
501 | 4000 | 32 | 128 |
通常,建议每个集群有三个基础架构节点。
这些大小建议应用作指导行。Prometheus 是一个高内存密集型应用程序,资源使用量取决于各种因素,包括节点、对象、Prometheus 指标提取间隔、指标或时间序列以及集群的年龄。此外,路由器资源使用量也可以受到路由数量和入站请求的数量/类型的影响。
这些建议只适用于在集群创建过程中安装监控、Ingress 和 Registry 基础架构组件的基础架构节点。
在 OpenShift Container Platform 4.12 中,与 OpenShift Container Platform 3.11 及之前的版本相比,系统现在默认保留半个 CPU 内核(500 millicore)。这会影响缩放建议。
1.2.2. 扩展 Cluster Monitoring Operator
OpenShift Container Platform 会提供 Cluster Monitoring Operator 在基于 Prometheus 的监控堆栈中收集并存储的数据。作为管理员,您可以通过进入 Observe → Dashboards 来查看 OpenShift Container Platform Web 控制台中的系统资源、容器和组件指标的仪表板。
1.2.3. Prometheus 数据库存储要求
红帽对不同的扩展大小进行了各种测试。
- 以下 Prometheus 存储要求并不具有规定性,应该将它们视为参考信息。取决于具体的工作负载和资源的使用,集群中可能会出现高的资源消耗,包括 Prometheus 收集的指标,如 pod 、容器、路由或其他资源的数量。
- 您可以配置基于大小的数据保留策略,以满足您的存储要求。
表 1.1. Prometheus 数据库的存储要求取决于集群中的节点/pod 数量
节点数 | pod 数量(每个 pod 2 个容器) | 每天增加的 Prometheus 存储 | 每 15 天增加的 Prometheus 存储 | 网络(每个 tsdb 块) |
---|---|---|---|---|
50 | 1800 | 6.3 GB | 94 GB | 16 MB |
100 | 3600 | 13 GB | 195 GB | 26 MB |
150 | 5400 | 19 GB | 283 GB | 36 MB |
200 | 7200 | 25 GB | 375 GB | 46 MB |
大约 20%的预期大小被添加为开销,以保证存储要求不会超过计算的值。
上面的计算用于默认的 OpenShift Container Platform Cluster Monitoring Operator。
CPU 利用率会有轻微影响。这个比例为在每 50 个节点和 1800 个 pod 的 40 个内核中大约有 1 个。
针对 OpenShift Container Platform 的建议
- 至少使用两个基础架构 (infra) 节点。
- 至少使用三个带有非易失性存储器 (SSD 或 NVMe) 驱动器的 openshift-container-storage 节点。
1.2.4. 配置集群监控
您可以为集群监控堆栈中的 Prometheus 组件增加存储容量。
流程
为 Prometheus 增加存储容量:
创建 YAML 配置文件
cluster-monitoring-config.yaml
。例如:apiVersion: v1 kind: ConfigMap data: config.yaml: | prometheusK8s: retention: {{PROMETHEUS_RETENTION_PERIOD}} 1 nodeSelector: node-role.kubernetes.io/infra: "" volumeClaimTemplate: spec: storageClassName: {{STORAGE_CLASS}} 2 resources: requests: storage: {{PROMETHEUS_STORAGE_SIZE}} 3 alertmanagerMain: nodeSelector: node-role.kubernetes.io/infra: "" volumeClaimTemplate: spec: storageClassName: {{STORAGE_CLASS}} 4 resources: requests: storage: {{ALERTMANAGER_STORAGE_SIZE}} 5 metadata: name: cluster-monitoring-config namespace: openshift-monitoring
- 1
- Prometheus 保留的默认值为
PROMETHEUS_RETENTION_PERIOD=15d
。时间单位使用以下后缀之一 : s 、m 、h 、d。 - 2 4
- 集群的存储类。
- 3
- 一个典型的值是
PROMETHEUS_STORAGE_SIZE=2000Gi
。存储值可以是一个纯整数,也可以是带有以下后缀之一的整数: E 、P 、T 、G 、M 、K。您也可以使用以下效果相同的后缀:Ei 、Pi 、Ti 、Gi 、Mi 、Ki。 - 5
- 一个典型的值
是 alertmanager_STORAGE_SIZE=20Gi
。存储值可以是一个纯整数,也可以是带有以下后缀之一的整数: E 、P 、T 、G 、M 、K。您也可以使用以下效果相同的后缀:Ei 、Pi 、Ti 、Gi 、Mi 、Ki。
- 为保留周期、存储类和存储大小添加值。
- 保存该文件。
运行以下命令应用这些更改:
$ oc create -f cluster-monitoring-config.yaml