3.2. 在 RHOSP 上安装 OpenShift Container Platform 的资源指南
为支持 OpenShift Container Platform 安装,您的 Red Hat OpenStack Platform(RHOSP)配额必须满足以下要求:
resource | value |
---|---|
浮动 IP 地址 | 3 |
端口 | 15 |
路由器 | 1 |
子网 | 1 |
RAM | 88 GB |
VCPU | 22 |
卷存储 | 275 GB |
实例 | 7 |
安全组 | 3 |
安全组规则 | 60 |
服务器组 | 2 - 每个机器池中每个额外可用区加 1 |
集群或许能以少于推荐资源运行,但其性能无法保证。
如果 RHOSP 对象存储(Swift)可用,并由具有 swiftoperator
角色的用户帐户执行,它将用作 OpenShift Container Platform 镜像 registry 的默认后端。在这种情况下,卷存储需要 175 GB。根据镜像 registry 的大小,Swift 空间要求会有所不同。
默认情况下,您的安全组和安全组规则配额可能较低。如果遇到问题,请以管理员 身份运行 openstack quota set --secgroups 3 --secgroup-rules 60 <project>
来提高配额。
OpenShift Container Platform 部署包含 control plane 机器、计算机器和 bootstrap 机器。
3.2.1. control plane 机器
默认情况下,OpenShift Container Platform 安装过程会创建三台 control plane 机器。
每台机器都需要:
- 来自 RHOSP 配额的实例
- 来自 RHOSP 配额的端口
- 至少有 16 GB 内存和 4 个 vCPU 的类别
- RHOSP 配额中至少有 100 GB 存储空间
3.2.2. 计算机器
默认情况下,OpenShift Container Platform 安装过程会创建三台计算机器。
每台机器都需要:
- 来自 RHOSP 配额的实例
- 来自 RHOSP 配额的端口
- 至少有 8 GB 内存和 2 个 vCPU 的类别
- RHOSP 配额中至少有 100 GB 存储空间
计算机器托管您在 OpenShift Container Platform 上运行的应用程序;运行数量应尽可能多。
3.2.3. bootstrap 机器
在安装过程中,会临时置备 bootstrap 机器来支持 control plane。生产 control plane 就绪后,bootstrap 机器会被取消置备。
bootstrap 机器需要:
- 来自 RHOSP 配额的实例
- 来自 RHOSP 配额的端口
- 至少有 16 GB 内存和 4 个 vCPU 的类别
- RHOSP 配额中至少有 100 GB 存储空间
3.2.4. 用户置备的基础架构的负载均衡要求
使用用户管理的负载平衡器进行部署只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
在安装 OpenShift Container Platform 前,您可以置备自己的 API 和应用程序入口负载平衡基础架构,以代替默认的内部负载平衡解决方案。在生产环境中,您可以单独部署 API 和应用程序入口负载均衡器,以便可以隔离扩展每个负载均衡器基础架构。
如果要使用 Red Hat Enterprise Linux (RHEL) 实例部署 API 和应用程序入口负载均衡器,您必须单独购买 RHEL 订阅。
负载平衡基础架构必须满足以下要求:
API 负载均衡器 :提供一个通用端点,供用户(包括人工和机器)与平台交互和配置。配置以下条件:
- 仅第 4 层负载均衡.这可被称为 Raw TCP 或 SSL Passthrough 模式。
- 无状态负载平衡算法。这些选项根据负载均衡器的实施而有所不同。
重要不要为 API 负载均衡器配置会话持久性。为 Kubernetes API 服务器配置会话持久性可能会导致出现过量 OpenShift Container Platform 集群应用程序流量,以及过量的在集群中运行的 Kubernetes API。
在负载均衡器的前端和后端配置以下端口:
表 3.2. API 负载均衡器 port 后端机器(池成员) internal 外部 描述 6443
Bootstrap 和 control plane.bootstrap 机器初始化集群 control plane 后,您要从负载均衡器中删除 bootstrap 机器。您必须为 API 服务器健康检查探测配置
/readyz
端点。X
X
Kubernetes API 服务器
22623
Bootstrap 和 control plane.bootstrap 机器初始化集群 control plane 后,您要从负载均衡器中删除 bootstrap 机器。
X
机器配置服务器
注意负载均衡器必须配置为,从 API 服务器关闭
/readyz
端点到从池中移除 API 服务器实例时最多需要 30 秒。在/readyz
返回错误或健康后的时间范围内,端点必须被删除或添加。每 5 秒或 10 秒探测一次,有两个成功请求处于健康状态,三个成为不健康的请求是经过良好测试的值。应用程序入口负载均衡器 :为应用程序流量从集群外部流提供入口点。OpenShift Container Platform 集群需要正确配置入口路由器。
配置以下条件:
- 仅第 4 层负载均衡.这可被称为 Raw TCP 或 SSL Passthrough 模式。
- 建议根据可用选项以及平台上托管的应用程序类型,使用基于连接的或基于会话的持久性。
提示如果应用程序入口负载均衡器可以看到客户端的真实 IP 地址,启用基于 IP 的会话持久性可以提高使用端到端 TLS 加密的应用程序的性能。
在负载均衡器的前端和后端配置以下端口:
表 3.3. 应用程序入口负载均衡器 port 后端机器(池成员) internal 外部 描述 443
默认情况下,运行 Ingress Controller Pod、计算或 worker 的机器。
X
X
HTTPS 流量
80
默认情况下,运行 Ingress Controller Pod、计算或 worker 的机器。
X
X
HTTP 流量
注意如果要部署一个带有零计算节点的三节点集群,Ingress Controller Pod 在 control plane 节点上运行。在三节点集群部署中,您必须配置应用程序入口负载均衡器,将 HTTP 和 HTTPS 流量路由到 control plane 节点。
3.2.4.1. 使用用户管理的负载均衡器部署的集群的负载均衡器配置示例
本节提供了一个满足用户管理的负载均衡器部署的集群的负载均衡要求的 API 和应用程序入口负载均衡器配置示例。示例是 HAProxy 负载均衡器的 /etc/haproxy/haproxy.cfg
配置。这个示例不是为选择一个负载平衡解决方案提供建议。
在这个示例中,将相同的负载均衡器用于 Kubernetes API 和应用入口流量。在生产环境中,您可以单独部署 API 和应用程序入口负载均衡器,以便可以隔离扩展每个负载均衡器基础架构。
如果您使用 HAProxy 作为负载均衡器,并且 SELinux 设置为 enforcing
,您必须通过运行 setsebool -P haproxy_connect_any=1
来确保 HAProxy 服务可以绑定到配置的 TCP 端口。
例 3.1. API 和应用程序入口负载均衡器配置示例
global log 127.0.0.1 local2 pidfile /var/run/haproxy.pid maxconn 4000 daemon defaults mode http log global option dontlognull option http-server-close option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000 listen api-server-6443 1 bind *:6443 mode tcp option httpchk GET /readyz HTTP/1.0 option log-health-checks balance roundrobin server bootstrap bootstrap.ocp4.example.com:6443 verify none check check-ssl inter 10s fall 2 rise 3 backup 2 server master0 master0.ocp4.example.com:6443 weight 1 verify none check check-ssl inter 10s fall 2 rise 3 server master1 master1.ocp4.example.com:6443 weight 1 verify none check check-ssl inter 10s fall 2 rise 3 server master2 master2.ocp4.example.com:6443 weight 1 verify none check check-ssl inter 10s fall 2 rise 3 listen machine-config-server-22623 3 bind *:22623 mode tcp server bootstrap bootstrap.ocp4.example.com:22623 check inter 1s backup 4 server master0 master0.ocp4.example.com:22623 check inter 1s server master1 master1.ocp4.example.com:22623 check inter 1s server master2 master2.ocp4.example.com:22623 check inter 1s listen ingress-router-443 5 bind *:443 mode tcp balance source server worker0 worker0.ocp4.example.com:443 check inter 1s server worker1 worker1.ocp4.example.com:443 check inter 1s listen ingress-router-80 6 bind *:80 mode tcp balance source server worker0 worker0.ocp4.example.com:80 check inter 1s server worker1 worker1.ocp4.example.com:80 check inter 1s
- 1
- 端口
6443
处理 Kubernetes API 流量并指向 control plane 机器。 - 2 4
- bootstrap 条目必须在 OpenShift Container Platform 集群安装前就位,且必须在 bootstrap 过程完成后删除它们。
- 3
- 端口
22623
处理机器配置服务器流量并指向 control plane 机器。 - 5
- 端口
443
处理 HTTPS 流量,并指向运行 Ingress Controller pod 的机器。默认情况下,Ingress Controller Pod 在计算机器上运行。 - 6
- 端口
80
处理 HTTP 流量,并指向运行 Ingress Controller pod 的机器。默认情况下,Ingress Controller Pod 在计算机器上运行。注意如果要部署一个带有零计算节点的三节点集群,Ingress Controller Pod 在 control plane 节点上运行。在三节点集群部署中,您必须配置应用程序入口负载均衡器,将 HTTP 和 HTTPS 流量路由到 control plane 节点。
如果您使用 HAProxy 作为负载均衡器,您可以通过在 HAProxy 节点上运行 netstat -nltupe
来检查 haproxy
进程是否在侦听端口 6443
、22623
、443
和 80
。