第 3 章 推荐的主机实践
3.1. OpenShift Container Platform Master 主机的推荐做法
除了 pod 流量外,OpenShift Container Platform 基础架构中最常用的数据路径也介于 OpenShift Container Platform master 主机和 etcd 之间。OpenShift Container Platform API 服务器(master 二进制的一部分)在节点状态、网络配置、secret 等方面咨询 etcd。
通过以下方法优化此流量路径:
- 在 master 主机上运行 etcd。默认情况下,etcd 在所有 master 主机上的静态 pod 中运行。
- 确保 master 主机之间有一个不协调、低延迟 LAN 通信链接。
OpenShift Container Platform master 会积极缓存资源的反序列化版本,以简化 CPU 负载。但是,如果较小的 pod 集群小于 1000 个 pod,这个缓存可能会浪费大量内存用于微小的 CPU 负载。默认缓存大小为 50,000 个条目,它根据资源的大小,可以将 cupy 1 增加到 2 GB 内存。使用 /etc/origin/master/master-config.yaml 中的以下设置可以减少这个缓存大小:
kubernetesMasterConfig: apiServerArguments: deserialization-cache-size: - "1000"
发送到 API 服务器的客户端请求或 API 调用数量由每秒的 Queries(QPS)值和 API 服务器处理的并发请求数决定。客户端可能会过量 QPS 速率发出的请求数量取决于突发值,这对具有极限的应用程序来说非常有用,并可执行不监管的请求数量。当 API 服务器处理大量并发请求时,对请求的响应时间,特别是大型和/或高密度的集群。建议您监控 Prometheus 中的 apiserver_request_count
速率指标,并相应地调整 maxRequestsInFlight
和 QPS
。
更改默认值时,需要有一个很好的平衡,因为 API 服务器的 CPU 和内存消耗,etcd IOPS 会在并行处理更多请求时增加。另请注意,大量非watch 请求可能会在固定 60 秒超时后取消 API 服务器过载,客户端开始重试。
API 服务器系统中提供了足够的 CPU 和内存资源,API 服务器请求过载问题可安全地缓解这个问题。通过考虑以上提到的因素并浏览了 maxRequestsInFlight、API qps 和 burst 值 *_/etc/origin/master/master-config.yaml
masterClients: openshiftLoopbackClientConnectionOverrides: burst: 600 qps: 300 servingInfo: maxRequestsInFlight: 500
以上 maxRequestsInFlight、qps 和 burst 值是 OpenShift Container Platform 的默认值。如果请求的用时小于秒,则 qps 可以大于 maxRequestsInFlight 值。如果 'maxRequestsInFlight' 设为零,则服务器可以处理的并发请求数没有限制。