2.2. 推荐的基础架构实践
本主题为 OpenShift Container Platform 中的基础架构提供推荐的性能和可扩展性实践。
2.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.16 中,与 OpenShift Container Platform 3.11 及之前的版本相比,系统现在默认保留半个 CPU 内核(500 millicore)。这会影响缩放建议。
2.2.2. 扩展 Cluster Monitoring Operator
OpenShift Container Platform 会提供 Cluster Monitoring Operator 在基于 Prometheus 的监控堆栈中收集并存储的数据。作为管理员,您可以通过进入 Observe
2.2.3. Prometheus 数据库存储要求
红帽对不同的扩展大小进行了各种测试。
- 以下 Prometheus 存储要求并不具有规定性,应该将它们视为参考信息。取决于具体的工作负载和资源的使用,集群中可能会出现高的资源消耗,包括 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 节点。
2.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