19.3. 使用自定义在 OpenStack 上安装集群
在 OpenShift Container Platform 版本 4.13 中,您可以在 Red Hat OpenStack Platform(RHOSP)上安装自定义集群。要自定义安装,请在安装集群前修改 install-config.yaml
中的参数。
19.3.1. 先决条件
- 您可以参阅有关 OpenShift Container Platform 安装和更新 流程的详细信息。
- 您可以阅读有关 选择集群安装方法的文档,并为用户准备它。
- 使用OpenShift 集群支持的平台部分验证 OpenShift Container Platform 4.13 是否与您的 RHOSP 版本兼容。您还可以通过查看 RHOSP 上的 OpenShift Container Platform 支持来比较不同版本的平台支持。
- 您已在 RHOSP 中安装了存储服务,如块存储(Cinder)或对象存储(Swift)。对象存储是 OpenShift Container Platform registry 集群部署的推荐存储技术。如需更多信息,请参阅优化存储。
- 您可以了解集群扩展、control plane 大小和 etcd 的性能和可扩展性实践。如需更多信息,请参阅扩展集群的建议实践。
- 您已在 RHOSP 中启用了元数据服务。
19.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 机器。
19.3.2.1. control plane 机器
默认情况下,OpenShift Container Platform 安装过程会创建三台 control plane 机器。
每台机器都需要:
- 来自 RHOSP 配额的实例
- 来自 RHOSP 配额的端口
- 至少有 16 GB 内存和 4 个 vCPU 的类别
- RHOSP 配额中至少有 100 GB 存储空间
19.3.2.2. 计算机器
默认情况下,OpenShift Container Platform 安装过程会创建三台计算机器。
每台机器都需要:
- 来自 RHOSP 配额的实例
- 来自 RHOSP 配额的端口
- 至少有 8 GB 内存和 2 个 vCPU 的类别
- RHOSP 配额中至少有 100 GB 存储空间
计算机器托管您在 OpenShift Container Platform 上运行的应用程序;运行数量应尽可能多。
19.3.2.3. bootstrap 机器
在安装过程中,会临时置备 bootstrap 机器来支持 control plane。生产 control plane 就绪后,bootstrap 机器会被取消置备。
bootstrap 机器需要:
- 来自 RHOSP 配额的实例
- 来自 RHOSP 配额的端口
- 至少有 16 GB 内存和 4 个 vCPU 的类别
- RHOSP 配额中至少有 100 GB 存储空间
19.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。
在负载均衡器的前端和后端配置以下端口:
表 19.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 加密的应用程序的性能。
在负载均衡器的前端和后端配置以下端口:
表 19.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 节点。
19.3.2.4.1. 使用用户管理的负载均衡器部署的集群的负载均衡器配置示例
本节提供了一个满足用户管理的负载均衡器部署的集群的负载均衡要求的 API 和应用程序入口负载均衡器配置示例。示例是 HAProxy 负载均衡器的 /etc/haproxy/haproxy.cfg
配置。这个示例不是为选择一个负载平衡解决方案提供建议。
在这个示例中,将相同的负载均衡器用于 Kubernetes API 和应用入口流量。在生产环境中,您可以单独部署 API 和应用程序入口负载均衡器,以便可以隔离扩展每个负载均衡器基础架构。
如果您使用 HAProxy 作为负载均衡器,并且 SELinux 设置为 enforcing
,您必须通过运行 setsebool -P haproxy_connect_any=1
来确保 HAProxy 服务可以绑定到配置的 TCP 端口。
例 19.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
。
19.3.3. OpenShift Container Platform 互联网访问
在 OpenShift Container Platform 4.13 中,您需要访问互联网来安装集群。
您必须具有以下互联网访问权限:
- 访问 OpenShift Cluster Manager Hybrid Cloud Console 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
- 访问 Quay.io,以获取安装集群所需的软件包。
- 获取执行集群更新所需的软件包。
如果您的集群无法直接访问互联网,则可以在置备的某些类型的基础架构上执行受限网络安装。在此过程中,您可以下载所需的内容,并使用它为镜像 registry 填充安装软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群前,您要更新镜像 registry 的内容。
19.3.4. 在 RHOSP 上启用 Swift
Swift 由具有 swiftoperator
角色的用户帐户操控。在运行安装程序前,将该角色添加到帐户。
如果 Red Hat OpenStack Platform(RHOSP)对象存储服务(通常称为 Swift)可用,OpenShift Container Platform 会使用它作为镜像 registry 存储。如果无法使用,安装程序会依赖于 RHOSP 块存储服务,通常称为 Cinder。
如果 Swift 存在并且您想要使用 Swift,您必须启用对其的访问。如果不存在,或者您不想使用它,请跳过这个部分。
RHOSP 17 将 Ceph RGW 的 rgw_max_attr_size
参数设置为 256 个字符。此设置会导致将容器镜像上传到 OpenShift Container Platform registry 的问题。您必须将 rgw_max_attr_size
的值设置为至少 1024 个字符。
在安装前,检查您的 RHOSP 部署是否会受到此问题的影响。如果是,请重新配置 Ceph RGW。
先决条件
- 在目标环境中有一个 RHOSP 管理员帐户。
- 已安装 Swift 服务。
-
在 Ceph RGW 上,启用了
account in url
选项。
流程
在 RHOSP 上启用 Swift:
在 RHOSP CLI 中以管理员身份,将
swiftoperator
角色添加到将要访问 Swift 的帐户中:$ openstack role add --user <user> --project <project> swiftoperator
您的 RHOSP 部署现在可以将 Swift 用于镜像 registry。
19.3.5. 在 RHOSP 上运行的集群中使用自定义存储配置镜像 registry
在 Red Hat OpenStack Platform(RHOSP)上安装集群后,您可以使用位于 registry 存储的特定可用区的 Cinder 卷。
流程
创建一个 YAML 文件,用于指定要使用的存储类和可用性区域。例如:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: custom-csi-storageclass provisioner: cinder.csi.openstack.org volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true parameters: availability: <availability_zone_name>
注意OpenShift Container Platform 不验证您选择的可用区是否存在。应用配置前,请验证可用性区域的名称。
在命令行中应用配置:
$ oc apply -f <storage_class_file_name>
输出示例
storageclass.storage.k8s.io/custom-csi-storageclass created
创建一个 YAML 文件,用于指定使用存储类和
openshift-image-registry
命名空间的持久性卷声明(PVC)。例如:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: csi-pvc-imageregistry namespace: openshift-image-registry 1 annotations: imageregistry.openshift.io: "true" spec: accessModes: - ReadWriteOnce volumeMode: Filesystem resources: requests: storage: 100Gi 2 storageClassName: <your_custom_storage_class> 3
在命令行中应用配置:
$ oc apply -f <pvc_file_name>
输出示例
persistentvolumeclaim/csi-pvc-imageregistry created
将镜像 registry 配置中的原始持久性卷声明替换为新声明:
$ oc patch configs.imageregistry.operator.openshift.io/cluster --type 'json' -p='[{"op": "replace", "path": "/spec/storage/pvc/claim", "value": "csi-pvc-imageregistry"}]'
输出示例
config.imageregistry.operator.openshift.io/cluster patched
接下来的几分钟内,配置将更新。
验证
确认 registry 正在使用您定义的资源:
验证 PVC 声明值是否与您在 PVC 定义中提供的名称相同:
$ oc get configs.imageregistry.operator.openshift.io/cluster -o yaml
输出示例
... status: ... managementState: Managed pvc: claim: csi-pvc-imageregistry ...
验证 PVC 的状态是否为
Bound
:$ oc get pvc -n openshift-image-registry csi-pvc-imageregistry
输出示例
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE csi-pvc-imageregistry Bound pvc-72a8f9c9-f462-11e8-b6b6-fa163e18b7b5 100Gi RWO custom-csi-storageclass 11m
19.3.6. 验证外部网络访问
OpenShift Container Platform 安装过程需要外部网络访问权限。您必须为其提供外部网络值,否则部署会失败。在开始这个过程前,请验证 Red Hat OpenStack Platform(RHOSP)中是否存在具有外部路由器类型的网络。
流程
使用 RHOSP CLI 验证"外部"网络的名称和 ID:
$ openstack network list --long -c ID -c Name -c "Router Type"
输出示例
+--------------------------------------+----------------+-------------+ | ID | Name | Router Type | +--------------------------------------+----------------+-------------+ | 148a8023-62a7-4672-b018-003462f8d7dc | public_network | External | +--------------------------------------+----------------+-------------+
网络列表中会显示具有外部路由器类型的网络。如果至少有一个没有,请参阅创建默认浮动 IP 网络和创建默认供应商网络。
如果外部网络的 CIDR 范围与其中一个默认网络范围重叠,您必须在开始安装过程前更改 install-config.yaml
文件中的匹配网络范围。
默认的网络范围为:
网络 | 范围 |
---|---|
| 10.0.0.0/16 |
| 172.30.0.0/16 |
| 10.128.0.0/14 |
如果安装程序找到多个同名的网络,它会随机设置其中之一。为避免这种行为,请在 RHOSP 中为资源创建唯一名称。
如果启用了 Neutron 中继服务插件,则默认创建一个中继端口。如需更多信息,请参阅 Neutron 中继端口。
19.3.7. 为安装程序定义参数
OpenShift Container Platform 安装程序依赖于一个名为 clouds.yaml
的文件。该文件描述了 Red Hat OpenStack Platform(RHOSP)配置参数,包括项目名称、登录信息和授权服务 URL。
流程
创建
clouds.yaml
文件:如果您的 RHOSP 发行版包含 Horizon Web UI,请在该 UI 中生成
clouds.yaml
文件。重要记得在
auth
字段中添加密码。您还可以将 secret 保存在clouds.yaml
以外的 一个独立的文件中。如果您的 RHOSP 发行版不包含 Horizon Web UI,或者您不想使用 Horizon,请自行创建该文件。如需有关
clouds.yaml
的详细信息,请参阅 RHOSP 文档中的 配置文件。clouds: shiftstack: auth: auth_url: http://10.10.14.42:5000/v3 project_name: shiftstack username: <username> password: <password> user_domain_name: Default project_domain_name: Default dev-env: region_name: RegionOne auth: username: <username> password: <password> project_name: 'devonly' auth_url: 'https://10.10.14.22:5001/v2.0'
如果您的 RHOSP 安装使用自签名证书颁发机构(CA)证书进行端点身份验证:
- 将证书颁发机构文件复制到您的机器中。
将
cacerts
键添加到clouds.yaml
文件。该值必须是到 CA 证书的绝对、不可 root 访问的路径:clouds: shiftstack: ... cacert: "/etc/pki/ca-trust/source/anchors/ca.crt.pem"
提示使用自定义 CA 证书运行安装程序后,您可以通过编辑
cloud-provider-config
keymap中的 ca-cert.pem
键的值来更新证书。在命令行中运行:$ oc edit configmap -n openshift-config cloud-provider-config
将
clouds.yaml
文件放在以下位置之一:-
OS_CLIENT_CONFIG_FILE
环境变量的值 - 当前目录
-
特定于 Unix 的用户配置目录,如
~/.config/openstack/clouds.yaml
特定于 Unix 的站点配置目录,如
/etc/openstack/clouds.yaml
安装程序会按顺序搜索
clouds.yaml
。
-
19.3.8. 设置 OpenStack Cloud Controller Manager 选项
另外,您可以编辑集群的 OpenStack Cloud Controller Manager (CCM) 配置。此配置控制 OpenShift Container Platform 与 Red Hat OpenStack Platform (RHOSP) 的交互方式。
有关配置参数的完整列表,请参阅"安装 OpenStack"文档中的"OpenStack Cloud Controller Manager 参考指南"页面。
流程
如果您还没有为集群生成清单文件,请运行以下命令生成这些文件:
$ openshift-install --dir <destination_directory> create manifests
在文本编辑器中,打开 cloud-provider 配置清单文件。例如:
$ vi openshift/manifests/cloud-provider-config.yaml
根据 CCM 参考指南修改选项。
为负载均衡配置 Octavia 是不使用 Kuryr 的集群的一个常见情况。例如:
#... [LoadBalancer] use-octavia=true 1 lb-provider = "amphora" 2 floating-network-id="d3deb660-4190-40a3-91f1-37326fe6ec4a" 3 create-monitor = True 4 monitor-delay = 10s 5 monitor-timeout = 10s 6 monitor-max-retries = 1 7 #...
- 1
- 此属性启用 Octavia 集成。
- 2
- 此属性设置负载均衡器使用的 Octavia 供应商。它接受
"ovn"
或"amphora"
作为值。如果您选择使用 OVN,还必须将lb-method
设置为SOURCE_IP_PORT
。 - 3
- 如果要将多个外部网络用于集群,则需要此属性。云提供商在网络上创建此处指定的浮动 IP 地址。
- 4
- 此属性控制云供应商是否为 Octavia 负载均衡器创建运行状况监控器。将值设为
True
来创建运行状况监视器。从 RHOSP 16.2 开始,这个功能仅适用于 Amphora 供应商。 - 5
- 此属性设定监控端点的频率。该值必须采用
time.ParseDuration()
格式。如果create-monitor
属性的值为True
,则需要此属性。 - 6
- 此属性设定监控请求在超时前打开的时间。该值必须采用
time.ParseDuration()
格式。如果create-monitor
属性的值为True
,则需要此属性。 - 7
- 此属性定义在负载均衡器被标记为在线前需要成功完成监控请求。该值必须是整数。如果
create-monitor
属性的值为True
,则需要此属性。
重要在保存更改之前,请验证该文件的结构是否正确。如果属性没有放入相应的部分,集群可能会失败。
重要如果使用将
.spec.externalTrafficPolicy
属性的值设置为Local
的服务,则必须将create-monitor
属性的值设置为True
。RHOSP 16.2 中的 OVN Octavia 供应商不支持健康监控器。因此,当lb-provider
值设为"ovn"
时,将ETP
参数值设置为Local
的服务可能无法响应。重要对于使用 Kuryr 的安装,Kuryr 处理相关服务。不需要在云供应商中配置 Octavia 负载均衡。
保存对文件的更改并开始安装。
提示您可以在运行安装程序后更新云供应商配置。在命令行中运行:
$ oc edit configmap -n openshift-config cloud-provider-config
保存更改后,您的集群将需要一些时间重新配置其自身。如果您的任一节点都没有
SchedulingDisabled
状态,则此过程已完成。
19.3.9. 获取安装程序
在安装 OpenShift Container Platform 之前,将安装文件下载到您置备的机器上。
先决条件
- 您有一个运行 Linux 的机器,如 Red Hat Enterprise Linux 8,本地磁盘空间为 500 MB。
流程
- 访问 OpenShift Cluster Manager 站点的 Infrastructure Provider 页面。如果您有红帽帐户,请使用您的凭证登录。如果没有,请创建一个帐户。
- 选择您的基础架构供应商。
进入到安装类型的页面,下载与您的主机操作系统和架构对应的安装程序,并将该文件放在您要存储安装配置文件的目录中。
重要安装程序会在用来安装集群的计算机上创建几个文件。在完成集群安装后,您必须保留安装程序和安装程序所创建的文件。这两个文件都需要删除集群。
重要删除安装程序创建的文件不会删除您的集群,即使集群在安装过程中失败也是如此。要删除集群,请为特定云供应商完成 OpenShift Container Platform 卸载流程。
提取安装程序。例如,在使用 Linux 操作系统的计算机上运行以下命令:
$ tar -xvf openshift-install-linux.tar.gz
- 从 Red Hat OpenShift Cluster Manager 下载安装 pull secret。此 pull secret 允许您与所含授权机构提供的服务进行身份验证,这些服务包括为 OpenShift Container Platform 组件提供容器镜像的 Quay.io。
19.3.10. 创建安装配置文件
您可以自定义在 Red Hat OpenStack Platform(RHOSP)上安装的 OpenShift Container Platform 集群。
先决条件
- 获取 OpenShift Container Platform 安装程序和集群的 pull secret。
- 在订阅级别获取服务主体权限。
流程
创建
install-config.yaml
文件。进入包含安装程序的目录并运行以下命令:
$ ./openshift-install create install-config --dir <installation_directory> 1
- 1
- 对于
<installation_directory>
,请指定要存储安装程序创建的文件的目录名称。
在指定目录时:
-
验证该目录是否具有
执行
权限。在安装目录中运行 Terraform 二进制文件需要这个权限。 使用空目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。
注意始终删除
~/.powervs
目录,以避免重复使用过时的配置。运行以下命令:$ rm -rf ~/.powervs
在提示符处,提供云的配置详情:
可选: 选择用于访问集群机器的 SSH 密钥。
注意对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定
ssh-agent
进程使用的 SSH 密钥。- 选择 openstack 作为目标平台。
- 指定用于安装集群的 Red Hat OpenStack Platform(RHOSP)外部网络名称。
- 指定用于从外部访问 OpenShift API 的浮动 IP 地址。
- 指定至少有 16 GB RAM 用于 control plane 节点,以及计算节点的 8 GB RAM。
- 选择集群要部署到的基域。所有 DNS 记录都将是这个基域的子域,并且还包括集群名称。
- 为集群输入一个名称。名称长度必须为 14 个或更少字符。
- 粘贴 Red Hat OpenShift Cluster Manager 中的 pull secret。
-
修改
install-config.yaml
文件。您可以在"安装配置参数"部分找到有关可用参数的更多信息。 备份
install-config.yaml
文件,以便您可以使用它安装多个集群。重要install-config.yaml
文件会在安装过程中消耗掉。如果要重复使用此文件,必须现在备份。
其他资源
有关可用参数的更多信息,请参阅安装配置参数部分。
19.3.10.1. 在安装过程中配置集群范围的代理
生产环境可能会拒绝直接访问互联网,而是提供 HTTP 或 HTTPS 代理。您可以通过在 install-config.yaml
文件中配置代理设置,将新的 OpenShift Container Platform 集群配置为使用代理。
先决条件
-
您有一个现有的
install-config.yaml
文件。 您检查了集群需要访问的站点,并确定它们中的任何站点是否需要绕过代理。默认情况下,所有集群出口流量都经过代理,包括对托管云供应商 API 的调用。如果需要,您将在
Proxy 对象的
spec.noProxy
字段中添加站点来绕过代理。注意Proxy
对象status.noProxy
字段使用安装配置中的networking.machineNetwork[].cidr
、networking.clusterNetwork[].cidr
和networking.serviceNetwork[]
字段的值填充。对于在 Amazon Web Services(AWS)、Google Cloud Platform(GCP)、Microsoft Azure 和 Red Hat OpenStack Platform(RHOSP)上安装,
Proxy
对象status.noProxy
字段也会使用实例元数据端点填充(169.254.169.254
)。
流程
编辑
install-config.yaml
文件并添加代理设置。例如:apiVersion: v1 baseDomain: my.domain.com proxy: httpProxy: http://<username>:<pswd>@<ip>:<port> 1 httpsProxy: https://<username>:<pswd>@<ip>:<port> 2 noProxy: example.com 3 additionalTrustBundle: | 4 -----BEGIN CERTIFICATE----- <MY_TRUSTED_CA_CERT> -----END CERTIFICATE----- additionalTrustBundlePolicy: <policy_to_add_additionalTrustBundle> 5
- 1
- 用于创建集群外 HTTP 连接的代理 URL。URL 方案必须是
http
。 - 2
- 用于创建集群外 HTTPS 连接的代理 URL。
- 3
- 要从代理中排除的目标域名、IP 地址或其他网络 CIDR 的逗号分隔列表。在域前面加上
.
以仅匹配子域。例如,.y.com
匹配x.y.com
,但不匹配y.com
。使用*
绕过所有目的地的代理。 - 4
- 如果提供,安装程序会在
openshift-config
命名空间中生成名为user-ca-bundle
的配置映射,其包含代理 HTTPS 连接所需的一个或多个额外 CA 证书。然后,Cluster Network Operator 会创建trusted-ca-bundle
配置映射,将这些内容与 Red Hat Enterprise Linux CoreOS(RHCOS)信任捆绑包合并,Proxy
对象的trustedCA
字段中也会引用此配置映射。additionalTrustBundle
字段是必需的,除非代理的身份证书由来自 RHCOS 信任捆绑包的颁发机构签名。 - 5
- 可选:决定
Proxy
对象的配置以引用trustedCA
字段中user-ca-bundle
配置映射的策略。允许的值是Proxyonly
和Always
。仅在配置了http/https
代理时,使用Proxyonly
引用user-ca-bundle
配置映射。使用Always
始终引用user-ca-bundle
配置映射。默认值为Proxyonly
。
注意安装程序不支持代理的
readinessEndpoints
字段。注意如果安装程序超时,重启并使用安装程序的
wait-for
命令完成部署。例如:$ ./openshift-install wait-for install-complete --log-level debug
- 保存该文件并在安装 OpenShift Container Platform 时引用。
安装程序会创建一个名为 cluster 的集群范围代理,该代理 使用
提供的 install-config.yaml
文件中的代理设置。如果没有提供代理设置,仍然会创建一个 cluster
Proxy
对象,但它会有一个空 spec
。
只支持名为 cluster
的 Proxy
对象,且无法创建额外的代理。
19.3.11. 安装配置参数
在部署 OpenShift Container Platform 集群前,您可以提供一个自定义 的 install-config.yaml
安装配置文件,该文件描述了您的环境的详情。
安装后,您无法在 install-config.yaml
文件中修改这些参数。
19.3.11.1. 所需的配置参数
下表描述了所需的安装配置参数:
参数 | 描述 | 值 |
---|---|---|
|
| 字符串 |
|
云供应商的基域。基域用于创建到 OpenShift Container Platform 集群组件的路由。集群的完整 DNS 名称是 |
完全限定域名或子域名,如 |
|
Kubernetes 资源 | 对象 |
|
集群的名称。集群的 DNS 记录是 |
小写字母、连字符( |
|
要执行安装的具体平台配置: | 对象 |
| 从 Red Hat OpenShift Cluster Manager 获取 pull secret,验证从 Quay.io 等服务中下载 OpenShift Container Platform 组件的容器镜像。 |
{ "auths":{ "cloud.openshift.com":{ "auth":"b3Blb=", "email":"you@example.com" }, "quay.io":{ "auth":"b3Blb=", "email":"you@example.com" } } } |
19.3.11.2. 网络配置参数
您可以根据现有网络基础架构的要求自定义安装配置。例如,您可以扩展集群网络的 IP 地址块,或者提供不同于默认值的不同 IP 地址块。
- 如果使用 Red Hat OpenShift Networking OVN-Kubernetes 网络插件,则支持 IPv4 和 IPv6 地址系列。
- 如果您使用 Red Hat OpenShift Networking OpenShift SDN 网络插件,则只支持 IPv4 地址系列。
如果将集群配置为使用两个 IP 地址系列,请查看以下要求:
- 两个 IP 系列都必须将相同的网络接口用于默认网关。
- 两个 IP 系列都必须具有默认网关。
- 您必须为所有网络配置参数指定 IPv4 和 IPv6 地址。例如,以下配置 IPv4 地址列在 IPv6 地址的前面。
networking: clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 - cidr: fd00:10:128::/56 hostPrefix: 64 serviceNetwork: - 172.30.0.0/16 - fd00:172:16::/112
Red Hat OpenShift Data Foundation 灾难恢复解决方案不支持 Globalnet。对于区域灾难恢复场景,请确保为每个集群中的集群和服务网络使用非重叠的专用 IP 地址。
参数 | 描述 | 值 |
---|---|---|
| 集群网络的配置。 | 对象 注意
您无法在安装后修改 |
| 要安装的 Red Hat OpenShift Networking 网络插件。 |
|
| pod 的 IP 地址块。
默认值为 如果您指定了多个 IP 地址块,块不得重叠。 | 对象数组。例如: networking: clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 |
|
使用 IPv4 网络。 |
无类别域间路由(CIDR)表示法中的 IP 地址块。IPv4 块的前缀长度介于 |
|
分配给每个节点的子网前缀长度。例如,如果 | 子网前缀。
默认值为 |
|
服务的 IP 地址块。默认值为 OpenShift SDN 和 OVN-Kubernetes 网络插件只支持服务网络的一个 IP 地址块。 | CIDR 格式具有 IP 地址块的数组。例如: networking: serviceNetwork: - 172.30.0.0/16 |
| 机器的 IP 地址块。 如果您指定了多个 IP 地址块,块不得重叠。
如果您指定了多个 IP 内核参数, | 对象数组。例如: networking: machineNetwork: - cidr: 10.0.0.0/16 |
|
使用 | CIDR 表示法中的 IP 网络块。
例如: 注意
将 |
19.3.11.3. 可选的配置参数
下表描述了可选的安装配置参数:
参数 | 描述 | 值 |
---|---|---|
| 添加到节点可信证书存储中的 PEM 编码 X.509 证书捆绑包。配置了代理时,也可以使用此信任捆绑包。 | 字符串 |
| 控制可选核心组件的安装。您可以通过禁用可选组件来减少 OpenShift Container Platform 集群的空间。如需更多信息,请参阅安装中的"集群功能"页面。 | 字符串数组 |
|
选择要启用的一组初始可选功能。有效值为 | 字符串 |
|
将可选功能集合扩展到您在 | 字符串数组 |
| 启用工作负载分区,它会隔离 OpenShift Container Platform 服务、集群管理工作负载和基础架构 pod,以便在保留的一组 CPU 上运行。工作负载分区只能在安装过程中启用,且在安装后无法禁用。虽然此字段启用工作负载分区,但它不会将工作负载配置为使用特定的 CPU。如需更多信息,请参阅 Scalability and Performance 部分中的 Workload partitioning 页面。 |
|
| 组成计算节点的机器的配置。 |
|
|
决定池中机器的指令集合架构。目前不支持异构集群,因此所有池都必须指定相同的架构。有效值为 | 字符串 |
compute: 超线程: |
是否在计算机器上启用或禁用并发多 重要 如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。 |
|
|
使用 |
|
|
使用 |
|
| 要置备的计算机器数量,也称为 worker 机器。 |
大于或等于 |
| 为功能集启用集群。功能集是 OpenShift Container Platform 功能的集合,默认情况下不启用。有关在安装过程中启用功能集的更多信息,请参阅"使用功能门启用功能"。 |
字符串.要启用的功能集的名称,如 |
| 组成 control plane 的机器的配置。 |
|
|
决定池中机器的指令集合架构。目前不支持异构集群,因此所有池都必须指定相同的架构。有效值为 | 字符串 |
controlPlane: 超线程: |
是否在 control plane 机器上启用或禁用并发多 重要 如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。 |
|
|
使用 |
|
|
使用 |
|
| 要置备的 control plane 机器数量。 |
唯一支持的值是 |
| Cloud Credential Operator(CCO)模式。如果没有指定模式,CCO 会动态尝试决定提供的凭证的功能,在支持多个模式的平台上首选 mint 模式。 注意 不是所有 CCO 模式都支持所有云供应商。如需有关 CCO 模式的更多信息,请参阅集群 Operator 参考内容中的 Cloud Credential Operator 条目。 注意
如果您的 AWS 帐户启用了服务控制策略 (SCP),您必须将 |
|
| release-image 内容的源和存储库。 |
对象数组。包括一个 |
|
使用 | 字符串 |
| 指定可能还包含同一镜像的一个或多个仓库。 | 字符串数组 |
| 如何发布或公开集群的面向用户的端点,如 Kubernetes API、OpenShift 路由。 |
在非云平台上不支持将此字段设置为 重要
如果将字段的值设为 |
| 用于验证对集群机器的访问的 SSH 密钥。 注意
对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定 |
例如, |
- 不是所有 CCO 模式都支持所有云供应商。有关 CCO 模式的更多信息,请参阅身份验证和授权内容中的"管理云供应商凭证"条目。
19.3.11.4. 其他 Red Hat OpenStack Platform(RHOSP)配置参数
下表中描述了其他 RHOSP 配置参数:
参数 | 描述 | 值 |
---|---|---|
| 对于计算机器,以 GB 为单位的根卷大小。如果没有设置这个值,机器将使用临时存储。 |
整数,如 |
| 对于计算机器,根卷的类型。 |
字符串,如 |
| 对于 control plane 机器,以 GB 为单位表示的根卷大小。如果没有设置这个值,机器将使用临时存储。 |
整数,如 |
| 对于 control plane 机器,根卷的类型。 |
字符串,如 |
|
要使用的 RHOSP 云名称,来自于 |
字符串,如 |
| 用于安装的 RHOSP 外部网络名称。 |
字符串,如 |
| 用于 control plane 和计算机器的 RHOSP 类别。
此属性已弃用。要将 flavor 用作所有机器池的默认值,请将其添加为 |
字符串,如 |
19.3.11.5. 可选的 RHOSP 配置参数
下表描述了可选的 RHOSP 配置参数:
参数 | 描述 | 值 |
---|---|---|
| 与计算机器关联的其他网络。不为额外网络创建允许的地址对。 |
一个或多个 UUID 的列表作为字符串。例如: |
| 与计算机器关联的其他安全组。 |
一个或多个 UUID 的列表作为字符串。例如, |
| RHOSP Compute(Nova)可用区(AZ)在其中安装机器。如果没有设置此参数,安装程序会依赖于配置了 RHOSP 管理员的 Nova 的默认设置。 在使用 Kuryr 的集群上,RHOSP Octavia 不支持可用区。负载均衡器,如果您使用 Amphora 供应商驱动程序,则依赖 Amphora 虚拟机的 OpenShift Container Platform 服务不会根据此属性的值创建。 |
字符串列表。例如: |
| 对于计算机器,可在其上安装根卷的可用性区域。如果没有为此参数设置值,安装程序会选择默认的可用性区域。 |
字符串列表,如 |
|
要应用到包含池中的计算机器的组策略。您不能在创建后更改服务器组策略或关系。支持的选项包括
如果使用严格的 |
应用到机器池的服务器组策略。例如, |
| 与 control plane 机器关联的额外网络。不为额外网络创建允许的地址对。 附加到 control plane 机器的额外网络也会附加到 bootstrap 节点。 |
一个或多个 UUID 的列表作为字符串。例如: |
| 与 control plane 机器关联的其他安全组。 |
一个或多个 UUID 的列表作为字符串。例如, |
| RHOSP Compute(Nova)可用区(AZ)在其中安装机器。如果没有设置此参数,安装程序会依赖于配置了 RHOSP 管理员的 Nova 的默认设置。 在使用 Kuryr 的集群上,RHOSP Octavia 不支持可用区。负载均衡器,如果您使用 Amphora 供应商驱动程序,则依赖 Amphora 虚拟机的 OpenShift Container Platform 服务不会根据此属性的值创建。 |
字符串列表。例如: |
| 对于 control plane 机器,安装根卷的可用区。如果没有设置这个值,安装程序会选择默认可用区。 |
字符串列表,如 |
|
要应用到池中包含 control plane 机器的组的服务器组策略。您不能在创建后更改服务器组策略或关系。支持的选项包括
如果使用严格的 |
应用到机器池的服务器组策略。例如, |
| 安装程序从中下载 RHCOS 镜像的位置。 您必须设置此参数才能在受限网络中执行安装。 | HTTP 或 HTTPS URL,可选使用 SHA-256 校验和。
例如: |
|
在 Glance 中添加至安装程序上传的 ClusterOSImage 的属性。如果将
您可以使用此属性超过每个节点 26 个 PV 的 RHOSP 的默认持久性卷(PV)限值。要超过这个限制,请将 virtio-
您还可以使用此属性通过包含值为 |
键值字符串对列表。例如 |
| 默认机器池平台配置。 |
{ "type": "ml.large", "rootVolume": { "size": 30, "type": "performance" } } |
|
与 Ingress 端口关联的现有浮动 IP 地址。要使用此属性,还必须定义 |
IP 地址,如 |
|
与 API 负载均衡器关联的现有浮动 IP 地址。要使用此属性,还必须定义 |
IP 地址,如 |
| 集群实例用于 DNS 解析的外部 DNS 服务器的 IP 地址。 |
IP 地址列表作为字符串。例如 |
|
是否使用默认的内部负载均衡器。如果值设为 |
|
| 集群节点使用的 RHOSP 子网的 UUID。在这个子网上创建节点和虚拟 IP(VIP)端口。
如果部署到自定义子网中,则无法将外部 DNS 服务器指定到 OpenShift Container Platform 安装程序。相反,将 DNS 添加到 RHOSP 中的子网中。 |
作为字符串的 UUID。例如: |
19.3.11.6. 故障域的 RHOSP 参数
RHOSP 故障域只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
Red Hat OpenStack Platform (RHOSP) 部署没有单一的故障域实现。相反,可用区会为每个服务单独定义,如计算服务、Nova;网络服务、Neutron;存储服务 Cinder。
从 OpenShift Container Platform 4.13 开始,RHOSP 部署有统一的故障域定义,覆盖所有支持的可用区类型。您可以使用故障域从单一位置控制 Nova、Neutron 和 Cinder 配置的相关方面。
在 RHOSP 中,端口描述了网络连接,并映射到计算机器内的接口。一个端口还:
- 由网络或多个子网定义
- 将机器连接到一个或多个子网
故障域使用端口对部署的服务进行分组。如果使用故障域,每台机器都会连接到:
-
对象存在时 ID
control-plane
的portTarget
对象。 -
本身故障域中的所有非 control-plane
portTarget
对象。 -
机器池的
additionalNetworkIDs
列表中的所有网络。
要为机器池配置故障域,请编辑 controlPlane.platform.openstack.failureDomains
下的可用区和端口目标参数。
参数 | 描述 | 值 |
---|---|---|
| 服务器的可用区。如果没有指定,则使用集群默认。 |
可用区的名称。例如, |
| root 卷的可用区。如果没有指定,则使用集群默认。 |
可用区的名称。例如, |
|
|
|
|
单个端口目标的 ID。要将该端口目标选为机器的第一个网络,请将此参数的值设置为 |
|
| 必需。附加到故障域中机器的网络的名称或 ID。 |
包含名称或 UUID 的 network: id: 8db6a48e-375b-4caa-b20b-5b9a7218bfe6 或: network: name: my-network-1 |
| 要分配固定 IP 地址的子网。这些子网必须与端口位于同一个网络中。 |
|
您不能组合区域字段和故障域。如果要使用故障域,则必须取消设置 controlPlane.zone
和 controlPlane.rootVolume.zone
字段。
19.3.11.7. RHOSP 部署中的自定义子网
另外,您还可以在您选择的 Red Hat OpenStack Platform(RHOSP)子网中部署集群。子网的 GUID 作为 install-config.yaml
文件中的 platform.openstack.machinesSubnet
的值传递。
此子网被用作集群的主子网。默认情况下,其上会创建节点和端口。您可以通过将 platform.openstack.machinesSubnet
属性的值设置为子网的 UUID,在不同的 RHOSP 子网中创建节点和端口。
在使用自定义子网运行 OpenShift Container Platform 安装程序前,请验证您的配置是否满足以下要求:
-
platform.openstack.machinesSubnet
使用的子网启用了 DHCP。 -
platform.openstack.machinesSubnet 的
CIDR 与networking.machineNetwork
的 CIDR 匹配。 - 安装程序用户有在此网络上创建端口的权限,包括带有固定 IP 地址的端口。
使用自定义子网的集群有以下限制:
-
如果您计划安装使用浮动 IP 地址的集群,则必须将
platform.openstack.machinesSubnet
子网附加到连接到externalNetwork
网络的路由器。 -
如果在
install-config.yaml
文件中设置了platform.openstack.machinesSubnet
值,安装程序不会为您的 RHOSP 机器创建专用网络或子网。 -
您不能与自定义子网同时使用
platform.openstack.externalDNS
属性。要将 DNS 添加到使用自定义子网的集群,请在 RHOSP 网络上配置 DNS。
默认情况下,API VIP 使用 x.x.x.5,Ingress VIP 从网络 CIDR 块获取 x.x.x.7。要覆盖这些默认值,请为 DHCP 分配池之外的 platform.openstack.apiVIPs
和 platform.openstack.ingressVIPs
设置值。
集群安装后无法调整网络的 CIDR 范围。红帽不提供有关在集群安装过程中确定范围的直接指导,因为它需要仔细考虑每个命名空间创建的 pod 数量。
19.3.11.8. 使用裸机部署集群
如果您希望集群使用裸机,请修改 install-config.yaml
文件。集群可以同时在裸机上运行 control plane 和计算机器,或者只在计算机器上运行。
使用 Kuryr 的集群中不支持裸机计算机器。
确保 install-config.yaml
文件反映了您用于裸机 worker 的 RHOSP 网络是否支持浮动 IP 地址。
先决条件
- RHOSP Bare Metal 服务(Ironic) 通过 RHOSP Compute API 启用并访问。
- 裸机 可作为 RHOSP 类别 提供。
- 如果您的集群在一个大于 16.1.6 且小于 16.2.4 的 RHOSP 版本上运行,则裸机 worker 无法正常工作,因为存在一个已知问题会导致元数据服务对 OpenShift Container Platform 节点上的服务不可用。
- RHOSP 网络支持 VM 和裸机服务器附加。
- 如果要将机器部署到预先存在的网络中,则会置备 RHOSP 子网。
- 如果要在安装程序置备的网络中部署机器,RHOSP Bare Metal 服务(Ironic)可以侦听在租户网络上运行的 Preboot eXecution Environment(PXE)引导机器并与之交互。
-
作为 OpenShift Container Platform 安装过程的一部分,创建了
install-config.yaml
文件。
流程
在
install-config.yaml
文件中编辑机器的类别:-
如果要使用裸机 control plane 机器,将
controlPlane.platform.openstack.type
的值改为裸机类型。 -
将
compute.platform.openstack.type
的值改为一个裸机类型。 如果要将机器部署到预先存在的网络中,请将
platform.openstack.machinesSubnet
的值改为网络的 RHOSP 子网 UUID。control plane 和计算机器必须使用相同的子网。裸机
install-config.yaml
文件示例controlPlane: platform: openstack: type: <bare_metal_control_plane_flavor> 1 ... compute: - architecture: amd64 hyperthreading: Enabled name: worker platform: openstack: type: <bare_metal_compute_flavor> 2 replicas: 3 ... platform: openstack: machinesSubnet: <subnet_UUID> 3 ...
-
如果要使用裸机 control plane 机器,将
使用更新的 install-config.yaml
文件完成安装过程。部署期间创建的计算机器使用添加到 文件的类别。
在等待裸机引导时,安装程序可能会超时。
如果安装程序超时,重启并使用安装程序的 wait-for
命令完成部署。例如:
$ ./openshift-install wait-for install-complete --log-level debug
19.3.11.9. RHOSP 提供商网络上的集群部署
您可以使用供应商网络上的主网络接口在 Red Hat OpenStack Platform(RHOSP)上部署 OpenShift Container Platform 集群。提供商网络通常用于为项目提供可用于访问互联网的公共网络的直接访问权限。您还可以在项目间共享提供商网络,作为网络创建流程的一部分。
RHOSP 提供商网络直接映射到数据中心内的现有物理网络。RHOSP 管理员必须创建它们。
在以下示例中,OpenShift Container Platform 工作负载使用提供商网络连接到数据中心:
在提供商网络上安装的 OpenShift Container Platform 集群不需要租户网络或浮动 IP 地址。安装程序不会在安装过程中创建这些资源。
提供商网络类型示例包括 flat(未标记)和 VLAN(802.1Q 标记)。
集群可以在网络类型允许的情况下支持任意数量的提供商网络连接。例如,VLAN 网络通常支持多达 4096 个连接。
您可以在 RHOSP 文档中的 了解更多有关供应商和租户网络的信息。
19.3.11.9.1. 集群安装的 RHOSP 提供商网络要求
在安装 OpenShift Container Platform 集群前,您的 Red Hat OpenStack Platform(RHOSP)部署和提供商网络必须满足以下多个条件:
- RHOSP 网络服务(Neutron)通过 RHOSP 网络 API 启用 并访问。
- RHOSP 网络服务 启用了端口安全性并允许地址对扩展。
提供商网络可以与其他租户共享。
提示使用
openstack network create
命令和--share
标志来创建可共享的网络。用于安装集群的 RHOSP 项目必须拥有提供商网络以及适当的子网。
提示- 要为名为"openshift"的项目创建网络,请输入以下命令
$ openstack network create --project openshift
- 要为名为"openshift"的项目创建子网,请输入以下命令
$ openstack subnet create --project openshift
要了解更多有关在 RHOSP 上创建网络的信息,请阅读 提供商网络文档。
如果集群归
admin
用户所有,则必须以该用户身份运行安装程序,以便在网络上创建端口。重要提供商网络必须由用于创建集群的 RHOSP 项目所有。如果没有,则 RHOSP Compute 服务(Nova)无法从该网络请求端口。
验证提供商网络可以访问 RHOSP 元数据服务 IP 地址,默认为
169.254.169.254
。根据 RHOSP SDN 和网络服务配置,您可能需要在创建子网时提供路由。例如:
$ openstack subnet create --dhcp --host-route destination=169.254.169.254/32,gateway=192.0.2.2 ...
- 可选: 要保护网络,请创建 基于角色的访问控制(RBAC) 规则,以限制对单个项目的网络访问。
19.3.11.9.2. 在提供商网络上部署具有主接口的集群
您可以在 Red Hat OpenStack Platform(RHOSP) 提供商网络上部署具有主网络接口的 OpenShift Container Platform 集群。
先决条件
- 您的 Red Hat OpenStack Platform(RHOSP)部署被配置为"RHOSP 供应商网络要求用于集群安装"。
流程
-
在文本编辑器中,打开
install-config.yaml
文件。 -
将
platform.openstack.apiVIPs
属性的值设置为 API VIP 的 IP 地址。 -
将
platform.openstack.ingressVIPs
属性的值设置为 Ingress VIP 的 IP 地址。 -
将
platform.openstack.machinesSubnet
属性的值设置为提供商网络子网的 UUID。 -
将
networking.machineNetwork.cidr
属性的值设置为提供商网络子网的 CIDR 块。
platform.openstack.apiVIPs
和 platform.openstack.ingressVIPs
属性必须从 networking.machineNetwork.cidr
块中取消分配 IP 地址。
依赖于 RHOSP 提供商网络的集群的安装配置文件部分
... platform: openstack: apiVIPs: 1 - 192.0.2.13 ingressVIPs: 2 - 192.0.2.23 machinesSubnet: fa806b2f-ac49-4bce-b9db-124bc64209bf # ... networking: machineNetwork: - cidr: 192.0.2.0/24
您不能在将提供商网络用于主网络接口时设置 platform.openstack.externalNetwork
或 platform.openstack.externalDNS
参数。
在部署集群时,安装程序使用 install-config.yaml
文件在提供商网络上部署集群。
您可以将额外的网络(包括提供商网络)添加到 platform.openstack.additionalNetworkIDs
列表中。
部署集群后,您可以将 pod 附加到额外网络。如需更多信息,请参阅 了解多个网络。
19.3.11.10. RHOSP 的自定义 install-config.yaml
文件示例
这个示例 install-config.yaml
演示了所有可能的 Red Hat OpenStack Platform(RHOSP)自定义选项。
此示例文件仅供参考。您必须使用安装程序来获取 install-config.yaml
文件。
apiVersion: v1 baseDomain: example.com controlPlane: name: master platform: {} replicas: 3 compute: - name: worker platform: openstack: type: ml.large replicas: 3 metadata: name: example networking: clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 machineNetwork: - cidr: 10.0.0.0/16 serviceNetwork: - 172.30.0.0/16 networkType: OVNKubernetes platform: openstack: cloud: mycloud externalNetwork: external computeFlavor: m1.xlarge apiFloatingIP: 128.0.0.1 fips: false pullSecret: '{"auths": ...}' sshKey: ssh-ed25519 AAAA...
19.3.11.11. 使用故障域的安装配置示例
RHOSP 故障域只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
install-config.yaml
文件的以下部分演示了在集群中使用故障域在 Red Hat OpenStack Platform (RHOSP) 上部署:
# ... controlPlane: name: master platform: openstack: type: m1.large failureDomains: - computeAvailabilityZone: 'nova-1' storageAvailabilityZone: 'cinder-1' portTargets: - id: control-plane network: id: 8db6a48e-375b-4caa-b20b-5b9a7218bfe6 - computeAvailabilityZone: 'nova-2' storageAvailabilityZone: 'cinder-2' portTargets: - id: control-plane network: id: 39a7b82a-a8a4-45a4-ba5a-288569a6edd1 - computeAvailabilityZone: 'nova-3' storageAvailabilityZone: 'cinder-3' portTargets: - id: control-plane network: id: 8e4b4e0d-3865-4a9b-a769-559270271242 featureSet: TechPreviewNoUpgrade # ...
19.3.11.12. 使用用户管理的负载均衡器在 OpenStack 上安装集群配置
使用用户管理的 Load Balancer 在 OpenStack 上部署只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
以下示例 install-config.yaml
文件演示了如何配置使用外部用户管理的负载均衡器而不是默认的内部负载均衡器的集群。
apiVersion: v1 baseDomain: mydomain.test compute: - name: worker platform: openstack: type: m1.xlarge replicas: 3 controlPlane: name: master platform: openstack: type: m1.xlarge replicas: 3 metadata: name: mycluster networking: clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 machineNetwork: - cidr: 192.168.10.0/24 platform: openstack: cloud: mycloud machinesSubnet: 8586bf1a-cc3c-4d40-bdf6-c243decc603a 1 apiVIPs: - 192.168.10.5 ingressVIPs: - 192.168.10.7 loadBalancer: type: UserManaged 2 featureSet: TechPreviewNoUpgrade 3
19.3.12. 为集群节点 SSH 访问生成密钥对
在 OpenShift Container Platform 安装过程中,您可以为安装程序提供 SSH 公钥。密钥通过它们的 Ignition 配置文件传递给 Red Hat Enterprise Linux CoreOS(RHCOS)节点,用于验证对节点的 SSH 访问。密钥添加到每个节点上 core
用户的 ~/.ssh/authorized_keys
列表中,这将启用免密码身份验证。
将密钥传递给节点后,您可以使用密钥对作为用户 核心
通过 SSH 连接到 RHCOS 节点。若要通过 SSH 访问节点,必须由 SSH 为您的本地用户管理私钥身份。
如果要通过 SSH 连接到集群节点来执行安装调试或灾难恢复,则必须在安装过程中提供 SSH 公钥。./openshift-install gather
命令还需要在集群节点上设置 SSH 公钥。
不要在生产环境中跳过这个过程,在生产环境中需要灾难恢复和调试。
流程
如果您在本地计算机上没有可用于在集群节点上进行身份验证的现有 SSH 密钥对,请创建一个。例如,在使用 Linux 操作系统的计算机上运行以下命令:
$ ssh-keygen -t ed25519 -N '' -f <path>/<file_name> 1
- 1
- 指定新 SSH 密钥的路径和文件名,如
~/.ssh/id_ed25519
。如果您已有密钥对,请确保您的公钥位于~/.ssh
目录中。
查看公共 SSH 密钥:
$ cat <path>/<file_name>.pub
例如,运行以下命令来查看
~/.ssh/id_ed25519.pub
公钥:$ cat ~/.ssh/id_ed25519.pub
将 SSH 私钥身份添加到本地用户的 SSH 代理(如果尚未添加)。在集群节点上,或者要使用
./openshift-install gather
命令,需要对该密钥进行 SSH 代理管理,才能在集群节点上进行免密码 SSH 身份验证。注意在某些发行版中,自动管理默认 SSH 私钥身份,如
~/.ssh/id_rsa
和~/.ssh/id_dsa
。如果
ssh-agent
进程尚未为您的本地用户运行,请将其作为后台任务启动:$ eval "$(ssh-agent -s)"
输出示例
Agent pid 31874
将 SSH 私钥添加到
ssh-agent
:$ ssh-add <path>/<file_name> 1
- 1
- 指定 SSH 私钥的路径和文件名,如
~/.ssh/id_ed25519.pub
输出示例
Identity added: /home/<you>/<path>/<file_name> (<computer_name>)
后续步骤
- 安装 OpenShift Container Platform 时,为安装程序提供 SSH 公钥。
19.3.13. 启用对环境的访问
在部署时,所有 OpenShift Container Platform 机器都是在 Red Hat OpenStack Platform(RHOSP)租户网络中创建的。因此,大多数 RHOSP 部署中都无法直接访问它们。
您可以在安装过程中使用浮动 IP 地址(FIP)来配置 OpenShift Container Platform API 和应用程序访问。您还可以在没有配置 FIP 的情况下完成安装,但安装程序不会配置一种从外部访问 API 或应用程序的方法。
19.3.13.1. 启用通过浮动 IP 地址进行访问
创建浮动 IP(FIP)地址,以便从外部访问 OpenShift Container Platform API 和集群应用程序。
流程
使用 Red Hat OpenStack Platform(RHOSP)CLI 创建 API FIP:
$ openstack floating ip create --description "API <cluster_name>.<base_domain>" <external_network>
使用 Red Hat OpenStack Platform(RHOSP)CLI,创建应用程序或 Ingress,FIP:
$ openstack floating ip create --description "Ingress <cluster_name>.<base_domain>" <external_network>
在 API 和 Ingress FIP 的 DNS 服务器中添加符合这些模式的记录:
api.<cluster_name>.<base_domain>. IN A <API_FIP> *.apps.<cluster_name>.<base_domain>. IN A <apps_FIP>
注意如果您不控制 DNS 服务器,可以通过将集群域名(如以下内容)添加到
/etc/hosts
文件中来访问集群:-
<api_floating_ip> api.<cluster_name>.<base_domain>
-
<application_floating_ip> grafana-openshift-monitoring.apps.<cluster_name>.<base_domain>
-
<application_floating_ip> prometheus-k8s-openshift-monitoring.apps.<cluster_name>.<base_domain>
-
<application_floating_ip> oauth-openshift.apps.<cluster_name>.<base_domain>
-
<application_floating_ip> console-openshift-console.apps.<cluster_name>.<base_domain>
-
application_floating_ip integrated-oauth-server-openshift-authentication.apps.<cluster_name>.<base_domain>
/etc/hosts
文件中的集群域名授予对本地集群的 Web 控制台和监控界面的访问权限。您还可以使用kubectl
或oc
。您可以使用指向 <application_floating_ip> 的额外条目来访问用户应用程序。此操作使 API 和应用程序可供您访问,不适合于生产部署,但允许对开发和测试进行安装。-
将 FIP 添加到
install-config.yaml
文件中,作为以下参数的值:-
platform.openstack.ingressFloatingIP
-
platform.openstack.apiFloatingIP
-
如果使用这些值,还必须在 install-config.yaml
文件中输入一个外部网络作为 platform.openstack.externalNetwork
参数的值。
您可以通过分配浮动 IP 地址并更新防火墙配置,使 OpenShift Container Platform 资源在集群外可用。
19.3.13.2. 完成没有浮动 IP 地址的安装
您可以在 Red Hat OpenStack Platform(RHOSP)上安装 OpenShift Container Platform,而无需提供浮动 IP 地址。
在 install-config.yaml
文件中,不要定义以下参数:
-
platform.openstack.ingressFloatingIP
-
platform.openstack.apiFloatingIP
如果无法提供外部网络,也可以将 platform.openstack.externalNetwork 留
空。如果没有为 platform.openstack.externalNetwork
提供值,则不会为您创建路由器,如果没有额外的操作,安装程序将无法从 Glance 检索镜像。您必须自行配置外部连接。
如果您在因为缺少浮动 IP 地址或名称解析而无法访问集群 API 的系统中运行安装程序,安装会失败。在这些情况下,您可以使用代理网络或者从与机器位于相同网络的系统中运行安装程序。
您可以通过为 API 和 Ingress 端口创建 DNS 记录来启用名称解析。例如:
api.<cluster_name>.<base_domain>. IN A <api_port_IP> *.apps.<cluster_name>.<base_domain>. IN A <ingress_port_IP>
如果您不控制 DNS 服务器,您可以将记录添加到 /etc/hosts
文件中。此操作使 API 可供您自己访问,不适合于生产部署,而是允许安装以进行开发和测试。
19.3.14. 部署集群
您可以在兼容云平台上安装 OpenShift Container Platform。
在初始安装过程中,您只能运行安装程序的 create cluster
命令一次。
先决条件
- 获取 OpenShift Container Platform 安装程序和集群的 pull secret。
- 验证主机上的云供应商帐户是否有部署集群的正确权限。权限不正确的帐户会导致安装过程失败,并显示包括缺失权限的错误消息。
流程
进入包含安装程序的目录并初始化集群部署:
$ ./openshift-install create cluster --dir <installation_directory> \ 1 --log-level=info 2
验证
当集群部署成功完成时:
-
终端会显示用于访问集群的说明,包括指向 Web 控制台和
kubeadmin
用户的凭证的链接。 -
凭证信息还会输出到
<installation_directory>/.openshift_install.log
.
不要删除安装程序或安装程序所创建的文件。需要这两者才能删除集群。
输出示例
... INFO Install complete! INFO To access the cluster as the system:admin user when using 'oc', run 'export KUBECONFIG=/home/myuser/install_dir/auth/kubeconfig' INFO Access the OpenShift web-console here: https://console-openshift-console.apps.mycluster.example.com INFO Login to the console with user: "kubeadmin", and password: "password" INFO Time elapsed: 36m22s
-
安装程序生成的 Ignition 配置文件包含在 24 小时后过期的证书,然后在过期时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的
node-bootstrapper
证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。 - 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。
19.3.15. 验证集群状态
您可以在安装过程中或安装后验证 OpenShift Container Platform 集群的状态。
流程
在集群环境中,导出管理员的 kubeconfig 文件:
$ export KUBECONFIG=<installation_directory>/auth/kubeconfig 1
- 1
- 对于
<installation_directory>
,请指定安装文件保存到的目录的路径。
kubeconfig
文件包含有关集群的信息,供 CLI 用于将客户端连接到正确的集群和 API 服务器。查看部署后创建的 control plane 和计算机器:
$ oc get nodes
查看集群的版本:
$ oc get clusterversion
查看 Operator 的状态:
$ oc get clusteroperator
查看集群中的所有正在运行的 pod:
$ oc get pods -A
19.3.16. 使用 CLI 登录集群
您可以通过导出集群 kubeconfig
文件,以默认系统用户身份登录集群。kubeconfig
文件包含有关集群的信息,供 CLI 用于将客户端连接到正确的集群和 API 服务器。该文件特定于集群,在 OpenShift Container Platform 安装过程中创建。
先决条件
- 已部署 OpenShift Container Platform 集群。
-
已安装
oc
CLI。
流程
导出
kubeadmin
凭证:$ export KUBECONFIG=<installation_directory>/auth/kubeconfig 1
- 1
- 对于
<installation_directory>
,请指定安装文件保存到的目录的路径。
验证您可以使用导出的配置成功运行
oc
命令:$ oc whoami
输出示例
system:admin
其他资源
- 如需有关 访问和了解 OpenShift Container Platform Web 控制台的更多详情,请参阅 访问 Web 控制台。
19.3.17. OpenShift Container Platform 的 Telemetry 访问
在 OpenShift Container Platform 4.13 中,默认运行的 Telemetry 服务提供有关集群健康状况和成功更新的指标,需要访问互联网。如果您的集群连接到互联网,Telemetry 会自动运行,并且集群会注册到 OpenShift Cluster Manager Hybrid Cloud Console。
确认 OpenShift Cluster Manager Hybrid Cloud Console 清单正确后,可以由 Telemetry 自动维护,也可以使用 OpenShift Cluster Manager 手动维护,使用订阅监控来跟踪帐户或多集群级别的 OpenShift Container Platform 订阅。
其他资源
- 有关 Telemetry 服务的更多信息,请参阅关于 远程健康监控
19.3.18. 后续步骤
- 自定义集群。
- 如果需要,您可以选择 不使用远程健康报告。
- 如果您需要启用对节点端口的外部访问,请使用节点端口配置集群流量。
- 如果您没有将 RHOSP 配置为接受通过浮动 IP 地址的应用程序流量,请使用 浮动 IP 地址配置 RHOSP 访问。