在 OpenStack 上安装


OpenShift Container Platform 4.13

在 OpenStack 上安装 OpenShift Container Platform

Red Hat OpenShift Documentation Team

摘要

本文档论述了如何在 OpenStack 上安装 OpenShift Container Platform。

第 1 章 准备在 OpenStack 上安装

您可以在 Red Hat OpenStack Platform (RHOSP) 上安装 OpenShift Container Platform。

1.1. 先决条件

您可以在安装程序置备或用户置备的基础架构上安装 OpenShift Container Platform。默认安装类型使用安装程序置备的基础架构,安装程序会在其中为集群置备底层基础架构。您还可以在您置备的基础架构上安装 OpenShift Container Platform。如果不使用安装程序置备的基础架构,您必须自己管理和维护集群资源。

如需有关安装程序置备和用户置备的安装过程的更多信息,请参阅 安装过程。

1.2.1. 在安装程序置备的基础架构上安装集群

您可以使用以下方法之一在 OpenShift Container Platform 安装程序置备的 Red Hat OpenStack Platform(RHOSP)基础架构上安装集群:

  • 使用自定义在 OpenStack 上安装集群 :您可以在 RHOSP 上安装自定义集群。安装程序允许在安装阶段应用一些自定义。其它自定义选项可 在安装后使用
  • 在带有 Kuryr 的 OpenStack 上安装集群 :您可以在使用 Kuryr SDN 的 RHOSP 上安装自定义 OpenShift Container Platform 集群。Kuryr 和 OpenShift Container Platform 的集成主要针对在 RHOSP VM 上运行的 OpenShift Container Platform 集群设计。Kuryr 通过将 OpenShift Container Platform pod 插入 RHOSP SDN 来提高网络性能。另外,它还提供 pod 和 RHOSP 虚拟实例间的互联性。
  • 在受限网络中的 OpenStack 上安装集群: 您可以通过创建安装发行内容的内部镜像在受限或断开连接的网络中在 RHOSP 上安装 OpenShift Container Platform。您可以使用此方法安装不需要活跃互联网连接的集群来获取软件组件。您还可以使用此安装方法来确保集群只使用满足您组织对外部内容控制的容器镜像。

1.2.2. 在用户置备的基础架构上安装集群

您可以使用以下方法之一在您置备的 RHOSP 基础架构上安装集群:

1.3. 为旧 HTTPS 证书扫描 RHOSP 端点

从 OpenShift Container Platform 4.10 开始,HTTPS 证书必须包含主题替代名称(SAN)字段。运行以下脚本,为仅包含 CommonName 字段的传统证书在 Red Hat OpenStack Platform(RHOSP)目录中扫描每个 HTTPS 端点。

重要

OpenShift Container Platform 在安装或升级前不会检查底层 RHOSP 基础架构是否有旧证书。使用提供的脚本来自行检查这些证书。在安装或升级集群前无法更新旧证书将导致集群无法正常工作。

先决条件

流程

  1. 将以下脚本保存到机器中:

    #!/usr/bin/env bash
    
    set -Eeuo pipefail
    
    declare catalog san
    catalog="$(mktemp)"
    san="$(mktemp)"
    readonly catalog san
    
    declare invalid=0
    
    openstack catalog list --format json --column Name --column Endpoints \
    	| jq -r '.[] | .Name as $name | .Endpoints[] | select(.interface=="public") | [$name, .interface, .url] | join(" ")' \
    	| sort \
    	> "$catalog"
    
    while read -r name interface url; do
    	# Ignore HTTP
    	if [[ ${url#"http://"} != "$url" ]]; then
    		continue
    	fi
    
    	# Remove the schema from the URL
    	noschema=${url#"https://"}
    
    	# If the schema was not HTTPS, error
    	if [[ "$noschema" == "$url" ]]; then
    		echo "ERROR (unknown schema): $name $interface $url"
    		exit 2
    	fi
    
    	# Remove the path and only keep host and port
    	noschema="${noschema%%/*}"
    	host="${noschema%%:*}"
    	port="${noschema##*:}"
    
    	# Add the port if was implicit
    	if [[ "$port" == "$host" ]]; then
    		port='443'
    	fi
    
    	# Get the SAN fields
    	openssl s_client -showcerts -servername "$host" -connect "$host:$port" </dev/null 2>/dev/null \
    		| openssl x509 -noout -ext subjectAltName \
    		> "$san"
    
    	# openssl returns the empty string if no SAN is found.
    	# If a SAN is found, openssl is expected to return something like:
    	#
    	#    X509v3 Subject Alternative Name:
    	#        DNS:standalone, DNS:osp1, IP Address:192.168.2.1, IP Address:10.254.1.2
    	if [[ "$(grep -c "Subject Alternative Name" "$san" || true)" -gt 0 ]]; then
    		echo "PASS: $name $interface $url"
    	else
    		invalid=$((invalid+1))
    		echo "INVALID: $name $interface $url"
    	fi
    done < "$catalog"
    
    # clean up temporary files
    rm "$catalog" "$san"
    
    if [[ $invalid -gt 0 ]]; then
    	echo "${invalid} legacy certificates were detected. Update your certificates to include a SAN field."
    	exit 1
    else
    	echo "All HTTPS certificates for this cloud are valid."
    fi
    Copy to Clipboard Toggle word wrap
  2. 运行脚本。
  3. 将脚本报告为 INVALID 的任何证书替换为包含 SAN 字段的证书。
重要

在安装 OpenShift Container Platform 4.10 之前,您必须替换所有旧的 HTTPS 证书,或将集群更新至该版本。旧证书将被拒绝,并显示以下信息:

x509: certificate relies on legacy Common Name field, use SANs instead
Copy to Clipboard Toggle word wrap

1.3.1. 手动为旧 HTTPS 证书扫描 RHOSP 端点

从 OpenShift Container Platform 4.10 开始,HTTPS 证书必须包含主题替代名称(SAN)字段。如果您无法访问 "Scanning RHOSP 端点用于旧 HTTPS 证书"中列出的预备工具,请执行以下步骤为仅包含 CommonName 字段的传统证书扫描 Red Hat OpenStack Platform (RHOSP)目录中的每个 HTTPS 端点。

重要

OpenShift Container Platform 在安装或升级前不会检查底层 RHOSP 基础架构是否有旧证书。使用以下步骤自己检查这些证书。在安装或升级集群前无法更新旧证书将导致集群无法正常工作。

流程

  1. 在命令行中运行以下命令查看 RHOSP 公共端点的 URL:

    $ openstack catalog list
    Copy to Clipboard Toggle word wrap

    记录命令返回的每个 HTTPS 端点的 URL。

  2. 对于每个公共端点,请注意主机和端口。

    提示

    通过删除方案、端口和路径来确定端点的主机。

  3. 对于每个端点,运行以下命令来提取证书的 SAN 字段:

    1. 设置 host 变量:

      $ host=<host_name>
      Copy to Clipboard Toggle word wrap
    2. 设置 port 变量:

      $ port=<port_number>
      Copy to Clipboard Toggle word wrap

      如果端点的 URL 中没有包括端口,使用值 443

    3. 检索证书的 SAN 字段:

      $ openssl s_client -showcerts -servername "$host" -connect "$host:$port" </dev/null 2>/dev/null \
          | openssl x509 -noout -ext subjectAltName
      Copy to Clipboard Toggle word wrap

      输出示例

      X509v3 Subject Alternative Name:
          DNS:your.host.example.net
      Copy to Clipboard Toggle word wrap

      对于每个端点,查找类似于上例的输出。如果没有端点的输出,则该端点的证书无效,必须重新发布。

重要

在安装 OpenShift Container Platform 4.10 之前,您必须替换所有旧的 HTTPS 证书,或将集群更新至该版本。旧证书被拒绝,并显示以下信息:

x509: certificate relies on legacy Common Name field, use SANs instead
Copy to Clipboard Toggle word wrap

在 Red Hat OpenStack Platform (RHOSP) 上安装使用单根 I/O 虚拟化 (SR-IOV) 或 Open vSwitch 的 OpenShift Container Platform 集群前,您必须了解每个技术的要求,然后执行准备任务。

如果您的部署使用了 SR-IOV 或 OVS-DPDK,您必须满足以下条件:

  • RHOSP 计算节点必须使用支持巨页的类别。

2.1.1. 使用 SR-IOV 的 RHOSP 上的集群的要求

要使用带有部署的单根 I/O 虚拟化 (SR-IOV),您必须满足以下要求:

  • 规划 Red Hat OpenStack Platform( RHOSP) SR-IOV 部署
  • OpenShift Container Platform 必须支持您使用的 NIC。有关支持的 NIC 列表,请参阅"网络"文档中的"单一根 I/O 虚拟化 (SR-IOV) 硬件网络"子网络"部分。
  • 对于具有附加 SR-IOV NIC 的每个节点,您的 RHOSP 集群必须具有:

    • 来自 RHOSP 配额的一个实例
    • 附加到机器子网的端口
    • 每个 SR-IOV 虚拟功能有一个端口
    • 类别至少有 16 GB 内存、4 个 vCPU 和 25 GB 存储空间
  • SR-IOV 部署通常采用性能优化,如专用或隔离的 CPU。为获得最佳性能,请将您的底层 RHOSP 部署配置为使用这些优化,然后在优化的基础架构上运行 OpenShift Container Platform 计算机器。

2.1.2. 使用 OVS-DPDK 的 RHOSP 上的集群的要求

要将 Open vSwitch 与具有部署的 Data Plane Development Kit (OVS-DPDK) 搭配使用,您必须满足以下要求:

  • 请参阅在网络功能虚拟化规划和配置指南中的规划您的 OVS-DPDK 部署部分,以规划您的 Red Hat OpenStack Platform (RHOSP) OVS-DPDK 部署。
  • 根据在网络功能虚拟化规划和配置指南中的配置 OVS-DPDK 部署部分来配置 RHOSP OVS-DPDK 部署。

2.2. 准备安装使用 SR-IOV 的集群

在安装使用 SR-IOV 的集群前,您必须配置 RHOSP。

2.2.1. 为计算机器创建 SR-IOV 网络

如果您的 Red Hat OpenStack Platform(RHOSP)部署支持 单根 I/O 虚拟化(SR-IOV),您可以置备计算机器在其上运行的 SR-IOV 网络。

注意

以下说明将创建外部扁平网络和一个可附加到计算机器的外部基于 VLAN 的网络。根据您的 RHOSP 部署,可能需要其他网络类型。

先决条件

  • 集群支持 SR-IOV。

    注意

    如果您不确定集群支持什么,请参阅 OpenShift Container Platform SR-IOV 硬件网络文档。

  • 作为 RHOSP 部署的一部分,您创建了 Radio 和 uplink 提供商网络。所有示例命令都使用名称 Radiouplink 来 代表这些网络。

流程

  1. 在命令行中创建一个单体 RHOSP 网络:

    $ openstack network create radio --provider-physical-network radio --provider-network-type flat --external
    Copy to Clipboard Toggle word wrap
  2. 创建 uplink RHOSP 网络:

    $ openstack network create uplink --provider-physical-network uplink --provider-network-type vlan --external
    Copy to Clipboard Toggle word wrap
  3. 为无线网络创建子网:

    $ openstack subnet create --network radio --subnet-range <radio_network_subnet_range> radio
    Copy to Clipboard Toggle word wrap
  4. 为 uplink 网络创建一个子网:

    $ openstack subnet create --network uplink --subnet-range <uplink_network_subnet_range> uplink
    Copy to Clipboard Toggle word wrap

2.3. 准备安装使用 OVS-DPDK 的集群

在安装使用 SR-IOV 的集群前,您必须配置 RHOSP。

执行预安装任务后,请按照在 RHOSP 安装说明中相关的 OpenShift Container Platform 安装集群。然后,在此页面中执行"下一步"下的任务。

2.4. 后续步骤

第 3 章 使用自定义在 OpenStack 上安装集群

在 OpenShift Container Platform 版本 4.13 中,您可以在 Red Hat OpenStack Platform(RHOSP)上安装自定义集群。要自定义安装,请在安装集群前修改 install-config.yaml 中的参数。

3.1. 先决条件

为支持 OpenShift Container Platform 安装,您的 Red Hat OpenStack Platform(RHOSP)配额必须满足以下要求:

Expand
表 3.1. RHOSP 上默认 OpenShift Container Platform 集群的建议资源
resourcevalue

浮动 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 订阅。

负载平衡基础架构必须满足以下要求:

  1. API 负载均衡器 :提供一个通用端点,供用户(包括人工和机器)与平台交互和配置。配置以下条件:

    • 仅第 4 层负载均衡.这可被称为 Raw TCP 或 SSL Passthrough 模式。
    • 无状态负载平衡算法。这些选项根据负载均衡器的实施而有所不同。
    重要

    不要为 API 负载均衡器配置会话持久性。为 Kubernetes API 服务器配置会话持久性可能会导致出现过量 OpenShift Container Platform 集群应用程序流量,以及过量的在集群中运行的 Kubernetes API。

    在负载均衡器的前端和后端配置以下端口:

    Expand
    表 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 秒探测一次,有两个成功请求处于健康状态,三个成为不健康的请求是经过良好测试的值。

  2. 应用程序入口负载均衡器 :为应用程序流量从集群外部流提供入口点。OpenShift Container Platform 集群需要正确配置入口路由器。

    配置以下条件:

    • 仅第 4 层负载均衡.这可被称为 Raw TCP 或 SSL Passthrough 模式。
    • 建议根据可用选项以及平台上托管的应用程序类型,使用基于连接的或基于会话的持久性。
    提示

    如果应用程序入口负载均衡器可以看到客户端的真实 IP 地址,启用基于 IP 的会话持久性可以提高使用端到端 TLS 加密的应用程序的性能。

    在负载均衡器的前端和后端配置以下端口:

    Expand
    表 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 节点。

本节提供了一个满足用户管理的负载均衡器部署的集群的负载均衡要求的 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
Copy to Clipboard Toggle word wrap
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 进程是否在侦听端口 64432262344380

3.3. OpenShift Container Platform 互联网访问

在 OpenShift Container Platform 4.13 中,您需要访问互联网来安装集群。

您必须具有以下互联网访问权限:

  • 访问 OpenShift Cluster Manager Hybrid Cloud Console 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
  • 访问 Quay.io,以获取安装集群所需的软件包。
  • 获取执行集群更新所需的软件包。
重要

如果您的集群无法直接访问互联网,则可以在置备的某些类型的基础架构上执行受限网络安装。在此过程中,您可以下载所需的内容,并使用它为镜像 registry 填充安装软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群前,您要更新镜像 registry 的内容。

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:

  1. 在 RHOSP CLI 中以管理员身份,将 swiftoperator 角色添加到将要访问 Swift 的帐户中:

    $ openstack role add --user <user> --project <project> swiftoperator
    Copy to Clipboard Toggle word wrap

您的 RHOSP 部署现在可以将 Swift 用于镜像 registry。

在 Red Hat OpenStack Platform(RHOSP)上安装集群后,您可以使用位于 registry 存储的特定可用区的 Cinder 卷。

流程

  1. 创建一个 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>
    Copy to Clipboard Toggle word wrap
    注意

    OpenShift Container Platform 不验证您选择的可用区是否存在。应用配置前,请验证可用性区域的名称。

  2. 在命令行中应用配置:

    $ oc apply -f <storage_class_file_name>
    Copy to Clipboard Toggle word wrap

    输出示例

    storageclass.storage.k8s.io/custom-csi-storageclass created
    Copy to Clipboard Toggle word wrap

  3. 创建一个 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
    Copy to Clipboard Toggle word wrap
    1
    输入命名空间 openshift-image-registry。此命名空间允许 Cluster Image Registry Operator 使用 PVC。
    2
    可选:调整卷大小。
    3
    输入您创建的存储类的名称。
  4. 在命令行中应用配置:

    $ oc apply -f <pvc_file_name>
    Copy to Clipboard Toggle word wrap

    输出示例

    persistentvolumeclaim/csi-pvc-imageregistry created
    Copy to Clipboard Toggle word wrap

  5. 将镜像 registry 配置中的原始持久性卷声明替换为新声明:

    $ oc patch configs.imageregistry.operator.openshift.io/cluster --type 'json' -p='[{"op": "replace", "path": "/spec/storage/pvc/claim", "value": "csi-pvc-imageregistry"}]'
    Copy to Clipboard Toggle word wrap

    输出示例

    config.imageregistry.operator.openshift.io/cluster patched
    Copy to Clipboard Toggle word wrap

    接下来的几分钟内,配置将更新。

验证

确认 registry 正在使用您定义的资源:

  1. 验证 PVC 声明值是否与您在 PVC 定义中提供的名称相同:

    $ oc get configs.imageregistry.operator.openshift.io/cluster -o yaml
    Copy to Clipboard Toggle word wrap

    输出示例

    ...
    status:
        ...
        managementState: Managed
        pvc:
          claim: csi-pvc-imageregistry
    ...
    Copy to Clipboard Toggle word wrap

  2. 验证 PVC 的状态是否为 Bound

    $ oc get pvc -n openshift-image-registry csi-pvc-imageregistry
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                   STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS             AGE
    csi-pvc-imageregistry  Bound    pvc-72a8f9c9-f462-11e8-b6b6-fa163e18b7b5   100Gi      RWO            custom-csi-storageclass  11m
    Copy to Clipboard Toggle word wrap

3.6. 验证外部网络访问

OpenShift Container Platform 安装过程需要外部网络访问权限。您必须为其提供外部网络值,否则部署会失败。在开始这个过程前,请验证 Red Hat OpenStack Platform(RHOSP)中是否存在具有外部路由器类型的网络。

流程

  1. 使用 RHOSP CLI 验证"外部"网络的名称和 ID:

    $ openstack network list --long -c ID -c Name -c "Router Type"
    Copy to Clipboard Toggle word wrap

    输出示例

    +--------------------------------------+----------------+-------------+
    | ID                                   | Name           | Router Type |
    +--------------------------------------+----------------+-------------+
    | 148a8023-62a7-4672-b018-003462f8d7dc | public_network | External    |
    +--------------------------------------+----------------+-------------+
    Copy to Clipboard Toggle word wrap

网络列表中会显示具有外部路由器类型的网络。如果至少有一个没有,请参阅创建默认浮动 IP 网络创建默认供应商网络

重要

如果外部网络的 CIDR 范围与其中一个默认网络范围重叠,您必须在开始安装过程前更改 install-config.yaml 文件中的匹配网络范围。

默认的网络范围为:

Expand
网络范围

machineNetwork

10.0.0.0/16

serviceNetwork

172.30.0.0/16

clusterNetwork

10.128.0.0/14

警告

如果安装程序找到多个同名的网络,它会随机设置其中之一。为避免这种行为,请在 RHOSP 中为资源创建唯一名称。

注意

如果启用了 Neutron 中继服务插件,则默认创建一个中继端口。如需更多信息,请参阅 Neutron 中继端口

3.7. 为安装程序定义参数

OpenShift Container Platform 安装程序依赖于一个名为 clouds.yaml 的文件。该文件描述了 Red Hat OpenStack Platform(RHOSP)配置参数,包括项目名称、登录信息和授权服务 URL。

流程

  1. 创建 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'
      Copy to Clipboard Toggle word wrap
  2. 如果您的 RHOSP 安装使用自签名证书颁发机构(CA)证书进行端点身份验证:

    1. 将证书颁发机构文件复制到您的机器中。
    2. cacerts 键添加到 clouds.yaml 文件。该值必须是到 CA 证书的绝对、不可 root 访问的路径:

      clouds:
        shiftstack:
          ...
          cacert: "/etc/pki/ca-trust/source/anchors/ca.crt.pem"
      Copy to Clipboard Toggle word wrap
      提示

      使用自定义 CA 证书运行安装程序后,您可以通过编辑 cloud-provider-config keymap 中的 ca-cert.pem 键的值来更新证书。在命令行中运行:

      $ oc edit configmap -n openshift-config cloud-provider-config
      Copy to Clipboard Toggle word wrap
  3. clouds.yaml 文件放在以下位置之一:

    1. OS_CLIENT_CONFIG_FILE 环境变量的值
    2. 当前目录
    3. 特定于 Unix 的用户配置目录,如 ~/.config/openstack/clouds.yaml
    4. 特定于 Unix 的站点配置目录,如 /etc/openstack/clouds.yaml

      安装程序会按顺序搜索 clouds.yaml

3.8. 设置 OpenStack Cloud Controller Manager 选项

另外,您可以编辑集群的 OpenStack Cloud Controller Manager (CCM) 配置。此配置控制 OpenShift Container Platform 与 Red Hat OpenStack Platform (RHOSP) 的交互方式。

有关配置参数的完整列表,请参阅"安装 OpenStack"文档中的"OpenStack Cloud Controller Manager 参考指南"页面。

流程

  1. 如果您还没有为集群生成清单文件,请运行以下命令生成这些文件:

    $ openshift-install --dir <destination_directory> create manifests
    Copy to Clipboard Toggle word wrap
  2. 在文本编辑器中,打开 cloud-provider 配置清单文件。例如:

    $ vi openshift/manifests/cloud-provider-config.yaml
    Copy to Clipboard Toggle word wrap
  3. 根据 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
    
    #...
    Copy to Clipboard Toggle word wrap
    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 负载均衡。

  4. 保存对文件的更改并开始安装。

    提示

    您可以在运行安装程序后更新云供应商配置。在命令行中运行:

    $ oc edit configmap -n openshift-config cloud-provider-config
    Copy to Clipboard Toggle word wrap

    保存更改后,您的集群将需要一些时间重新配置其自身。如果您的任一节点都没有 SchedulingDisabled 状态,则此过程已完成。

3.9. 获取安装程序

在安装 OpenShift Container Platform 前,将安装文件下载到您用于安装的主机上。

先决条件

  • 您有一台运行 Linux 或 macOS 的计算机,本地磁盘空间为 500 MB。

流程

  1. 访问 OpenShift Cluster Manager 站点的 Infrastructure Provider 页面。如果您有红帽帐户,请使用您的凭证登录。如果没有,请创建一个帐户。
  2. 选择您的基础架构供应商。
  3. 进入到安装类型的页面,下载与您的主机操作系统和架构对应的安装程序,并将该文件放在您要存储安装配置文件的目录中。

    重要

    安装程序会在用来安装集群的计算机上创建几个文件。在完成集群安装后,您必须保留安装程序和安装程序所创建的文件。这两个文件都需要删除集群。

    重要

    删除安装程序创建的文件不会删除您的集群,即使集群在安装过程中失败也是如此。要删除集群,请为特定云供应商完成 OpenShift Container Platform 卸载流程。

  4. 提取安装程序。例如,在使用 Linux 操作系统的计算机上运行以下命令:

    $ tar -xvf openshift-install-linux.tar.gz
    Copy to Clipboard Toggle word wrap
  5. 从 Red Hat OpenShift Cluster Manager 下载安装 pull secret。此 pull secret 允许您与所含授权机构提供的服务进行身份验证,这些服务包括为 OpenShift Container Platform 组件提供容器镜像的 Quay.io。

3.10. 创建安装配置文件

您可以自定义在 Red Hat OpenStack Platform(RHOSP)上安装的 OpenShift Container Platform 集群。

先决条件

  • 获取 OpenShift Container Platform 安装程序和集群的 pull secret。
  • 在订阅级别获取服务主体权限。

流程

  1. 创建 install-config.yaml 文件。

    1. 进入包含安装程序的目录并运行以下命令:

      $ ./openshift-install create install-config --dir <installation_directory> 
      1
      Copy to Clipboard Toggle word wrap
      1
      对于 <installation_directory>,请指定要存储安装程序创建的文件的目录名称。

      在指定目录时:

      • 验证该目录是否具有执行权限。在安装目录中运行 Terraform 二进制文件需要这个权限。
      • 使用空目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。

        注意

        始终删除 ~/.powervs 目录,以避免重复使用过时的配置。运行以下命令:

        $ rm -rf ~/.powervs
        Copy to Clipboard Toggle word wrap
    2. 在提示符处,提供云的配置详情:

      1. 可选: 选择用于访问集群机器的 SSH 密钥。

        注意

        对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定 ssh-agent 进程使用的 SSH 密钥。

      2. 选择 openstack 作为目标平台。
      3. 指定用于安装集群的 Red Hat OpenStack Platform(RHOSP)外部网络名称。
      4. 指定用于从外部访问 OpenShift API 的浮动 IP 地址。
      5. 指定至少有 16 GB RAM 用于 control plane 节点,以及计算节点的 8 GB RAM。
      6. 选择集群要部署到的基域。所有 DNS 记录都将是这个基域的子域,并且还包括集群名称。
      7. 为集群输入一个名称。名称长度必须为 14 个或更少字符。
      8. 粘贴 Red Hat OpenShift Cluster Manager 中的 pull secret
  2. 修改 install-config.yaml 文件。您可以在"安装配置参数"部分找到有关可用参数的更多信息。
  3. 备份 install-config.yaml 文件,以便您可以使用它安装多个集群。

    重要

    install-config.yaml 文件会在安装过程中消耗掉。如果要重复使用此文件,必须现在备份。

3.10.1. 在安装过程中配置集群范围的代理

生产环境可能会拒绝直接访问互联网,而是提供 HTTP 或 HTTPS 代理。您可以通过在 install-config.yaml 文件中配置代理设置,将新的 OpenShift Container Platform 集群配置为使用代理。

先决条件

  • 您有一个现有的 install-config.yaml 文件。
  • 您检查了集群需要访问的站点,并确定它们中的任何站点是否需要绕过代理。默认情况下,所有集群出口流量都经过代理,包括对托管云供应商 API 的调用。如果需要,您将在 Proxy 对象的 spec.noProxy 字段中添加站点来绕过代理。

    注意

    Proxy 对象 status.noProxy 字段使用安装配置中的 networking.machineNetwork[].cidrnetworking.clusterNetwork[].cidrnetworking.serviceNetwork[] 字段的值填充。

    对于在 Amazon Web Services(AWS)、Google Cloud Platform(GCP)、Microsoft Azure 和 Red Hat OpenStack Platform(RHOSP)上安装,Proxy 对象 status.noProxy 字段也会使用实例元数据端点填充(169.254.169.254)。

流程

  1. 编辑 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
    Copy to Clipboard Toggle word wrap
    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 配置映射的策略。允许的值是 ProxyonlyAlways。仅在配置了 http/https 代理时,使用 Proxyonly 引用 user-ca-bundle 配置映射。使用 Always 始终引用 user-ca-bundle 配置映射。默认值为 Proxyonly
    注意

    安装程序不支持代理的 readinessEndpoints 字段。

    注意

    如果安装程序超时,重启并使用安装程序的 wait-for 命令完成部署。例如:

    $ ./openshift-install wait-for install-complete --log-level debug
    Copy to Clipboard Toggle word wrap
  2. 保存该文件并在安装 OpenShift Container Platform 时引用。

安装程序会创建一个名为 cluster 的集群范围代理,该代理 使用 提供的 install-config.yaml 文件中的代理设置。如果没有提供代理设置,仍然会创建一个 cluster Proxy 对象,但它会有一个空 spec

注意

只支持名为 clusterProxy 对象,且无法创建额外的代理。

3.11. 安装配置参数

在部署 OpenShift Container Platform 集群前,您可以提供参数值来描述托管集群的云平台中的帐户,并选择性地自定义集群平台。在创建 install-config.yaml 安装配置文件时,您可以通过命令行为所需参数提供值。如果自定义集群,您可以修改 install-config.yaml 文件以提供有关平台的更多详情。

重要

安装后,您无法更改 install-config.yaml 文件中的这些参数。

3.11.1. 所需的配置参数

下表描述了所需的安装配置参数:

Expand
表 3.4. 所需的参数
参数描述

apiVersion

install-config.yaml 内容的 API 版本。当前版本为 v1。安装程序可能还支持旧的 API 版本。

字符串

baseDomain

云供应商的基域。基域用于创建到 OpenShift Container Platform 集群组件的路由。集群的完整 DNS 名称是 baseDomainmetadata.name 参数值的组合,其格式为 <metadata.name>.<baseDomain>

完全限定域名或子域名,如 example.com

metadata

Kubernetes 资源 ObjectMeta,其中只消耗 name 参数。

对象

metadata.name

集群的名称。集群的 DNS 记录是 {{.metadata.name}}.{{.baseDomain}} 的子域。

小写字母、连字符(-)和句点(.)字符串,如 dev。字符串长度必须为 14 个字符或更少。

platform

要执行安装的具体平台配置: alibabacloudawsbaremetalazuregcpibmcloudnutanixopenstackovirtpowervsvsphere{}。有关 platform.<platform> 参数的更多信息,请参考下表中您的特定平台。

对象

pullSecret

从 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"
      }
   }
}
Copy to Clipboard Toggle word wrap

3.11.2. 网络配置参数

您可以根据现有网络基础架构的要求自定义安装配置。例如,您可以扩展集群网络的 IP 地址块,或者提供不同于默认值的不同 IP 地址块。

仅支持 IPv4 地址。

注意

Red Hat OpenShift Data Foundation 灾难恢复解决方案不支持 Globalnet。对于区域灾难恢复场景,请确保为每个集群中的集群和服务网络使用非重叠的专用 IP 地址。

Expand
表 3.5. 网络参数
参数描述

networking

集群网络的配置。

对象

注意

您不能在安装后更改 networking 对象指定的参数。

networking.networkType

要安装的 Red Hat OpenShift Networking 网络插件。

OpenShiftSDNOVNKubernetesOpenShiftSDN 是 all-Linux 网络的 Container Network Interface (CNI)插件。OVNKubernetes 是 Linux 网络和包含 Linux 和 Windows 服务器的混合网络的 CNI 插件。默认值为 OVNKubernetes

networking.clusterNetwork

pod 的 IP 地址块。

默认值为 10.128.0.0/14,主机前缀为 /23

如果您指定了多个 IP 地址块,块不得重叠。

对象数组。例如:

networking:
  clusterNetwork:
  - cidr: 10.128.0.0/14
    hostPrefix: 23
Copy to Clipboard Toggle word wrap

networking.clusterNetwork.cidr

使用 networking.clusterNetwork 时需要此项。IP 地址块。

IPv4 网络。

无类别域间路由(CIDR)表示法中的 IP 地址块。IPv4 块的前缀长度介于 0 到 32 之间

networking.clusterNetwork.hostPrefix

分配给每个节点的子网前缀长度。例如,如果 hostPrefix 设为 23,则每个节点从 given cidr 中分配 a /23 子网。hostPrefix23 提供 510(2^(32 - 23)- 2)pod IP 地址。

子网前缀。

默认值为 23

networking.serviceNetwork

服务的 IP 地址块。默认值为 172.30.0.0/16

OpenShift SDN 和 OVN-Kubernetes 网络插件只支持服务网络的一个 IP 地址块。

CIDR 格式具有 IP 地址块的数组。例如:

networking:
  serviceNetwork:
   - 172.30.0.0/16
Copy to Clipboard Toggle word wrap

networking.machineNetwork

机器的 IP 地址块。

如果您指定了多个 IP 地址块,块不得重叠。

对象数组。例如:

networking:
  machineNetwork:
  - cidr: 10.0.0.0/16
Copy to Clipboard Toggle word wrap

networking.machineNetwork.cidr

使用 networking.machineNetwork 时需要此项。IP 地址块。libvirt 和 IBM Power Virtual Server 以外的所有平台的默认值为 10.0.0.0/16。对于 libvirt,默认值 为 192.168.126.0/24。对于 IBM Power Virtual Server,默认值为 192.168.0.0/24

CIDR 表示法中的 IP 网络块。

例如: 10.0.0.0/16

注意

networking.machineNetwork 设置为与首选 NIC 所在的 CIDR 匹配。

3.11.3. 可选的配置参数

下表描述了可选的安装配置参数:

Expand
表 3.6. 可选参数
参数描述

additionalTrustBundle

添加到节点可信证书存储中的 PEM 编码 X.509 证书捆绑包。配置代理时,也可以使用此信任捆绑包。

字符串

功能

控制可选核心组件的安装。您可以通过禁用可选组件来减少 OpenShift Container Platform 集群的空间。如需更多信息,请参阅安装中的"集群功能"页面。

字符串数组

capabilities.baselineCapabilitySet

选择要启用的一组初始可选功能。有效值为 Nonev4.11v4.12vCurrent。默认值为 vCurrent

字符串

capabilities.additionalEnabledCapabilities

将可选功能集合扩展到您在 baselineCapabilitySet 中指定的范围。您可以在此参数中指定多个功能。

字符串数组

cpuPartitioningMode

启用工作负载分区,它会隔离 OpenShift Container Platform 服务、集群管理工作负载和基础架构 pod,以便在保留的一组 CPU 上运行。您只能在安装过程中启用工作负载分区。您不能在安装后禁用它。虽然此字段启用工作负载分区,但它不会将工作负载配置为使用特定的 CPU。如需更多信息,请参阅 Scalability and Performance 部分中的 Workload partitioning 页面。

NoneAllNodes.None 是默认值。

Compute

组成计算节点的机器的配置。

MachinePool 对象的数组。

compute.architecture

决定池中机器的指令集合架构。目前,不支持具有不同架构的集群。所有池都必须指定相同的架构。有效值为默认值: amd64

字符串

compute: 超线程:

是否在计算机器上启用或禁用并发多 线程或超线程。默认情况下,启用并发多线程以提高机器内核的性能。

重要

如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。

enabledDisabled

compute.name

使用 compute 时需要此项。机器池的名称。

worker

compute.platform

使用 compute 时需要此项。使用此参数指定托管 worker 机器的云供应商。此参数值必须与 controlPlane.platform 参数值匹配。

alibabacloud,aws,azure,gcp,ibmcloud,nutanix,openstack,ovirt,powervs,vsphere, 或 {}

compute.replicas

要置备的计算机器数量,也称为 worker 机器。

大于或等于 2 的正整数。默认值为 3

featureSet

为功能集启用集群。功能集是 OpenShift Container Platform 功能的集合,默认情况下不启用。有关在安装过程中启用功能集的更多信息,请参阅"使用功能门启用功能"。

字符串.要启用的功能集的名称,如 TechPreviewNoUpgrade

controlPlane

组成 control plane 的机器的配置。

MachinePool 对象的数组。

controlPlane.architecture

决定池中机器的指令集合架构。目前,不支持具有不同架构的集群。所有池都必须指定相同的架构。有效值为默认值: amd64

字符串

controlPlane: 超线程:

是否在 control plane 机器上启用或禁用并发多 线程或超线程。默认情况下,启用并发多线程以提高机器内核的性能。

重要

如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。

enabledDisabled

controlPlane.name

使用 controlPlane 时需要此项。机器池的名称。

master

controlPlane.platform

使用 controlPlane 时需要此项。使用此参数指定托管 control plane 机器的云供应商。此参数值必须与 compute.platform 参数值匹配。

alibabacloud,aws,azure,gcp,ibmcloud,nutanix,openstack,ovirt,powervs,vsphere, 或 {}

controlPlane.replicas

要置备的 control plane 机器数量。

唯一支持的值是 3,这是默认值。

credentialsMode

Cloud Credential Operator(CCO)模式。在没有指定模式时,CCO 会动态尝试决定提供的凭证的功能,在支持多个模式的平台上首选 mint 模式。

注意

不是所有 CCO 模式都支持所有云供应商。如需有关 CCO 模式的更多信息,请参阅集群 Operator 参考内容中的 Cloud Credential Operator 条目。

注意

如果您的 AWS 帐户启用了服务控制策略 (SCP),您必须将 credentialsMode 参数配置为 MintPassthroughManual

MintPassthroughManual 或空字符串("")。

imageContentSources

release-image 内容的源和存储库。

对象数组。包括一个 source 以及可选的 mirrors,如本表的以下行所述。

imageContentSources.source

使用 imageContentSources 时需要此项。指定用户在镜像拉取规格中引用的存储库。

字符串

imageContentSources.mirrors

指定可能还包含同一镜像的一个或多个存储库。

字符串数组

publish

如何发布或公开集群的面向用户的端点,如 Kubernetes API、OpenShift 路由。

内部或外部 .默认值为 External

在非云平台上不支持将此字段设置为 Internal

重要

如果字段的值设为 Internal,集群就会变得无法正常工作。如需更多信息,请参阅 BZ#1953035

sshKey

用于验证对集群机器的访问的 SSH 密钥。

注意

对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定 ssh-agent 进程使用的 SSH 密钥。

例如,sshKey: ssh-ed25519 AAAA..

  1. 不是所有 CCO 模式都支持所有云供应商。有关 CCO 模式的更多信息,请参阅身份验证和授权内容中的"管理云供应商凭证"条目。

下表中描述了其他 RHOSP 配置参数:

Expand
表 3.7. 其他 RHOSP 参数
参数描述

compute.platform.openstack.rootVolume.size

对于计算机器,以 GB 为单位的根卷大小。如果没有设置这个值,机器将使用临时存储。

整数,如 30

compute.platform.openstack.rootVolume.type

对于计算机器,根卷的类型。

字符串,如 performance

controlPlane.platform.openstack.rootVolume.size

对于 control plane 机器,以 GB 为单位表示的根卷大小。如果没有设置这个值,机器将使用临时存储。

整数,如 30

controlPlane.platform.openstack.rootVolume.type

对于 control plane 机器,根卷的类型。

字符串,如 performance

platform.openstack.cloud

要使用的 RHOSP 云名称,来自于 clouds.yaml 文件中的云列表。

字符串,如 MyCloud

platform.openstack.externalNetwork

用于安装的 RHOSP 外部网络名称。

字符串,如 external

platform.openstack.computeFlavor

用于 control plane 和计算机器的 RHOSP 类别。

此属性已弃用。要将 flavor 用作所有机器池的默认值,请将其添加为 platform.openstack.defaultMachinePlatform 属性中的 type 键的值。您还可以分别为每个机器池设置 flavor 值。

字符串,如 m1.xlarge

3.11.5. 可选的 RHOSP 配置参数

下表描述了可选的 RHOSP 配置参数:

Expand
表 3.8. 可选的 RHOSP 参数
参数描述

compute.platform.openstack.additionalNetworkIDs

与计算机器关联的其他网络。不为额外网络创建允许的地址对。

一个或多个 UUID 的列表作为字符串。例如: fa806b2f-ac49-4bce-b9db-124bc64209bf

compute.platform.openstack.additionalSecurityGroupIDs

与计算机器关联的其他安全组。

一个或多个 UUID 的列表作为字符串。例如,7ee219f3-d2e9-48a1-96c2-e7429f1b0da7

compute.platform.openstack.zones

RHOSP Compute(Nova)可用区(AZ)在其中安装机器。如果没有设置此参数,安装程序会依赖于配置了 RHOSP 管理员的 Nova 的默认设置。

在使用 Kuryr 的集群上,RHOSP Octavia 不支持可用区。负载均衡器,如果您使用 Amphora 供应商驱动程序,则依赖 Amphora 虚拟机的 OpenShift Container Platform 服务不会根据此属性的值创建。

字符串列表。例如: ["zone-1", "zone-2"]

compute.platform.openstack.rootVolume.zones

对于计算机器,可在其上安装根卷的可用性区域。如果没有为此参数设置值,安装程序会选择默认的可用性区域。

字符串列表,如 ["zone-1", "zone-2"]

compute.platform.openstack.serverGroupPolicy

要应用到池中包含计算机器的组策略。您不能在创建后更改服务器组策略或关系。支持的选项包括 anti-affinity, soft-affinity, 和 soft-anti-affinity默认值为 soft-anti-affinity

affinity 策略可防止迁移,因此会影响 RHOSP 升级。不支持 affinity 策略。

如果使用严格的 anti-affinity 策略,实例迁移过程中需要额外的 RHOSP 主机。

应用到机器池的服务器组策略。例如,soft-affinity

controlPlane.platform.openstack.additionalNetworkIDs

与 control plane 机器关联的额外网络。不为额外网络创建允许的地址对。

附加到 control plane 机器的额外网络也会附加到 bootstrap 节点。

一个或多个 UUID 的列表作为字符串。例如: fa806b2f-ac49-4bce-b9db-124bc64209bf

controlPlane.platform.openstack.additionalSecurityGroupIDs

与 control plane 机器关联的其他安全组。

一个或多个 UUID 的列表作为字符串。例如,7ee219f3-d2e9-48a1-96c2-e7429f1b0da7

controlPlane.platform.openstack.zones

RHOSP Compute(Nova)可用区(AZ)在其中安装机器。如果没有设置此参数,安装程序会依赖于配置了 RHOSP 管理员的 Nova 的默认设置。

在使用 Kuryr 的集群上,RHOSP Octavia 不支持可用区。负载均衡器,如果您使用 Amphora 供应商驱动程序,则依赖 Amphora 虚拟机的 OpenShift Container Platform 服务不会根据此属性的值创建。

字符串列表。例如: ["zone-1", "zone-2"]

controlPlane.platform.openstack.rootVolume.zones

对于 control plane 机器,安装根卷的可用区。如果没有设置这个值,安装程序会选择默认可用区。

字符串列表,如 ["zone-1", "zone-2"]

controlPlane.platform.openstack.serverGroupPolicy

要应用到池中包含 control plane 机器的组的服务器组策略。您不能在创建后更改服务器组策略或关系。支持的选项包括 anti-affinity, soft-affinity, 和 soft-anti-affinity默认值为 soft-anti-affinity

affinity关联性 策略会阻止迁移,因此会影响 RHOSP 升级。不支持 affinity 策略。

如果使用严格的 anti-affinity 策略,实例迁移过程中需要额外的 RHOSP 主机。

应用到机器池的服务器组策略。例如,soft-affinity

platform.openstack.clusterOSImage

安装程序从中下载 RHCOS 镜像的位置。

您必须设置此参数才能在受限网络中执行安装。

HTTP 或 HTTPS URL,可选使用 SHA-256 校验和。

例如: http://mirror.example.com/images/rhcos-43.81.201912131630.0-openstack.x86_64.qcow2.gz?sha256=ffebbd68e8a1f2a245ca19522c16c86f67f9ac8e4e0c1f0a812b068b16f7265d。该值也可以是现有 Glance 镜像的名称,如 my-rhcos

platform.openstack.clusterOSImageProperties

在 Glance 中添加至安装程序上传的 ClusterOSImage 的属性。如果将 platform.openstack.clusterOSImage 设置为现有的 Glance 镜像,则此属性将被忽略。

您可以使用此属性超过每个节点 26 个 PV 的 RHOSP 的默认持久性卷(PV)限值。要超过这个限制,请将 virtio- scsi_model 属性值设置为 virtio-scsi, 并将 hw_disk_bus 值设置为 scsi

您还可以使用此属性通过包含值为 yeshw_qemu_guest_agent 属性来启用 QEMU 客户机代理。

一组字符串属性。例如:

clusterOSImageProperties:
    hw_scsi_model: "virtio-scsi"
    hw_disk_bus: "scsi"
    hw_qemu_guest_agent: "yes"
Copy to Clipboard Toggle word wrap

platform.openstack.defaultMachinePlatform

默认机器池平台配置。

{
   "type": "ml.large",
   "rootVolume": {
      "size": 30,
      "type": "performance"
   }
}
Copy to Clipboard Toggle word wrap

platform.openstack.ingressFloatingIP

与 Ingress 端口关联的现有浮动 IP 地址。要使用此属性,还必须定义 platform.openstack.externalNetwork 属性。

IP 地址,如 128.0.0.1

platform.openstack.apiFloatingIP

与 API 负载均衡器关联的现有浮动 IP 地址。要使用此属性,还必须定义 platform.openstack.externalNetwork 属性。

IP 地址,如 128.0.0.1

platform.openstack.externalDNS

集群实例用于 DNS 解析的外部 DNS 服务器的 IP 地址。

IP 地址列表作为字符串。例如 ,["8.8.8.8", "192.168.1.12"]

platform.openstack.loadbalancer

是否使用默认的内部负载均衡器。如果值设为 UserManaged,则此默认负载均衡器被禁用,以便您可以部署使用外部用户管理的负载均衡器的集群。如果没有设置该参数,或者值为 OpenShiftManagedDefault,集群将使用默认负载均衡器。

UserManagedOpenShiftManagedDefault.

platform.openstack.machinesSubnet

集群节点使用的 RHOSP 子网的 UUID。在这个子网上创建节点和虚拟 IP(VIP)端口。

networking.machineNetwork 中的第一个项必须与 machine Subnet 的值匹配。

如果部署到自定义子网中,则无法将外部 DNS 服务器指定到 OpenShift Container Platform 安装程序。相反,将 DNS 添加到 RHOSP 中的子网中

作为字符串的 UUID。例如: fa806b2f-ac49-4bce-b9db-124bc64209bf

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-planeportTarget 对象。
  • 本身故障域中的所有非 control-plane portTarget 对象。
  • 机器池的 additionalNetworkIDs 列表中的所有网络。

要为机器池配置故障域,请编辑 controlPlane.platform.openstack.failureDomains 下的可用区和端口目标参数。

Expand
表 3.9. 故障域的 RHOSP 参数
参数描述

platform.openstack.failuredomains.computeAvailabilityZone

服务器的可用区。如果没有指定,则使用集群默认。

可用区的名称。例如,nova-1

platform.openstack.failuredomains.storageAvailabilityZone

root 卷的可用区。如果没有指定,则使用集群默认。

可用区的名称。例如,cinder-1

platform.openstack.failuredomains.portTargets

portTarget 对象列表,各自定义附加到故障域中机器的网络连接。

portTarget 对象列表。

platform.openstack.failuredomains.portTargets.portTarget.id

单个端口目标的 ID。要将该端口目标选为机器的第一个网络,请将此参数的值设置为 control-plane。如果此参数具有不同的值,它将被忽略。

control-plane 或任意字符串。

platform.openstack.failuredomains.portTargets.portTarget.network

必需。附加到故障域中机器的网络的名称或 ID。

包含名称或 UUID 的 network 对象。例如:

network:
  id: 8db6a48e-375b-4caa-b20b-5b9a7218bfe6
Copy to Clipboard Toggle word wrap

或:

network:
  name: my-network-1
Copy to Clipboard Toggle word wrap

platform.openstack.failuredomains.portTargets.portTarget.fixedIPs

要分配固定 IP 地址的子网。这些子网必须与端口位于同一个网络中。

subnet 对象列表。

重要

您不能组合区域字段和故障域。如果要使用故障域,则必须取消设置 controlPlane.zonecontrolPlane.rootVolume.zone 字段。

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.apiVIPsplatform.openstack.ingressVIPs 设置值。

重要

集群安装后无法调整网络的 CIDR 范围。红帽不提供有关在集群安装过程中确定范围的直接指导,因为它需要仔细考虑每个命名空间创建的 pod 数量。

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 文件。

流程

  1. install-config.yaml 文件中编辑机器的类别:

    1. 如果要使用裸机 control plane 机器,将 controlPlane.platform.openstack.type 的值改为裸机类型。
    2. compute.platform.openstack.type 的值改为一个裸机类型。
    3. 如果要将机器部署到预先存在的网络中,请将 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
      
      ...
      Copy to Clipboard Toggle word wrap

      1
      如果要使用裸机 control plane 机器,请将这个值改为一个裸机类型。
      2
      将此值更改为用于计算机器的裸机类别。
      3
      如果要使用预先存在的网络,将此值改为 RHOSP 子网的 UUID。

使用更新的 install-config.yaml 文件完成安装过程。部署期间创建的计算机器使用添加到 文件的类别。

注意

在等待裸机引导时,安装程序可能会超时。

如果安装程序超时,重启并使用安装程序的 wait-for 命令完成部署。例如:

$ ./openshift-install wait-for install-complete --log-level debug
Copy to Clipboard Toggle word wrap

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 文档中的 了解更多有关供应商和租户网络的信息。

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
    Copy to Clipboard Toggle word wrap
    要为名为"openshift"的项目创建子网,请输入以下命令
    $ openstack subnet create --project openshift
    Copy to Clipboard Toggle word wrap

    要了解更多有关在 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 ...
    Copy to Clipboard Toggle word wrap
  • 可选: 要保护网络,请创建 基于角色的访问控制(RBAC) 规则,以限制对单个项目的网络访问。

您可以在 Red Hat OpenStack Platform(RHOSP) 提供商网络上部署具有主网络接口的 OpenShift Container Platform 集群。

先决条件

  • 您的 Red Hat OpenStack Platform(RHOSP)部署被配置为"RHOSP 供应商网络要求用于集群安装"。

流程

  1. 在文本编辑器中,打开 install-config.yaml 文件。
  2. platform.openstack.apiVIPs 属性的值设置为 API VIP 的 IP 地址。
  3. platform.openstack.ingressVIPs 属性的值设置为 Ingress VIP 的 IP 地址。
  4. platform.openstack.machinesSubnet 属性的值设置为提供商网络子网的 UUID。
  5. networking.machineNetwork.cidr 属性的值设置为提供商网络子网的 CIDR 块。
重要

platform.openstack.apiVIPsplatform.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
Copy to Clipboard Toggle word wrap

1 2
在 OpenShift Container Platform 4.12 及更新的版本中,apiVIPingressVIP 配置设置已弃用。反之,使用列表格式在 apiVIPsingressVIPs 配置设置中输入值。
警告

您不能在将提供商网络用于主网络接口时设置 platform.openstack.externalNetworkplatform.openstack.externalDNS 参数。

在部署集群时,安装程序使用 install-config.yaml 文件在提供商网络上部署集群。

提示

您可以将额外的网络(包括提供商网络)添加到 platform.openstack.additionalNetworkIDs 列表中。

部署集群后,您可以将 pod 附加到额外网络。如需更多信息,请参阅 了解多个网络

这个示例 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...
Copy to Clipboard Toggle word wrap

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
# ...
Copy to Clipboard Toggle word wrap
重要

使用用户管理的 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
Copy to Clipboard Toggle word wrap
1
无论您使用哪个负载均衡器,负载均衡器都会部署到这个子网中。
2
UserManaged 值表示您使用用户管理的负载均衡器。
3
因为用户管理的负载均衡器只是一个技术预览,所以您必须包含 TechPreviewNoUpgrade 值才能部署使用用户管理的负载均衡器的集群。

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 公钥。

重要

不要在生产环境中跳过这个过程,在生产环境中需要灾难恢复和调试。

流程

  1. 如果您在本地计算机上没有可用于在集群节点上进行身份验证的现有 SSH 密钥对,请创建一个。例如,在使用 Linux 操作系统的计算机上运行以下命令:

    $ ssh-keygen -t ed25519 -N '' -f <path>/<file_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    指定新 SSH 密钥的路径和文件名,如 ~/.ssh/id_ed25519。如果您已有密钥对,请确保您的公钥位于 ~/.ssh 目录中。
  2. 查看公共 SSH 密钥:

    $ cat <path>/<file_name>.pub
    Copy to Clipboard Toggle word wrap

    例如,运行以下命令来查看 ~/.ssh/id_ed25519.pub 公钥:

    $ cat ~/.ssh/id_ed25519.pub
    Copy to Clipboard Toggle word wrap
  3. 将 SSH 私钥身份添加到本地用户的 SSH 代理(如果尚未添加)。在集群节点上,或者要使用 ./openshift-install gather 命令,需要对该密钥进行 SSH 代理管理,才能在集群节点上进行免密码 SSH 身份验证。

    注意

    在某些发行版中,自动管理默认 SSH 私钥身份,如 ~/.ssh/id_rsa~/.ssh/id_dsa

    1. 如果 ssh-agent 进程尚未为您的本地用户运行,请将其作为后台任务启动:

      $ eval "$(ssh-agent -s)"
      Copy to Clipboard Toggle word wrap

      输出示例

      Agent pid 31874
      Copy to Clipboard Toggle word wrap

  4. 将 SSH 私钥添加到 ssh-agent

    $ ssh-add <path>/<file_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    指定 SSH 私钥的路径和文件名,如 ~/.ssh/id_ed25519.pub

    输出示例

    Identity added: /home/<you>/<path>/<file_name> (<computer_name>)
    Copy to Clipboard Toggle word wrap

后续步骤

  • 安装 OpenShift Container Platform 时,为安装程序提供 SSH 公钥。

3.13. 启用对环境的访问

在部署时,所有 OpenShift Container Platform 机器都是在 Red Hat OpenStack Platform(RHOSP)租户网络中创建的。因此,大多数 RHOSP 部署中都无法直接访问它们。

您可以在安装过程中使用浮动 IP 地址(FIP)来配置 OpenShift Container Platform API 和应用程序访问。您还可以在没有配置 FIP 的情况下完成安装,但安装程序不会配置一种从外部访问 API 或应用程序的方法。

3.13.1. 启用通过浮动 IP 地址进行访问

创建浮动 IP(FIP)地址,以便从外部访问 OpenShift Container Platform API 和集群应用程序。

流程

  1. 使用 Red Hat OpenStack Platform(RHOSP)CLI 创建 API FIP:

    $ openstack floating ip create --description "API <cluster_name>.<base_domain>" <external_network>
    Copy to Clipboard Toggle word wrap
  2. 使用 Red Hat OpenStack Platform(RHOSP)CLI,创建应用程序或 Ingress,FIP:

    $ openstack floating ip create --description "Ingress <cluster_name>.<base_domain>" <external_network>
    Copy to Clipboard Toggle word wrap
  3. 在 API 和 Ingress FIP 的 DNS 服务器中添加符合这些模式的记录:

    api.<cluster_name>.<base_domain>.  IN  A  <API_FIP>
    *.apps.<cluster_name>.<base_domain>. IN  A <apps_FIP>
    Copy to Clipboard Toggle word wrap
    注意

    如果您不控制 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 控制台和监控界面的访问权限。您还可以使用 kubectloc。您可以使用指向 <application_floating_ip> 的额外条目来访问用户应用程序。此操作使 API 和应用程序可供您访问,不适合于生产部署,但允许对开发和测试进行安装。

  4. 将 FIP 添加到 install-config.yaml 文件中,作为以下参数的值:

    • platform.openstack.ingressFloatingIP
    • platform.openstack.apiFloatingIP

如果使用这些值,还必须在 install-config.yaml 文件中输入一个外部网络作为 platform.openstack.externalNetwork 参数的值。

提示

您可以通过分配浮动 IP 地址并更新防火墙配置,使 OpenShift Container Platform 资源在集群外可用。

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>
Copy to Clipboard Toggle word wrap

如果您不控制 DNS 服务器,您可以将记录添加到 /etc/hosts 文件中。此操作使 API 可供您自己访问,不适合于生产部署,而是允许安装以进行开发和测试。

3.14. 部署集群

您可以在兼容云平台上安装 OpenShift Container Platform。

重要

在初始安装过程中,您只能运行安装程序的 create cluster 命令一次。

先决条件

  • 获取 OpenShift Container Platform 安装程序和集群的 pull secret。
  • 验证主机上的云供应商帐户是否有部署集群的正确权限。权限不正确的帐户会导致安装过程失败,并显示包括缺失权限的错误消息。

流程

  • 进入包含安装程序的目录并初始化集群部署:

    $ ./openshift-install create cluster --dir <installation_directory> \ 
    1
    
        --log-level=info 
    2
    Copy to Clipboard Toggle word wrap
    1
    对于 <installation_directory>,请指定自定义 ./install-config.yaml 文件的位置。
    2
    要查看不同的安装详情,请指定 warndebugerror,而不是 info

验证

当集群部署成功完成时:

  • 终端会显示用于访问集群的说明,包括指向 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
Copy to Clipboard Toggle word wrap

重要
  • 安装程序生成的 Ignition 配置文件包含在 24 小时后过期的证书,然后在过期时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的 node-bootstrapper 证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。
  • 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。

3.15. 验证集群状态

您可以在安装过程中或安装后验证 OpenShift Container Platform 集群的状态。

流程

  1. 在集群环境中,导出管理员的 kubeconfig 文件:

    $ export KUBECONFIG=<installation_directory>/auth/kubeconfig 
    1
    Copy to Clipboard Toggle word wrap
    1
    对于 <installation_directory>,请指定安装文件保存到的目录的路径。

    kubeconfig 文件包含有关集群的信息,供 CLI 用于将客户端连接到正确的集群和 API 服务器。

  2. 查看部署后创建的 control plane 和计算机器:

    $ oc get nodes
    Copy to Clipboard Toggle word wrap
  3. 查看集群的版本:

    $ oc get clusterversion
    Copy to Clipboard Toggle word wrap
  4. 查看 Operator 的状态:

    $ oc get clusteroperator
    Copy to Clipboard Toggle word wrap
  5. 查看集群中的所有正在运行的 pod:

    $ oc get pods -A
    Copy to Clipboard Toggle word wrap

3.16. 使用 CLI 登录集群

您可以通过导出集群 kubeconfig 文件,以默认系统用户身份登录集群。kubeconfig 文件包含有关集群的信息,供 CLI 用于将客户端连接到正确的集群和 API 服务器。该文件特定于集群,在 OpenShift Container Platform 安装过程中创建。

先决条件

  • 已部署 OpenShift Container Platform 集群。
  • 已安装 oc CLI。

流程

  1. 导出 kubeadmin 凭证:

    $ export KUBECONFIG=<installation_directory>/auth/kubeconfig 
    1
    Copy to Clipboard Toggle word wrap
    1
    对于 <installation_directory>,请指定安装文件保存到的目录的路径。
  2. 验证您可以使用导出的配置成功运行 oc 命令:

    $ oc whoami
    Copy to Clipboard Toggle word wrap

    输出示例

    system:admin
    Copy to Clipboard Toggle word wrap

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 订阅。

3.18. 后续步骤

第 4 章 在带有 Kuryr 的 OpenStack 上安装集群

重要

Kuryr 是一个已弃用的功能。弃用的功能仍然包含在 OpenShift Container Platform 中,并将继续被支持。但是,这个功能会在以后的发行版本中被删除,且不建议在新的部署中使用。

有关 OpenShift Container Platform 中已弃用或删除的主要功能的最新列表,请参阅 OpenShift Container Platform 发行注记中已弃用和删除的功能部分。

在 OpenShift Container Platform 版本 4.13 中,您可以在使用 Kuryr SDN 的 Red Hat OpenStack Platform(RHOSP)上安装自定义集群。要自定义安装,请在安装集群前修改 install-config.yaml 中的参数。

4.1. 先决条件

4.2. 关于 Kuryr SDN

重要

Kuryr 是一个已弃用的功能。弃用的功能仍然包含在 OpenShift Container Platform 中,并将继续被支持。但是,这个功能会在以后的发行版本中被删除,且不建议在新的部署中使用。

有关 OpenShift Container Platform 中已弃用或删除的主要功能的最新列表,请参阅 OpenShift Container Platform 发行注记中已弃用和删除的功能部分。

Kuryr 是一个容器网络接口(CNI)插件解决方案,它使用 NeutronOctavia Red Hat OpenStack Platform (RHOSP) 服务来为 pod 和服务提供网络。

Kuryr 和 OpenShift Container Platform 的集成主要针对在 RHOSP VM 上运行的 OpenShift Container Platform 集群设计。Kuryr 通过将 OpenShift Container Platform pod 插入 RHOSP SDN 来提高网络性能。另外,它还提供 pod 和 RHOSP 虚拟实例间的互联性。

Kuryr 组件作为 pod 安装在 OpenShift Container Platform 中,使用 openshift-kuryr 命名空间:

  • kuryr-controller - 在一个 master 节点上安装的单个服务实例。这在 OpenShift Container Platform 中建模为一个 Deployment 对象。
  • kuryr-cni - 在每个 OpenShift Container Platform 节点上安装和配置 Kuryr 作为 CNI 驱动程序的容器。这在 OpenShift Container Platform 中建模为一个 DaemonSet 对象。

Kuryr 控制器监控 OpenShift Container Platform API 服务器中的 pod、服务和命名空间创建、更新和删除事件。它将 OpenShift Container Platform API 调用映射到 Neutron 和 Octavia 中的对应对象。这意味着,实现 Neutron 中继端口功能的每个网络解决方案都可通过 Kuryr 支持 OpenShift Container Platform。这包括开源解决方案,如 Open vSwitch(OVS)和 Open Virtual Network(OVN),以及 Neutron 兼容的商业 SDN。

建议在封装的 RHOSP 租户网络上的 OpenShift Container Platform 部署 Kuryr,以避免重复封装,如通过 RHOSP 网络运行封装的 OpenShift Container Platform SDN。

如果您使用供应商网络或租户 VLAN,则不需要使用 Kuryr 来避免重复封装。性能优势可忽略不计。但根据您的配置,使用 Kuryr 避免两个覆盖可能仍然有用。

在满足以下所有条件的部署中不建议 Kuryr:

  • RHOSP 版本小于 16。
  • 部署使用 UDP 服务,或者在几个虚拟机监控程序上使用大量 TCP 服务。

或者

  • The ovn-octavia Octavia 驱动程序被禁用。
  • 部署在几个虚拟机监控程序上使用大量 TCP 服务。

当使用 Kuryr SDN 时,pod、服务、命名空间和网络策略会使用来自 RHOSP 配额的资源,这会增加最低要求。除了默认安装所需的之外,Kuryr 也有一些额外的要求。

使用以下配额来满足集群的默认最低要求:

Expand
表 4.1. 使用 Kuryr 的 RHOSP 上默认 OpenShift Container Platform 集群的建议资源
resourcevalue

浮动 IP 地址

3 - 加上预期的 LoadBalancer 类型服务数量

端口

1500 - 每个 Pod 需要 1 个

路由器

1

子网

250 - 每个命名空间/项目需要 1 个

网络

250 - 每个命名空间/项目需要 1 个

RAM

112 GB

VCPU

28

卷存储

275 GB

实例

7

安全组

250 - 每个服务和每个 NetworkPolicy 需要 1 个

安全组规则

1000

服务器组

2 - 每个机器池中每个额外可用区加 1

负载均衡器

100 - 每个服务需要 1 个

负载均衡器监听程序

500 - 每个服务公开端口需要 1 个

负载均衡器池

500 - 每个服务公开端口需要 1 个

集群或许能以少于推荐资源运行,但其性能无法保证。

重要

如果 RHOSP 对象存储(Swift)可用,并由具有 swiftoperator 角色的用户帐户执行,它将用作 OpenShift Container Platform 镜像 registry 的默认后端。在这种情况下,卷存储需要 175 GB。根据镜像 registry 的大小,Swift 空间要求会有所不同。

重要

如果您使用带有 Amphora 驱动程序的 Red Hat OpenStack Platform(RHOSP)版本 16,而不是 OVN Octavia 驱动程序,则安全组会与服务帐户而不是用户项目关联。

在设置资源时请考虑以下几点:

  • 需要的端口数量会大于 pod 的数量。Kuryr 使用端口池来预创建端口以供 pod 使用,并加快 pod 的启动时间。
  • 每个网络策略都映射到 RHOSP 安全组中,并根据 NetworkPolicy 规格将一个或多个规则添加到安全组中。
  • 每个服务都映射到一个 RHOSP 负载均衡器中。在估算配额所需的安全组数量时,请考虑此要求。

    如果您使用的是 RHOSP 版本 15 或更早版本,或者 ovn-octavia 驱动程序,则每个负载均衡器都有一个带有用户项目的安全组。

  • 配额不会考虑负载均衡器资源(如 VM 资源),但您必须在决定 RHOSP 部署的大小时考虑这些资源。默认安装将具有超过 50 个负载均衡器,集群必须能够容纳它们。

    如果您使用启用了 OVN Octavia 驱动程序的 RHOSP 版本 16,则只生成一个负载均衡器虚拟机;服务通过 OVN 流平衡负载。

OpenShift Container Platform 部署包含 control plane 机器、计算机器和 bootstrap 机器。

要启用 Kuryr SDN,您的环境必须满足以下要求:

  • 运行 RHOSP 13+。
  • 具有 Octavia 的 Overcloud。
  • 使用 Neutron Trunk 端口扩展。
  • 如果使用 ML2/OVS Neutron 驱动程序而不是 ovs-hybrid,则使用 openvswitch 防火墙驱动程序.

4.3.1. 增加配额

使用 Kuryr SDN 时,您必须提高配额以满足 pod、服务、命名空间和网络策略所使用的 Red Hat OpenStack Platform(RHOSP)资源要求。

流程

  • 运行以下命令为项目增加配额:

    $ sudo openstack quota set --secgroups 250 --secgroup-rules 1000 --ports 1500 --subnets 250 --networks 250 <project>
    Copy to Clipboard Toggle word wrap

4.3.2. 配置 Neutron

Kuryr CNI 利用 Neutron Trunks 扩展将容器插入 Red Hat OpenStack Platform(RHOSP)SDN,因此您必须使用 trunks 扩展才可以使 Kuryr 正常工作。

另外,如果您利用默认的 ML2/OVS Neutron 驱动程序,防火墙必须设置为 openvswitch 而不是 ovs_hybrid,以便在中继子端口上强制执行安全组,Kuryr 可以正确处理网络策略。

4.3.3. 配置 Octavia

Kuryr SDN 使用 Red Hat OpenStack Platform(RHOSP)的 Octavia LBaaS 来实现 OpenShift Container Platform 服务。因此,您必须在 RHOSP 中安装和配置 Octavia 组件以使用 Kuryr SDN。

要启用 Octavia,您必须在安装 RHOSP Overcloud 的过程中包括 Octavia 服务,或者如果 Overcloud 已存在则需要升级 Octavia 服务。以下启用 Octavia 的步骤适用于全新的 Overcloud 安装或 Overcloud 更新。

注意

以下步骤只包括在部署 RHOSP 时需要处理 Octavia 的关键部分。还要注意 registry 方法 会有所不同。

本例使用本地 registry 方法。

流程

  1. 如果您使用本地 registry,请创建一个模板来将镜像上传到 registry。例如:

    (undercloud) $ openstack overcloud container image prepare \
    -e /usr/share/openstack-tripleo-heat-templates/environments/services-docker/octavia.yaml \
    --namespace=registry.access.redhat.com/rhosp13 \
    --push-destination=<local-ip-from-undercloud.conf>:8787 \
    --prefix=openstack- \
    --tag-from-label {version}-{product-version} \
    --output-env-file=/home/stack/templates/overcloud_images.yaml \
    --output-images-file /home/stack/local_registry_images.yaml
    Copy to Clipboard Toggle word wrap
  2. 验证 local_registry_images.yaml 文件是否包含 Octavia 镜像。例如:

    ...
    - imagename: registry.access.redhat.com/rhosp13/openstack-octavia-api:13.0-43
      push_destination: <local-ip-from-undercloud.conf>:8787
    - imagename: registry.access.redhat.com/rhosp13/openstack-octavia-health-manager:13.0-45
      push_destination: <local-ip-from-undercloud.conf>:8787
    - imagename: registry.access.redhat.com/rhosp13/openstack-octavia-housekeeping:13.0-45
      push_destination: <local-ip-from-undercloud.conf>:8787
    - imagename: registry.access.redhat.com/rhosp13/openstack-octavia-worker:13.0-44
      push_destination: <local-ip-from-undercloud.conf>:8787
    Copy to Clipboard Toggle word wrap
    注意

    Octavia 容器版本根据安装的特定 RHOSP 版本的不同而有所不同。

  3. registry.redhat.io 中的容器镜像拉取到 Undercloud 节点:

    (undercloud) $ sudo openstack overcloud container image upload \
      --config-file  /home/stack/local_registry_images.yaml \
      --verbose
    Copy to Clipboard Toggle word wrap

    这可能需要一些时间,具体取决于您的网络速度和 Undercloud 磁盘的速度。

  4. 使用 Octavia 安装或更新 Overcloud 环境:

    $ openstack overcloud deploy --templates \
      -e /usr/share/openstack-tripleo-heat-templates/environments/services-docker/octavia.yaml \
      -e octavia_timeouts.yaml
    Copy to Clipboard Toggle word wrap
    注意

    这个命令只包含与 Octavia 相关的文件,它根据您具体的 RHOSP 安装而有所不同。如需更多信息,请参阅 RHOSP 文档。有关自定义 Octavia 安装的详情,请参考 使用 Director 安装 Octavia

    注意

    在利用 Kuryr SDN 时,Overcloud 安装需要 Neutron 中继 扩展。这在 director 部署中默认可用。当 Neutron 后端为 ML2/OVS 时,请使用 openvswitch 防火墙而不是默认的 ovs-hybrid。如果后端为 ML2/OVN,则不需要修改。

4.3.3.1. Octavia OVN 驱动程序

Octavia 通过 Octavia API 支持多个供应商驱动程序。

要查看所有可用的 Octavia 供应商驱动程序,请在命令行中输入:

$ openstack loadbalancer provider list
Copy to Clipboard Toggle word wrap

输出示例

+---------+-------------------------------------------------+
| name    | description                                     |
+---------+-------------------------------------------------+
| amphora | The Octavia Amphora driver.                     |
| octavia | Deprecated alias of the Octavia Amphora driver. |
| ovn     | Octavia OVN driver.                             |
+---------+-------------------------------------------------+
Copy to Clipboard Toggle word wrap

从 RHOSP 版本 16 开始,Octavia OVN 供应商驱动程序(ovn)在 RHOSP 部署的 OpenShift Container Platform 上被支持。

OVN 是 Octavia 和 OVN 提供的负载平衡的集成驱动程序。它支持基本的负载平衡功能,并且基于 OpenFlow 规则。Director 在使用 OVN Neutron ML2 的部署中自动启用该驱动程序。

Amphora 供应商驱动程序是默认驱动程序。If ovn 被启用,Kuryr 使用它。

如果 Kuryr 使用 ovn 而不是 Amphora,它会提供以下优点:

  • 资源要求降低.Kuryr 不需要为每个服务都提供一个负载均衡器虚拟机。
  • 网络延迟降低.
  • 通过对每个服务使用 OpenFlow 规则而不是 VM 来提高服务创建速度。
  • 跨所有节点的分布式负载平衡操作,而不是集中到 Amphora 虚拟机中。

您可以在 RHOSP 云从版本 13 升级到版本 16 后将 集群配置为使用 Octavia OVN 驱动程序

4.3.4. 已知的使用 Kuryr 安装的限制

将 OpenShift Container Platform 与 Kuryr SDN 搭配使用有一些已知的限制。

RHOSP 常规限制

将 OpenShift Container Platform 与 Kuryr SDN 搭配使用有一些限制,适用于所有版本和环境:

  • 不支持具有 NodePort 类型的 Service 对象。
  • 如果 Endpoints 对象的 .subsets.addresses 属性包含节点或 pod 的子网时,使用 OVN Octavia 供应商驱动程序的集群才支持未指定 .spec.selector 属性的 Service 对象。
  • 如果创建机器的子网没有连接到路由器,或者子网已连接但路由器没有设置外部网关,Kuryr 无法为类型为 LoadBalancerService 对象创建浮动 IP。
  • Service 对象上配置 sessionAffinity=ClientIP 属性无效。Kuryr 不支持此设置。
RHOSP 版本限制

将 OpenShift Container Platform 与 Kuryr SDN 搭配使用有一些限制,具体取决于 RHOSP 版本。

  • RHOSP 16 前的版本使用默认 Octavia 负载均衡器驱动程序(Amphora)。此驱动要求在每个 OpenShift Container Platform 服务中部署一个 Amphora 负载均衡器虚拟机。创建太多的服务会导致您耗尽资源。

    如果以后版本的 RHOSP 部署禁用了 OVN Octavia 驱动程序,则也使用 Amphora 驱动程序。它们受到与早期版本的 RHOSP 相同的资源问题。

  • Kuryr SDN 不支持由服务自动取消闲置。
RHOSP 升级限制

由于 RHOSP 升级过程,可能会更改 Octavia API,可能需要升级到用于负载均衡器的 Amphora 镜像。

您可以单独处理 API 更改。

如果升级了 Amphora 镜像,RHOSP operator 可以通过两种方式处理现有的负载均衡器虚拟机:

如果运算符使用第一个选项,在故障切换过程中可能会有短暂的停机时间。

如果 Operator 采用第二个选项,现有的负载均衡器将不支持升级的 Octavia API 功能,如 UDP 侦听程序。在这种情况下,用户必须重新创建其服务以使用这些功能。

4.3.5. control plane 机器

默认情况下,OpenShift Container Platform 安装过程会创建三台 control plane 机器。

每台机器都需要:

  • 来自 RHOSP 配额的实例
  • 来自 RHOSP 配额的端口
  • 至少有 16 GB 内存和 4 个 vCPU 的类别
  • RHOSP 配额中至少有 100 GB 存储空间

4.3.6. 计算机器

默认情况下,OpenShift Container Platform 安装过程会创建三台计算机器。

每台机器都需要:

  • 来自 RHOSP 配额的实例
  • 来自 RHOSP 配额的端口
  • 至少有 8 GB 内存和 2 个 vCPU 的类别
  • RHOSP 配额中至少有 100 GB 存储空间
提示

计算机器托管您在 OpenShift Container Platform 上运行的应用程序;运行数量应尽可能多。

4.3.7. bootstrap 机器

在安装过程中,会临时置备 bootstrap 机器来支持 control plane。生产 control plane 就绪后,bootstrap 机器会被取消置备。

bootstrap 机器需要:

  • 来自 RHOSP 配额的实例
  • 来自 RHOSP 配额的端口
  • 至少有 16 GB 内存和 4 个 vCPU 的类别
  • RHOSP 配额中至少有 100 GB 存储空间

4.3.8. 用户置备的基础架构的负载均衡要求

重要

使用用户管理的负载平衡器进行部署只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

在安装 OpenShift Container Platform 前,您可以置备自己的 API 和应用程序入口负载平衡基础架构,以代替默认的内部负载平衡解决方案。在生产环境中,您可以单独部署 API 和应用程序入口负载均衡器,以便可以隔离扩展每个负载均衡器基础架构。

注意

如果要使用 Red Hat Enterprise Linux (RHEL) 实例部署 API 和应用程序入口负载均衡器,您必须单独购买 RHEL 订阅。

负载平衡基础架构必须满足以下要求:

  1. API 负载均衡器 :提供一个通用端点,供用户(包括人工和机器)与平台交互和配置。配置以下条件:

    • 仅第 4 层负载均衡.这可被称为 Raw TCP 或 SSL Passthrough 模式。
    • 无状态负载平衡算法。这些选项根据负载均衡器的实施而有所不同。
    重要

    不要为 API 负载均衡器配置会话持久性。为 Kubernetes API 服务器配置会话持久性可能会导致出现过量 OpenShift Container Platform 集群应用程序流量,以及过量的在集群中运行的 Kubernetes API。

    在负载均衡器的前端和后端配置以下端口:

    Expand
    表 4.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 秒探测一次,有两个成功请求处于健康状态,三个成为不健康的请求是经过良好测试的值。

  2. 应用程序入口负载均衡器 :为应用程序流量从集群外部流提供入口点。OpenShift Container Platform 集群需要正确配置入口路由器。

    配置以下条件:

    • 仅第 4 层负载均衡.这可被称为 Raw TCP 或 SSL Passthrough 模式。
    • 建议根据可用选项以及平台上托管的应用程序类型,使用基于连接的或基于会话的持久性。
    提示

    如果应用程序入口负载均衡器可以看到客户端的真实 IP 地址,启用基于 IP 的会话持久性可以提高使用端到端 TLS 加密的应用程序的性能。

    在负载均衡器的前端和后端配置以下端口:

    Expand
    表 4.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 节点。

本节提供了一个满足用户管理的负载均衡器部署的集群的负载均衡要求的 API 和应用程序入口负载均衡器配置示例。示例是 HAProxy 负载均衡器的 /etc/haproxy/haproxy.cfg 配置。这个示例不是为选择一个负载平衡解决方案提供建议。

在这个示例中,将相同的负载均衡器用于 Kubernetes API 和应用入口流量。在生产环境中,您可以单独部署 API 和应用程序入口负载均衡器,以便可以隔离扩展每个负载均衡器基础架构。

注意

如果您使用 HAProxy 作为负载均衡器,并且 SELinux 设置为 enforcing,您必须通过运行 setsebool -P haproxy_connect_any=1 来确保 HAProxy 服务可以绑定到配置的 TCP 端口。

例 4.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
Copy to Clipboard Toggle word wrap
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 进程是否在侦听端口 64432262344380

4.4. OpenShift Container Platform 互联网访问

在 OpenShift Container Platform 4.13 中,您需要访问互联网来安装集群。

您必须具有以下互联网访问权限:

  • 访问 OpenShift Cluster Manager Hybrid Cloud Console 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
  • 访问 Quay.io,以获取安装集群所需的软件包。
  • 获取执行集群更新所需的软件包。
重要

如果您的集群无法直接访问互联网,则可以在置备的某些类型的基础架构上执行受限网络安装。在此过程中,您可以下载所需的内容,并使用它为镜像 registry 填充安装软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群前,您要更新镜像 registry 的内容。

4.5. 在 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:

  1. 在 RHOSP CLI 中以管理员身份,将 swiftoperator 角色添加到将要访问 Swift 的帐户中:

    $ openstack role add --user <user> --project <project> swiftoperator
    Copy to Clipboard Toggle word wrap

您的 RHOSP 部署现在可以将 Swift 用于镜像 registry。

4.6. 验证外部网络访问

OpenShift Container Platform 安装过程需要外部网络访问权限。您必须为其提供外部网络值,否则部署会失败。在开始这个过程前,请验证 Red Hat OpenStack Platform(RHOSP)中是否存在具有外部路由器类型的网络。

流程

  1. 使用 RHOSP CLI 验证"外部"网络的名称和 ID:

    $ openstack network list --long -c ID -c Name -c "Router Type"
    Copy to Clipboard Toggle word wrap

    输出示例

    +--------------------------------------+----------------+-------------+
    | ID                                   | Name           | Router Type |
    +--------------------------------------+----------------+-------------+
    | 148a8023-62a7-4672-b018-003462f8d7dc | public_network | External    |
    +--------------------------------------+----------------+-------------+
    Copy to Clipboard Toggle word wrap

网络列表中会显示具有外部路由器类型的网络。如果至少有一个没有,请参阅创建默认浮动 IP 网络创建默认供应商网络

重要

如果外部网络的 CIDR 范围与其中一个默认网络范围重叠,您必须在开始安装过程前更改 install-config.yaml 文件中的匹配网络范围。

默认的网络范围为:

Expand
网络范围

machineNetwork

10.0.0.0/16

serviceNetwork

172.30.0.0/16

clusterNetwork

10.128.0.0/14

警告

如果安装程序找到多个同名的网络,它会随机设置其中之一。为避免这种行为,请在 RHOSP 中为资源创建唯一名称。

注意

如果启用了 Neutron 中继服务插件,则默认创建一个中继端口。如需更多信息,请参阅 Neutron 中继端口

4.7. 为安装程序定义参数

OpenShift Container Platform 安装程序依赖于一个名为 clouds.yaml 的文件。该文件描述了 Red Hat OpenStack Platform(RHOSP)配置参数,包括项目名称、登录信息和授权服务 URL。

流程

  1. 创建 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'
      Copy to Clipboard Toggle word wrap
  2. 如果您的 RHOSP 安装使用自签名证书颁发机构(CA)证书进行端点身份验证:

    1. 将证书颁发机构文件复制到您的机器中。
    2. cacerts 键添加到 clouds.yaml 文件。该值必须是到 CA 证书的绝对、不可 root 访问的路径:

      clouds:
        shiftstack:
          ...
          cacert: "/etc/pki/ca-trust/source/anchors/ca.crt.pem"
      Copy to Clipboard Toggle word wrap
      提示

      使用自定义 CA 证书运行安装程序后,您可以通过编辑 cloud-provider-config keymap 中的 ca-cert.pem 键的值来更新证书。在命令行中运行:

      $ oc edit configmap -n openshift-config cloud-provider-config
      Copy to Clipboard Toggle word wrap
  3. clouds.yaml 文件放在以下位置之一:

    1. OS_CLIENT_CONFIG_FILE 环境变量的值
    2. 当前目录
    3. 特定于 Unix 的用户配置目录,如 ~/.config/openstack/clouds.yaml
    4. 特定于 Unix 的站点配置目录,如 /etc/openstack/clouds.yaml

      安装程序会按顺序搜索 clouds.yaml

4.8. 设置 OpenStack Cloud Controller Manager 选项

另外,您可以编辑集群的 OpenStack Cloud Controller Manager (CCM) 配置。此配置控制 OpenShift Container Platform 与 Red Hat OpenStack Platform (RHOSP) 的交互方式。

有关配置参数的完整列表,请参阅"安装 OpenStack"文档中的"OpenStack Cloud Controller Manager 参考指南"页面。

流程

  1. 如果您还没有为集群生成清单文件,请运行以下命令生成这些文件:

    $ openshift-install --dir <destination_directory> create manifests
    Copy to Clipboard Toggle word wrap
  2. 在文本编辑器中,打开 cloud-provider 配置清单文件。例如:

    $ vi openshift/manifests/cloud-provider-config.yaml
    Copy to Clipboard Toggle word wrap
  3. 根据 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
    
    #...
    Copy to Clipboard Toggle word wrap
    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 负载均衡。

  4. 保存对文件的更改并开始安装。

    提示

    您可以在运行安装程序后更新云供应商配置。在命令行中运行:

    $ oc edit configmap -n openshift-config cloud-provider-config
    Copy to Clipboard Toggle word wrap

    保存更改后,您的集群将需要一些时间重新配置其自身。如果您的任一节点都没有 SchedulingDisabled 状态,则此过程已完成。

4.9. 获取安装程序

在安装 OpenShift Container Platform 前,将安装文件下载到您用于安装的主机上。

先决条件

  • 您有一台运行 Linux 或 macOS 的计算机,本地磁盘空间为 500 MB。

流程

  1. 访问 OpenShift Cluster Manager 站点的 Infrastructure Provider 页面。如果您有红帽帐户,请使用您的凭证登录。如果没有,请创建一个帐户。
  2. 选择您的基础架构供应商。
  3. 进入到安装类型的页面,下载与您的主机操作系统和架构对应的安装程序,并将该文件放在您要存储安装配置文件的目录中。

    重要

    安装程序会在用来安装集群的计算机上创建几个文件。在完成集群安装后,您必须保留安装程序和安装程序所创建的文件。这两个文件都需要删除集群。

    重要

    删除安装程序创建的文件不会删除您的集群,即使集群在安装过程中失败也是如此。要删除集群,请为特定云供应商完成 OpenShift Container Platform 卸载流程。

  4. 提取安装程序。例如,在使用 Linux 操作系统的计算机上运行以下命令:

    $ tar -xvf openshift-install-linux.tar.gz
    Copy to Clipboard Toggle word wrap
  5. 从 Red Hat OpenShift Cluster Manager 下载安装 pull secret。此 pull secret 允许您与所含授权机构提供的服务进行身份验证,这些服务包括为 OpenShift Container Platform 组件提供容器镜像的 Quay.io。

4.10. 创建安装配置文件

您可以自定义在 Red Hat OpenStack Platform(RHOSP)上安装的 OpenShift Container Platform 集群。

先决条件

  • 获取 OpenShift Container Platform 安装程序和集群的 pull secret。
  • 在订阅级别获取服务主体权限。

流程

  1. 创建 install-config.yaml 文件。

    1. 进入包含安装程序的目录并运行以下命令:

      $ ./openshift-install create install-config --dir <installation_directory> 
      1
      Copy to Clipboard Toggle word wrap
      1
      对于 <installation_directory>,请指定要存储安装程序创建的文件的目录名称。

      在指定目录时:

      • 验证该目录是否具有执行权限。在安装目录中运行 Terraform 二进制文件需要这个权限。
      • 使用空目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。

        注意

        始终删除 ~/.powervs 目录,以避免重复使用过时的配置。运行以下命令:

        $ rm -rf ~/.powervs
        Copy to Clipboard Toggle word wrap
    2. 在提示符处,提供云的配置详情:

      1. 可选: 选择用于访问集群机器的 SSH 密钥。

        注意

        对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定 ssh-agent 进程使用的 SSH 密钥。

      2. 选择 openstack 作为目标平台。
      3. 指定用于安装集群的 Red Hat OpenStack Platform(RHOSP)外部网络名称。
      4. 指定用于从外部访问 OpenShift API 的浮动 IP 地址。
      5. 指定至少有 16 GB RAM 用于 control plane 节点,以及计算节点的 8 GB RAM。
      6. 选择集群要部署到的基域。所有 DNS 记录都将是这个基域的子域,并且还包括集群名称。
      7. 为集群输入一个名称。名称长度必须为 14 个或更少字符。
      8. 粘贴 Red Hat OpenShift Cluster Manager 中的 pull secret
  2. 修改 install-config.yaml 文件。您可以在"安装配置参数"部分找到有关可用参数的更多信息。
  3. 备份 install-config.yaml 文件,以便您可以使用它安装多个集群。

    重要

    install-config.yaml 文件会在安装过程中消耗掉。如果要重复使用该文件,您必须立即备份该文件。

4.10.1. 在安装过程中配置集群范围的代理

生产环境可能会拒绝直接访问互联网,而是提供 HTTP 或 HTTPS 代理。您可以通过在 install-config.yaml 文件中配置代理设置,将新的 OpenShift Container Platform 集群配置为使用代理。

注意

Kuryr 安装默认为 HTTP 代理。

先决条件

  • 对于在使用 Proxy 对象的受限网络中的 Kuryr 安装,代理必须能够响应集群使用的路由器。要为代理配置添加静态路由,以 root 用户身份从命令行输入:

    $ ip route add <cluster_network_cidr> via <installer_subnet_gateway>
    Copy to Clipboard Toggle word wrap
  • 受限子网必须具有定义网关,并可用于链接到 Kuryr 创建的 Router 资源。
  • 您有一个现有的 install-config.yaml 文件。
  • 您检查了集群需要访问的站点,并确定它们中的任何站点是否需要绕过代理。默认情况下,所有集群出口流量都经过代理,包括对托管云供应商 API 的调用。如果需要,您将在 Proxy 对象的 spec.noProxy 字段中添加站点来绕过代理。

    注意

    Proxy 对象 status.noProxy 字段使用安装配置中的 networking.machineNetwork[].cidrnetworking.clusterNetwork[].cidrnetworking.serviceNetwork[] 字段的值填充。

    对于在 Amazon Web Services(AWS)、Google Cloud Platform(GCP)、Microsoft Azure 和 Red Hat OpenStack Platform(RHOSP)上安装,Proxy 对象 status.noProxy 字段也会使用实例元数据端点填充(169.254.169.254)。

流程

  1. 编辑 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
    Copy to Clipboard Toggle word wrap
    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 配置映射的策略。允许的值是 ProxyonlyAlways。仅在配置了 http/https 代理时,使用 Proxyonly 引用 user-ca-bundle 配置映射。使用 Always 始终引用 user-ca-bundle 配置映射。默认值为 Proxyonly
    注意

    安装程序不支持代理的 readinessEndpoints 字段。

    注意

    如果安装程序超时,重启并使用安装程序的 wait-for 命令完成部署。例如:

    $ ./openshift-install wait-for install-complete --log-level debug
    Copy to Clipboard Toggle word wrap
  2. 保存该文件并在安装 OpenShift Container Platform 时引用。

安装程序会创建一个名为 cluster 的集群范围代理,该代理 使用 提供的 install-config.yaml 文件中的代理设置。如果没有提供代理设置,仍然会创建一个 cluster Proxy 对象,但它会有一个空 spec

注意

只支持名为 clusterProxy 对象,且无法创建额外的代理。

4.11. 安装配置参数

在部署 OpenShift Container Platform 集群前,您可以提供参数值来描述托管集群的云平台中的帐户,并选择性地自定义集群平台。在创建 install-config.yaml 安装配置文件时,您可以通过命令行为所需参数提供值。如果自定义集群,您可以修改 install-config.yaml 文件以提供有关平台的更多详情。

重要

安装后,您无法更改 install-config.yaml 文件中的这些参数。

4.11.1. 所需的配置参数

下表描述了所需的安装配置参数:

Expand
表 4.4. 所需的参数
参数描述

apiVersion

install-config.yaml 内容的 API 版本。当前版本为 v1。安装程序可能还支持旧的 API 版本。

字符串

baseDomain

云供应商的基域。基域用于创建到 OpenShift Container Platform 集群组件的路由。集群的完整 DNS 名称是 baseDomainmetadata.name 参数值的组合,其格式为 <metadata.name>.<baseDomain>

完全限定域名或子域名,如 example.com

metadata

Kubernetes 资源 ObjectMeta,其中只消耗 name 参数。

对象

metadata.name

集群的名称。集群的 DNS 记录是 {{.metadata.name}}.{{.baseDomain}} 的子域。

小写字母、连字符(-)和句点(.)字符串,如 dev。字符串长度必须为 14 个字符或更少。

platform

要执行安装的具体平台配置: alibabacloudawsbaremetalazuregcpibmcloudnutanixopenstackovirtpowervsvsphere{}。有关 platform.<platform> 参数的更多信息,请参考下表中您的特定平台。

对象

pullSecret

从 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"
      }
   }
}
Copy to Clipboard Toggle word wrap

4.11.2. 网络配置参数

您可以根据现有网络基础架构的要求自定义安装配置。例如,您可以扩展集群网络的 IP 地址块,或者提供不同于默认值的不同 IP 地址块。

仅支持 IPv4 地址。

注意

Red Hat OpenShift Data Foundation 灾难恢复解决方案不支持 Globalnet。对于区域灾难恢复场景,请确保为每个集群中的集群和服务网络使用非重叠的专用 IP 地址。

Expand
表 4.5. 网络参数
参数描述

networking

集群网络的配置。

对象

注意

您不能在安装后更改 networking 对象指定的参数。

networking.networkType

要安装的 Red Hat OpenShift Networking 网络插件。

OpenShiftSDNOVNKubernetesOpenShiftSDN 是 all-Linux 网络的 Container Network Interface (CNI)插件。OVNKubernetes 是 Linux 网络和包含 Linux 和 Windows 服务器的混合网络的 CNI 插件。默认值为 OVNKubernetes

networking.clusterNetwork

pod 的 IP 地址块。

默认值为 10.128.0.0/14,主机前缀为 /23

如果您指定了多个 IP 地址块,块不得重叠。

对象数组。例如:

networking:
  clusterNetwork:
  - cidr: 10.128.0.0/14
    hostPrefix: 23
Copy to Clipboard Toggle word wrap

networking.clusterNetwork.cidr

使用 networking.clusterNetwork 时需要此项。IP 地址块。

IPv4 网络。

无类别域间路由(CIDR)表示法中的 IP 地址块。IPv4 块的前缀长度介于 0 到 32 之间

networking.clusterNetwork.hostPrefix

分配给每个节点的子网前缀长度。例如,如果 hostPrefix 设为 23,则每个节点从 given cidr 中分配 a /23 子网。hostPrefix23 提供 510(2^(32 - 23)- 2)pod IP 地址。

子网前缀。

默认值为 23

networking.serviceNetwork

服务的 IP 地址块。默认值为 172.30.0.0/16

OpenShift SDN 和 OVN-Kubernetes 网络插件只支持服务网络的一个 IP 地址块。

CIDR 格式具有 IP 地址块的数组。例如:

networking:
  serviceNetwork:
   - 172.30.0.0/16
Copy to Clipboard Toggle word wrap

networking.machineNetwork

机器的 IP 地址块。

如果您指定了多个 IP 地址块,块不得重叠。

对象数组。例如:

networking:
  machineNetwork:
  - cidr: 10.0.0.0/16
Copy to Clipboard Toggle word wrap

networking.machineNetwork.cidr

使用 networking.machineNetwork 时需要此项。IP 地址块。libvirt 和 IBM Power Virtual Server 以外的所有平台的默认值为 10.0.0.0/16。对于 libvirt,默认值 为 192.168.126.0/24。对于 IBM Power Virtual Server,默认值为 192.168.0.0/24

CIDR 表示法中的 IP 网络块。

例如: 10.0.0.0/16

注意

networking.machineNetwork 设置为与首选 NIC 所在的 CIDR 匹配。

4.11.3. 可选的配置参数

下表描述了可选的安装配置参数:

Expand
表 4.6. 可选参数
参数描述

additionalTrustBundle

添加到节点可信证书存储中的 PEM 编码 X.509 证书捆绑包。配置代理时,也可以使用此信任捆绑包。

字符串

功能

控制可选核心组件的安装。您可以通过禁用可选组件来减少 OpenShift Container Platform 集群的空间。如需更多信息,请参阅安装中的"集群功能"页面。

字符串数组

capabilities.baselineCapabilitySet

选择要启用的一组初始可选功能。有效值为 Nonev4.11v4.12vCurrent。默认值为 vCurrent

字符串

capabilities.additionalEnabledCapabilities

将可选功能集合扩展到您在 baselineCapabilitySet 中指定的范围。您可以在此参数中指定多个功能。

字符串数组

cpuPartitioningMode

启用工作负载分区,它会隔离 OpenShift Container Platform 服务、集群管理工作负载和基础架构 pod,以便在保留的一组 CPU 上运行。您只能在安装过程中启用工作负载分区。您不能在安装后禁用它。虽然此字段启用工作负载分区,但它不会将工作负载配置为使用特定的 CPU。如需更多信息,请参阅 Scalability and Performance 部分中的 Workload partitioning 页面。

NoneAllNodes.None 是默认值。

Compute

组成计算节点的机器的配置。

MachinePool 对象的数组。

compute.architecture

决定池中机器的指令集合架构。目前,不支持具有不同架构的集群。所有池都必须指定相同的架构。有效值为默认值: amd64

字符串

compute: 超线程:

是否在计算机器上启用或禁用并发多 线程或超线程。默认情况下,启用并发多线程以提高机器内核的性能。

重要

如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。

enabledDisabled

compute.name

使用 compute 时需要此项。机器池的名称。

worker

compute.platform

使用 compute 时需要此项。使用此参数指定托管 worker 机器的云供应商。此参数值必须与 controlPlane.platform 参数值匹配。

alibabacloud,aws,azure,gcp,ibmcloud,nutanix,openstack,ovirt,powervs,vsphere, 或 {}

compute.replicas

要置备的计算机器数量,也称为 worker 机器。

大于或等于 2 的正整数。默认值为 3

featureSet

为功能集启用集群。功能集是 OpenShift Container Platform 功能的集合,默认情况下不启用。有关在安装过程中启用功能集的更多信息,请参阅"使用功能门启用功能"。

字符串.要启用的功能集的名称,如 TechPreviewNoUpgrade

controlPlane

组成 control plane 的机器的配置。

MachinePool 对象的数组。

controlPlane.architecture

决定池中机器的指令集合架构。目前,不支持具有不同架构的集群。所有池都必须指定相同的架构。有效值为默认值: amd64

字符串

controlPlane: 超线程:

是否在 control plane 机器上启用或禁用并发多 线程或超线程。默认情况下,启用并发多线程以提高机器内核的性能。

重要

如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。

enabledDisabled

controlPlane.name

使用 controlPlane 时需要此项。机器池的名称。

master

controlPlane.platform

使用 controlPlane 时需要此项。使用此参数指定托管 control plane 机器的云供应商。此参数值必须与 compute.platform 参数值匹配。

alibabacloud,aws,azure,gcp,ibmcloud,nutanix,openstack,ovirt,powervs,vsphere, 或 {}

controlPlane.replicas

要置备的 control plane 机器数量。

唯一支持的值是 3,这是默认值。

credentialsMode

Cloud Credential Operator(CCO)模式。在没有指定模式时,CCO 会动态尝试决定提供的凭证的功能,在支持多个模式的平台上首选 mint 模式。

注意

不是所有 CCO 模式都支持所有云供应商。如需有关 CCO 模式的更多信息,请参阅集群 Operator 参考内容中的 Cloud Credential Operator 条目。

注意

如果您的 AWS 帐户启用了服务控制策略 (SCP),您必须将 credentialsMode 参数配置为 MintPassthroughManual

MintPassthroughManual 或空字符串("")。

imageContentSources

release-image 内容的源和存储库。

对象数组。包括一个 source 以及可选的 mirrors,如本表的以下行所述。

imageContentSources.source

使用 imageContentSources 时需要此项。指定用户在镜像拉取规格中引用的存储库。

字符串

imageContentSources.mirrors

指定可能还包含同一镜像的一个或多个存储库。

字符串数组

publish

如何发布或公开集群的面向用户的端点,如 Kubernetes API、OpenShift 路由。

内部或外部 .默认值为 External

非云平台不支持将此字段设置为 Internal

重要

如果字段的值设为 Internal,集群就会变得无法正常工作。如需更多信息,请参阅 BZ#1953035

sshKey

用于验证对集群机器的访问的 SSH 密钥。

注意

对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定 ssh-agent 进程使用的 SSH 密钥。

例如,sshKey: ssh-ed25519 AAAA..

  1. 不是所有 CCO 模式都支持所有云供应商。有关 CCO 模式的更多信息,请参阅身份验证和授权内容中的"管理云供应商凭证"条目。

下表中描述了其他 RHOSP 配置参数:

Expand
表 4.7. 其他 RHOSP 参数
参数描述

compute.platform.openstack.rootVolume.size

对于计算机器,以 GB 为单位的根卷大小。如果没有设置这个值,机器将使用临时存储。

整数,如 30

compute.platform.openstack.rootVolume.type

对于计算机器,根卷的类型。

字符串,如 performance

controlPlane.platform.openstack.rootVolume.size

对于 control plane 机器,以 GB 为单位表示的根卷大小。如果没有设置这个值,机器将使用临时存储。

整数,如 30

controlPlane.platform.openstack.rootVolume.type

对于 control plane 机器,根卷的类型。

字符串,如 performance

platform.openstack.cloud

要使用的 RHOSP 云名称,来自于 clouds.yaml 文件中的云列表。

字符串,如 MyCloud

platform.openstack.externalNetwork

用于安装的 RHOSP 外部网络名称。

字符串,如 external

platform.openstack.computeFlavor

用于 control plane 和计算机器的 RHOSP 类别。

此属性已弃用。要将 flavor 用作所有机器池的默认值,请将其添加为 platform.openstack.defaultMachinePlatform 属性中的 type 键的值。您还可以分别为每个机器池设置 flavor 值。

字符串,如 m1.xlarge

4.11.5. 可选的 RHOSP 配置参数

下表描述了可选的 RHOSP 配置参数:

Expand
表 4.8. 可选的 RHOSP 参数
参数描述

compute.platform.openstack.additionalNetworkIDs

与计算机器关联的其他网络。不为额外网络创建允许的地址对。

一个或多个 UUID 的列表作为字符串。例如: fa806b2f-ac49-4bce-b9db-124bc64209bf

compute.platform.openstack.additionalSecurityGroupIDs

与计算机器关联的其他安全组。

一个或多个 UUID 的列表作为字符串。例如,7ee219f3-d2e9-48a1-96c2-e7429f1b0da7

compute.platform.openstack.zones

RHOSP Compute(Nova)可用区(AZ)在其中安装机器。如果没有设置此参数,安装程序会依赖于配置了 RHOSP 管理员的 Nova 的默认设置。

在使用 Kuryr 的集群上,RHOSP Octavia 不支持可用区。负载均衡器,如果您使用 Amphora 供应商驱动程序,则依赖 Amphora 虚拟机的 OpenShift Container Platform 服务不会根据此属性的值创建。

字符串列表。例如: ["zone-1", "zone-2"]

compute.platform.openstack.rootVolume.zones

对于计算机器,可在其上安装根卷的可用性区域。如果没有为此参数设置值,安装程序会选择默认的可用性区域。

字符串列表,如 ["zone-1", "zone-2"]

compute.platform.openstack.serverGroupPolicy

要应用到池中包含计算机器的组策略。您不能在创建后更改服务器组策略或关系。支持的选项包括 anti-affinity, soft-affinity, 和 soft-anti-affinity默认值为 soft-anti-affinity

affinity 策略可防止迁移,因此会影响 RHOSP 升级。不支持 affinity 策略。

如果使用严格的 anti-affinity 策略,实例迁移过程中需要额外的 RHOSP 主机。

应用到机器池的服务器组策略。例如,soft-affinity

controlPlane.platform.openstack.additionalNetworkIDs

与 control plane 机器关联的额外网络。不为额外网络创建允许的地址对。

附加到 control plane 机器的额外网络也会附加到 bootstrap 节点。

一个或多个 UUID 的列表作为字符串。例如: fa806b2f-ac49-4bce-b9db-124bc64209bf

controlPlane.platform.openstack.additionalSecurityGroupIDs

与 control plane 机器关联的其他安全组。

一个或多个 UUID 的列表作为字符串。例如,7ee219f3-d2e9-48a1-96c2-e7429f1b0da7

controlPlane.platform.openstack.zones

RHOSP Compute(Nova)可用区(AZ)在其中安装机器。如果没有设置此参数,安装程序会依赖于配置了 RHOSP 管理员的 Nova 的默认设置。

在使用 Kuryr 的集群上,RHOSP Octavia 不支持可用区。负载均衡器,如果您使用 Amphora 供应商驱动程序,则依赖 Amphora 虚拟机的 OpenShift Container Platform 服务不会根据此属性的值创建。

字符串列表。例如: ["zone-1", "zone-2"]

controlPlane.platform.openstack.rootVolume.zones

对于 control plane 机器,安装根卷的可用区。如果没有设置这个值,安装程序会选择默认可用区。

字符串列表,如 ["zone-1", "zone-2"]

controlPlane.platform.openstack.serverGroupPolicy

要应用到池中包含 control plane 机器的组的服务器组策略。您不能在创建后更改服务器组策略或关系。支持的选项包括 anti-affinity, soft-affinity, 和 soft-anti-affinity默认值为 soft-anti-affinity

affinity关联性 策略会阻止迁移,因此会影响 RHOSP 升级。不支持 affinity 策略。

如果使用严格的 anti-affinity 策略,实例迁移过程中需要额外的 RHOSP 主机。

应用到机器池的服务器组策略。例如,soft-affinity

platform.openstack.clusterOSImage

安装程序从中下载 RHCOS 镜像的位置。

您必须设置此参数才能在受限网络中执行安装。

HTTP 或 HTTPS URL,可选使用 SHA-256 校验和。

例如: http://mirror.example.com/images/rhcos-43.81.201912131630.0-openstack.x86_64.qcow2.gz?sha256=ffebbd68e8a1f2a245ca19522c16c86f67f9ac8e4e0c1f0a812b068b16f7265d。该值也可以是现有 Glance 镜像的名称,如 my-rhcos

platform.openstack.clusterOSImageProperties

在 Glance 中添加至安装程序上传的 ClusterOSImage 的属性。如果将 platform.openstack.clusterOSImage 设置为现有的 Glance 镜像,则此属性将被忽略。

您可以使用此属性超过每个节点 26 个 PV 的 RHOSP 的默认持久性卷(PV)限值。要超过这个限制,请将 virtio- scsi_model 属性值设置为 virtio-scsi, 并将 hw_disk_bus 值设置为 scsi

您还可以使用此属性通过包含值为 yeshw_qemu_guest_agent 属性来启用 QEMU 客户机代理。

一组字符串属性。例如:

clusterOSImageProperties:
    hw_scsi_model: "virtio-scsi"
    hw_disk_bus: "scsi"
    hw_qemu_guest_agent: "yes"
Copy to Clipboard Toggle word wrap

platform.openstack.defaultMachinePlatform

默认机器池平台配置。

{
   "type": "ml.large",
   "rootVolume": {
      "size": 30,
      "type": "performance"
   }
}
Copy to Clipboard Toggle word wrap

platform.openstack.ingressFloatingIP

与 Ingress 端口关联的现有浮动 IP 地址。要使用此属性,还必须定义 platform.openstack.externalNetwork 属性。

IP 地址,如 128.0.0.1

platform.openstack.apiFloatingIP

与 API 负载均衡器关联的现有浮动 IP 地址。要使用此属性,还必须定义 platform.openstack.externalNetwork 属性。

IP 地址,如 128.0.0.1

platform.openstack.externalDNS

集群实例用于 DNS 解析的外部 DNS 服务器的 IP 地址。

IP 地址列表作为字符串。例如 ,["8.8.8.8", "192.168.1.12"]

platform.openstack.loadbalancer

是否使用默认的内部负载均衡器。如果值设为 UserManaged,则此默认负载均衡器被禁用,以便您可以部署使用外部用户管理的负载均衡器的集群。如果没有设置该参数,或者值为 OpenShiftManagedDefault,集群将使用默认负载均衡器。

UserManagedOpenShiftManagedDefault.

platform.openstack.machinesSubnet

集群节点使用的 RHOSP 子网的 UUID。在这个子网上创建节点和虚拟 IP(VIP)端口。

networking.machineNetwork 中的第一个项必须与 machine Subnet 的值匹配。

如果部署到自定义子网中,则无法将外部 DNS 服务器指定到 OpenShift Container Platform 安装程序。相反,将 DNS 添加到 RHOSP 中的子网中

作为字符串的 UUID。例如: fa806b2f-ac49-4bce-b9db-124bc64209bf

4.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-planeportTarget 对象。
  • 本身故障域中的所有非 control-plane portTarget 对象。
  • 机器池的 additionalNetworkIDs 列表中的所有网络。

要为机器池配置故障域,请编辑 controlPlane.platform.openstack.failureDomains 下的可用区和端口目标参数。

Expand
表 4.9. 故障域的 RHOSP 参数
参数描述

platform.openstack.failuredomains.computeAvailabilityZone

服务器的可用区。如果没有指定,则使用集群默认。

可用区的名称。例如,nova-1

platform.openstack.failuredomains.storageAvailabilityZone

root 卷的可用区。如果没有指定,则使用集群默认。

可用区的名称。例如,cinder-1

platform.openstack.failuredomains.portTargets

portTarget 对象列表,各自定义附加到故障域中机器的网络连接。

portTarget 对象列表。

platform.openstack.failuredomains.portTargets.portTarget.id

单个端口目标的 ID。要将该端口目标选为机器的第一个网络,请将此参数的值设置为 control-plane。如果此参数具有不同的值,它将被忽略。

control-plane 或任意字符串。

platform.openstack.failuredomains.portTargets.portTarget.network

必需。附加到故障域中机器的网络的名称或 ID。

包含名称或 UUID 的 network 对象。例如:

network:
  id: 8db6a48e-375b-4caa-b20b-5b9a7218bfe6
Copy to Clipboard Toggle word wrap

或:

network:
  name: my-network-1
Copy to Clipboard Toggle word wrap

platform.openstack.failuredomains.portTargets.portTarget.fixedIPs

要分配固定 IP 地址的子网。这些子网必须与端口位于同一个网络中。

subnet 对象列表。

重要

您不能组合区域字段和故障域。如果要使用故障域,则必须取消设置 controlPlane.zonecontrolPlane.rootVolume.zone 字段。

4.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.apiVIPsplatform.openstack.ingressVIPs 设置值。

重要

集群安装后无法调整网络的 CIDR 范围。红帽不提供有关在集群安装过程中确定范围的直接指导,因为它需要仔细考虑每个命名空间创建的 pod 数量。

要使用 Kuryr SDN 而不是默认的 OVN-Kubernetes 网络插件进行部署,您必须修改 install-config.yaml 文件,使其包含 Kuryr 作为所需的 networking.networkType。这个示例 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 
1

  networkType: Kuryr 
2

platform:
  openstack:
    cloud: mycloud
    externalNetwork: external
    computeFlavor: m1.xlarge
    apiFloatingIP: 128.0.0.1
    trunkSupport: true 
3

    octaviaSupport: true 
4

pullSecret: '{"auths": ...}'
sshKey: ssh-ed25519 AAAA...
Copy to Clipboard Toggle word wrap
1
Amphora Octavia 驱动程序在每个负载均衡器创建两个端口。因此,安装程序创建的服务子网是指定为 serviceNetwork 属性值的 CIDR 大小的两倍。需要更大的范围来防止 IP 地址冲突。
2
要安装的集群网络插件。支持的值包括 KuryrOVNKubernetesOpenShiftSDN。默认值为 OVNKubernetes
3 4
安装程序会自动发现 trunkSupport 和 octaviaSupport,因此无需设置它们。但是,如果您的环境不能满足这两个要求,Kuryr SDN 将无法正常工作。需要中继才能将 pod 连接到 RHOSP 网络,并且需要 Octavia 来创建 OpenShift Container Platform 服务。

4.11.9. 使用故障域的安装配置示例

重要

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
# ...
Copy to Clipboard Toggle word wrap
重要

使用用户管理的 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
Copy to Clipboard Toggle word wrap
1
无论您使用哪个负载均衡器,负载均衡器都会部署到这个子网中。
2
UserManaged 值表示您使用用户管理的负载均衡器。
3
因为用户管理的负载均衡器只是一个技术预览,所以您必须包含 TechPreviewNoUpgrade 值才能部署使用用户管理的负载均衡器的集群。

4.11.11. 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 文档中的 了解更多有关供应商和租户网络的信息。

4.11.11.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
    Copy to Clipboard Toggle word wrap
    要为名为"openshift"的项目创建子网,请输入以下命令
    $ openstack subnet create --project openshift
    Copy to Clipboard Toggle word wrap

    要了解更多有关在 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 ...
    Copy to Clipboard Toggle word wrap
  • 可选: 要保护网络,请创建 基于角色的访问控制(RBAC) 规则,以限制对单个项目的网络访问。

您可以在 Red Hat OpenStack Platform(RHOSP) 提供商网络上部署具有主网络接口的 OpenShift Container Platform 集群。

先决条件

  • 您的 Red Hat OpenStack Platform(RHOSP)部署被配置为"RHOSP 供应商网络要求用于集群安装"。

流程

  1. 在文本编辑器中,打开 install-config.yaml 文件。
  2. platform.openstack.apiVIPs 属性的值设置为 API VIP 的 IP 地址。
  3. platform.openstack.ingressVIPs 属性的值设置为 Ingress VIP 的 IP 地址。
  4. platform.openstack.machinesSubnet 属性的值设置为提供商网络子网的 UUID。
  5. networking.machineNetwork.cidr 属性的值设置为提供商网络子网的 CIDR 块。
重要

platform.openstack.apiVIPsplatform.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
Copy to Clipboard Toggle word wrap

1 2
在 OpenShift Container Platform 4.12 及更新的版本中,apiVIPingressVIP 配置设置已弃用。反之,使用列表格式在 apiVIPsingressVIPs 配置设置中输入值。
警告

您不能在将提供商网络用于主网络接口时设置 platform.openstack.externalNetworkplatform.openstack.externalDNS 参数。

在部署集群时,安装程序使用 install-config.yaml 文件在提供商网络上部署集群。

提示

您可以将额外的网络(包括提供商网络)添加到 platform.openstack.additionalNetworkIDs 列表中。

部署集群后,您可以将 pod 附加到额外网络。如需更多信息,请参阅 了解多个网络

4.11.12. Kuryr 端口池

Kuryr 端口池在待机时维护多个端口,用于创建 pod。

将端口保留在待机上可最大程度缩短 pod 创建时间。如果没有端口池,Kuryr 必须明确请求在创建或删除 pod 时创建或删除端口。

Kuryr 使用的 Neutron 端口是在绑定到命名空间的子网中创建的。这些 pod 端口也作为子端口添加到 OpenShift Container Platform 集群节点的主端口。

因为 Kuryr 将每个命名空间保留在单独的子网中,所以为每个命名空间 worker 对维护一个单独的端口池。

在安装集群前,您可以在 cluster-network-03-config.yml 清单文件中设置以下参数来配置端口池行为:

  • enablePortPoolsPrepopulation 参数控制池准备工作,它会强制 Kuryr 在命名空间中创建第一个 pod 使用专用网络时将 Neutron 端口添加到池中。默认值为 false
  • poolMinPorts 参数是池中保留的最少可用端口的数量。默认值为 1
  • poolMaxPorts 参数是池中保留的最大可用端口数。值 0 可 禁用此上限。这是默认设置。

    如果您的 OpenStack 端口配额较低,或者 pod 网络上的 IP 地址有限,请考虑设置此选项以确保删除不需要的端口。

  • poolBatchPorts 参数定义一次可以创建的 Neutron 端口的最大数量。默认值为 3

4.11.13. 在安装过程中调整 Kuryr 端口池

在安装过程中,您可以配置 Kuryr 如何管理 Red Hat OpenStack Platform(RHOSP)Neutron 端口,以控制 pod 创建的速度和效率。

先决条件

  • 创建并修改 install-config.yaml 文件。

流程

  1. 在命令行中创建清单文件:

    $ ./openshift-install create manifests --dir <installation_directory> 
    1
    Copy to Clipboard Toggle word wrap
    1
    对于 <installation_directory>,请指定包含集群的 install-config.yaml 文件的目录名称。
  2. <installation_directory>/manifests/ 目录中创建一个名为 cluster-network-03-config.yml 的文件:

    $ touch <installation_directory>/manifests/cluster-network-03-config.yml 
    1
    Copy to Clipboard Toggle word wrap
    1
    对于 <installation_directory>,请指定包含集群的 manifests/ 目录的目录名称。

    创建该文件后,几个网络配置文件位于 manifests/ 目录中,如下所示:

    $ ls <installation_directory>/manifests/cluster-network-*
    Copy to Clipboard Toggle word wrap

    输出示例

    cluster-network-01-crd.yml
    cluster-network-02-config.yml
    cluster-network-03-config.yml
    Copy to Clipboard Toggle word wrap

  3. 在编辑器中打开 cluster-network-03-config.yml 文件,并输入描述您想要的 Cluster Network Operator 配置的自定义资源(CR):

    $ oc edit networks.operator.openshift.io cluster
    Copy to Clipboard Toggle word wrap
  4. 编辑设置以满足您的要求。以下示例提供了以下文件:

    apiVersion: operator.openshift.io/v1
    kind: Network
    metadata:
      name: cluster
    spec:
      clusterNetwork:
      - cidr: 10.128.0.0/14
        hostPrefix: 23
      serviceNetwork:
      - 172.30.0.0/16
      defaultNetwork:
        type: Kuryr
        kuryrConfig:
          enablePortPoolsPrepopulation: false 
    1
    
          poolMinPorts: 1 
    2
    
          poolBatchPorts: 3 
    3
    
          poolMaxPorts: 5 
    4
    
          openstackServiceNetwork: 172.30.0.0/15 
    5
    Copy to Clipboard Toggle word wrap
    1
    enablePortPoolsPrepopulation 设置为 true,以便在一个命名空间中为 pod 在网络上创建第一个 pod 时使 Kuryr 创建新的 Neutron 端口。此设置引发 Neutron 端口配额,但可以缩短生成容器集所需的时间。默认值为 false
    2
    如果池中的可用端口数量低于 poolMinPorts 的值,Kuryr 会为池创建新端口。默认值为 1
    3
    poolBatchPorts 控制在可用端口数量低于 poolMinPorts 值时创建的新端口数量。默认值为 3
    4
    如果池中的可用端口数量大于 poolMaxPorts 的值,Kuryr 会删除它们,直到数量与这个值匹配为止。将此值设置为 0 可 禁用此上限,防止池缩小。默认值为 0
    5
    openStackServiceNetwork 参数定义将 IP 地址分配到 RHOSP Octavia 的 LoadBalancer 的网络的 CIDR 范围。

    如果此参数与 Amphora 驱动程序一起使用,则 Octavia 会为每个负载均衡器从这个网络获取两个 IP 地址:一个用于 OpenShift,另一个用于 VRRP 连接。由于这些 IP 地址分别由 OpenShift 容器平台和 Neutron 管理,因此它们必须来自不同的池。因此,open StackServiceNetwork 的值必须至少是 serviceNetwork 值的两倍,service Network 的值必须与 openStackServiceNetwork 定义的范围完全重叠。

    CNO 验证从此参数定义的范围获取的 VRRP IP 地址是否与 serviceNetwork 参数定义的范围不重叠。

    如果没有设置此参数,CNO 将使用 serviceNetwork 扩展值,它由使用 1 减少前缀大小决定。

  5. 保存 cluster-network-03-config.yml 文件,再退出文本编辑器。
  6. 可选:备份 manifests/cluster-network-03-config.yml 文件。安装程序在创建集群时删除 manifests/ 目录。

4.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 公钥。

重要

不要在生产环境中跳过这个过程,在生产环境中需要灾难恢复和调试。

流程

  1. 如果您在本地计算机上没有可用于在集群节点上进行身份验证的现有 SSH 密钥对,请创建一个。例如,在使用 Linux 操作系统的计算机上运行以下命令:

    $ ssh-keygen -t ed25519 -N '' -f <path>/<file_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    指定新 SSH 密钥的路径和文件名,如 ~/.ssh/id_ed25519。如果您已有密钥对,请确保您的公钥位于 ~/.ssh 目录中。
  2. 查看公共 SSH 密钥:

    $ cat <path>/<file_name>.pub
    Copy to Clipboard Toggle word wrap

    例如,运行以下命令来查看 ~/.ssh/id_ed25519.pub 公钥:

    $ cat ~/.ssh/id_ed25519.pub
    Copy to Clipboard Toggle word wrap
  3. 将 SSH 私钥身份添加到本地用户的 SSH 代理(如果尚未添加)。在集群节点上,或者要使用 ./openshift-install gather 命令,需要对该密钥进行 SSH 代理管理,才能在集群节点上进行免密码 SSH 身份验证。

    注意

    在某些发行版中,自动管理默认 SSH 私钥身份,如 ~/.ssh/id_rsa~/.ssh/id_dsa

    1. 如果 ssh-agent 进程尚未为您的本地用户运行,请将其作为后台任务启动:

      $ eval "$(ssh-agent -s)"
      Copy to Clipboard Toggle word wrap

      输出示例

      Agent pid 31874
      Copy to Clipboard Toggle word wrap

  4. 将 SSH 私钥添加到 ssh-agent

    $ ssh-add <path>/<file_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    指定 SSH 私钥的路径和文件名,如 ~/.ssh/id_ed25519.pub

    输出示例

    Identity added: /home/<you>/<path>/<file_name> (<computer_name>)
    Copy to Clipboard Toggle word wrap

后续步骤

  • 安装 OpenShift Container Platform 时,为安装程序提供 SSH 公钥。

4.13. 启用对环境的访问

在部署时,所有 OpenShift Container Platform 机器都是在 Red Hat OpenStack Platform(RHOSP)租户网络中创建的。因此,大多数 RHOSP 部署中都无法直接访问它们。

您可以在安装过程中使用浮动 IP 地址(FIP)来配置 OpenShift Container Platform API 和应用程序访问。您还可以在没有配置 FIP 的情况下完成安装,但安装程序不会配置一种从外部访问 API 或应用程序的方法。

4.13.1. 启用通过浮动 IP 地址进行访问

创建浮动 IP(FIP)地址,以便从外部访问 OpenShift Container Platform API 和集群应用程序。

流程

  1. 使用 Red Hat OpenStack Platform(RHOSP)CLI 创建 API FIP:

    $ openstack floating ip create --description "API <cluster_name>.<base_domain>" <external_network>
    Copy to Clipboard Toggle word wrap
  2. 使用 Red Hat OpenStack Platform(RHOSP)CLI,创建应用程序或 Ingress,FIP:

    $ openstack floating ip create --description "Ingress <cluster_name>.<base_domain>" <external_network>
    Copy to Clipboard Toggle word wrap
  3. 在 API 和 Ingress FIP 的 DNS 服务器中添加符合这些模式的记录:

    api.<cluster_name>.<base_domain>.  IN  A  <API_FIP>
    *.apps.<cluster_name>.<base_domain>. IN  A <apps_FIP>
    Copy to Clipboard Toggle word wrap
    注意

    如果您不控制 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 控制台和监控界面的访问权限。您还可以使用 kubectloc。您可以使用指向 <application_floating_ip> 的额外条目来访问用户应用程序。此操作使 API 和应用程序可供您访问,不适合于生产部署,但允许对开发和测试进行安装。

  4. 将 FIP 添加到 install-config.yaml 文件中,作为以下参数的值:

    • platform.openstack.ingressFloatingIP
    • platform.openstack.apiFloatingIP

如果使用这些值,还必须在 install-config.yaml 文件中输入一个外部网络作为 platform.openstack.externalNetwork 参数的值。

提示

您可以通过分配浮动 IP 地址并更新防火墙配置,使 OpenShift Container Platform 资源在集群外可用。

4.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>
Copy to Clipboard Toggle word wrap

如果您不控制 DNS 服务器,您可以将记录添加到 /etc/hosts 文件中。此操作使 API 可供您自己访问,不适合于生产部署,而是允许安装以进行开发和测试。

4.14. 部署集群

您可以在兼容云平台上安装 OpenShift Container Platform。

重要

在初始安装过程中,您只能运行安装程序的 create cluster 命令一次。

先决条件

  • 获取 OpenShift Container Platform 安装程序和集群的 pull secret。
  • 验证主机上的云供应商帐户是否有部署集群的正确权限。权限不正确的帐户会导致安装过程失败,并显示包括缺失权限的错误消息。

流程

  • 进入包含安装程序的目录并初始化集群部署:

    $ ./openshift-install create cluster --dir <installation_directory> \ 
    1
    
        --log-level=info 
    2
    Copy to Clipboard Toggle word wrap
    1
    对于 <installation_directory>,请指定自定义 ./install-config.yaml 文件的位置。
    2
    要查看不同的安装详情,请指定 warndebugerror,而不是 info

验证

当集群部署成功完成时:

  • 终端会显示用于访问集群的说明,包括指向 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
Copy to Clipboard Toggle word wrap

重要
  • 安装程序生成的 Ignition 配置文件包含在 24 小时后过期的证书,然后在过期时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的 node-bootstrapper 证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。
  • 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。

4.15. 验证集群状态

您可以在安装过程中或安装后验证 OpenShift Container Platform 集群的状态。

流程

  1. 在集群环境中,导出管理员的 kubeconfig 文件:

    $ export KUBECONFIG=<installation_directory>/auth/kubeconfig 
    1
    Copy to Clipboard Toggle word wrap
    1
    对于 <installation_directory>,请指定安装文件保存到的目录的路径。

    kubeconfig 文件包含有关集群的信息,供 CLI 用于将客户端连接到正确的集群和 API 服务器。

  2. 查看部署后创建的 control plane 和计算机器:

    $ oc get nodes
    Copy to Clipboard Toggle word wrap
  3. 查看集群的版本:

    $ oc get clusterversion
    Copy to Clipboard Toggle word wrap
  4. 查看 Operator 的状态:

    $ oc get clusteroperator
    Copy to Clipboard Toggle word wrap
  5. 查看集群中的所有正在运行的 pod:

    $ oc get pods -A
    Copy to Clipboard Toggle word wrap

4.16. 使用 CLI 登录集群

您可以通过导出集群 kubeconfig 文件,以默认系统用户身份登录集群。kubeconfig 文件包含有关集群的信息,供 CLI 用于将客户端连接到正确的集群和 API 服务器。该文件特定于集群,在 OpenShift Container Platform 安装过程中创建。

先决条件

  • 已部署 OpenShift Container Platform 集群。
  • 已安装 oc CLI。

流程

  1. 导出 kubeadmin 凭证:

    $ export KUBECONFIG=<installation_directory>/auth/kubeconfig 
    1
    Copy to Clipboard Toggle word wrap
    1
    对于 <installation_directory>,请指定安装文件保存到的目录的路径。
  2. 验证您可以使用导出的配置成功运行 oc 命令:

    $ oc whoami
    Copy to Clipboard Toggle word wrap

    输出示例

    system:admin
    Copy to Clipboard Toggle word wrap

4.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 订阅。

4.18. 后续步骤

在 OpenShift Container Platform 版本 4.13 中,您可以在运行于用户置备的基础架构上的 Red Hat OpenStack Platform(RHOSP)上安装集群。

通过利用您自己的基础架构,您可以将集群与现有的基础架构集成。与安装程序置备的安装相比,这个过程需要进行更多的操作,因为您必须创建所有 RHOSP 资源,如 Nova 服务器、Neutron 端口和安全组。但是,红帽提供了 Ansible playbook 来帮助您完成部署过程。

5.1. 先决条件

5.2. OpenShift Container Platform 互联网访问

在 OpenShift Container Platform 4.13 中,您需要访问互联网来安装集群。

您必须具有以下互联网访问权限:

  • 访问 OpenShift Cluster Manager Hybrid Cloud Console 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
  • 访问 Quay.io,以获取安装集群所需的软件包。
  • 获取执行集群更新所需的软件包。
重要

如果您的集群无法直接访问互联网,则可以在置备的某些类型的基础架构上执行受限网络安装。在此过程中,您可以下载所需的内容,并使用它为镜像 registry 填充安装软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群前,您要更新镜像 registry 的内容。

为支持 OpenShift Container Platform 安装,您的 Red Hat OpenStack Platform(RHOSP)配额必须满足以下要求:

Expand
表 5.1. RHOSP 上默认 OpenShift Container Platform 集群的建议资源
resourcevalue

浮动 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 机器。

5.3.1. control plane 机器

默认情况下,OpenShift Container Platform 安装过程会创建三台 control plane 机器。

每台机器都需要:

  • 来自 RHOSP 配额的实例
  • 来自 RHOSP 配额的端口
  • 至少有 16 GB 内存和 4 个 vCPU 的类别
  • RHOSP 配额中至少有 100 GB 存储空间

5.3.2. 计算机器

默认情况下,OpenShift Container Platform 安装过程会创建三台计算机器。

每台机器都需要:

  • 来自 RHOSP 配额的实例
  • 来自 RHOSP 配额的端口
  • 至少有 8 GB 内存和 2 个 vCPU 的类别
  • RHOSP 配额中至少有 100 GB 存储空间
提示

计算机器托管您在 OpenShift Container Platform 上运行的应用程序;运行数量应尽可能多。

5.3.3. bootstrap 机器

在安装过程中,会临时置备 bootstrap 机器来支持 control plane。生产 control plane 就绪后,bootstrap 机器会被取消置备。

bootstrap 机器需要:

  • 来自 RHOSP 配额的实例
  • 来自 RHOSP 配额的端口
  • 至少有 16 GB 内存和 4 个 vCPU 的类别
  • RHOSP 配额中至少有 100 GB 存储空间

5.4. 下载 playbook 依赖项

用于简化用户置备的基础架构安装过程的 Ansible playbook 需要几个 Python 模块。在您要运行安装程序的机器上,添加模块的存储库,然后下载它们。

注意

这些说明假设您使用 Red Hat Enterprise Linux(RHEL)8。

先决条件

  • Python 3 已安装在您的机器上。

流程

  1. 在命令行中添加软件仓库:

    1. 使用 Red Hat Subscription Manager 注册:

      $ sudo subscription-manager register # If not done already
      Copy to Clipboard Toggle word wrap
    2. 获取最新的订阅数据:

      $ sudo subscription-manager attach --pool=$YOUR_POOLID # If not done already
      Copy to Clipboard Toggle word wrap
    3. 禁用当前的软件仓库:

      $ sudo subscription-manager repos --disable=* # If not done already
      Copy to Clipboard Toggle word wrap
    4. 添加所需的软件仓库:

      $ sudo subscription-manager repos \
        --enable=rhel-8-for-x86_64-baseos-rpms \
        --enable=openstack-16-tools-for-rhel-8-x86_64-rpms \
        --enable=ansible-2.9-for-rhel-8-x86_64-rpms \
        --enable=rhel-8-for-x86_64-appstream-rpms
      Copy to Clipboard Toggle word wrap
  2. 安装模块:

    $ sudo yum install python3-openstackclient ansible python3-openstacksdk python3-netaddr ansible-collections-openstack
    Copy to Clipboard Toggle word wrap
  3. 确保 python 命令指向 python 3:

    $ sudo alternatives --set python /usr/bin/python3
    Copy to Clipboard Toggle word wrap

5.5. 下载安装 playbook

下载 Ansible playbook,可用于在您自己的 Red Hat OpenStack Platform(RHOSP)基础架构上安装 OpenShift Container Platform。

先决条件

  • curl 命令行工具可在您的 计算机上使用。

流程

  • 要将 playbook 下载到您的工作目录中,请从命令行运行以下脚本:

    $ xargs -n 1 curl -O <<< '
            https://raw.githubusercontent.com/openshift/installer/release-4.13/upi/openstack/bootstrap.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.13/upi/openstack/common.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.13/upi/openstack/compute-nodes.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.13/upi/openstack/control-plane.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.13/upi/openstack/inventory.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.13/upi/openstack/network.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.13/upi/openstack/security-groups.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.13/upi/openstack/down-bootstrap.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.13/upi/openstack/down-compute-nodes.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.13/upi/openstack/down-control-plane.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.13/upi/openstack/down-load-balancers.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.13/upi/openstack/down-network.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.13/upi/openstack/down-security-groups.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.13/upi/openstack/down-containers.yaml'
    Copy to Clipboard Toggle word wrap

Playbook 下载到您的计算机。

重要

在安装过程中,您可以修改 playbook 来配置部署。

在集群生命周期中保留所有 playbook。您必须具有 playbook,才能从 RHOSP 中删除 OpenShift Container Platform 集群。

重要

您必须将对 bootstrap.yaml, compute-nodes.yaml, control-plane.yaml, network.yaml, 和 security-groups.yaml 文件的编辑与相应的前缀为 down- 的 playbook 匹配。例如,对 bootstrap.yaml 文件的编辑也必须反映在 down-bootstrap.yaml 文件中。如果没有编辑这两个文件,则支持的删除集群过程将失败。

5.6. 获取安装程序

在安装 OpenShift Container Platform 前,将安装文件下载到您用于安装的主机上。

先决条件

  • 您有一台运行 Linux 或 macOS 的计算机,本地磁盘空间为 500 MB。

流程

  1. 访问 OpenShift Cluster Manager 站点的 Infrastructure Provider 页面。如果您有红帽帐户,请使用您的凭证登录。如果没有,请创建一个帐户。
  2. 选择您的基础架构供应商。
  3. 进入到安装类型的页面,下载与您的主机操作系统和架构对应的安装程序,并将该文件放在您要存储安装配置文件的目录中。

    重要

    安装程序会在用来安装集群的计算机上创建几个文件。在完成集群安装后,您必须保留安装程序和安装程序所创建的文件。这两个文件都需要删除集群。

    重要

    删除安装程序创建的文件不会删除您的集群,即使集群在安装过程中失败也是如此。要删除集群,请为特定云供应商完成 OpenShift Container Platform 卸载流程。

  4. 提取安装程序。例如,在使用 Linux 操作系统的计算机上运行以下命令:

    $ tar -xvf openshift-install-linux.tar.gz
    Copy to Clipboard Toggle word wrap
  5. 从 Red Hat OpenShift Cluster Manager 下载安装 pull secret。此 pull secret 允许您与所含授权机构提供的服务进行身份验证,这些服务包括为 OpenShift Container Platform 组件提供容器镜像的 Quay.io。

5.7. 为集群节点 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 公钥。

重要

不要在生产环境中跳过这个过程,在生产环境中需要灾难恢复和调试。

注意

您必须使用本地密钥,而不是使用特定平台方法配置 的密钥,如 AWS 密钥对

流程

  1. 如果您在本地计算机上没有可用于在集群节点上进行身份验证的现有 SSH 密钥对,请创建一个。例如,在使用 Linux 操作系统的计算机上运行以下命令:

    $ ssh-keygen -t ed25519 -N '' -f <path>/<file_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    指定新 SSH 密钥的路径和文件名,如 ~/.ssh/id_ed25519。如果您已有密钥对,请确保您的公钥位于 ~/.ssh 目录中。
  2. 查看公共 SSH 密钥:

    $ cat <path>/<file_name>.pub
    Copy to Clipboard Toggle word wrap

    例如,运行以下命令来查看 ~/.ssh/id_ed25519.pub 公钥:

    $ cat ~/.ssh/id_ed25519.pub
    Copy to Clipboard Toggle word wrap
  3. 将 SSH 私钥身份添加到本地用户的 SSH 代理(如果尚未添加)。在集群节点上,或者要使用 ./openshift-install gather 命令,需要对该密钥进行 SSH 代理管理,才能在集群节点上进行免密码 SSH 身份验证。

    注意

    在某些发行版中,自动管理默认 SSH 私钥身份,如 ~/.ssh/id_rsa~/.ssh/id_dsa

    1. 如果 ssh-agent 进程尚未为您的本地用户运行,请将其作为后台任务启动:

      $ eval "$(ssh-agent -s)"
      Copy to Clipboard Toggle word wrap

      输出示例

      Agent pid 31874
      Copy to Clipboard Toggle word wrap

  4. 将 SSH 私钥添加到 ssh-agent

    $ ssh-add <path>/<file_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    指定 SSH 私钥的路径和文件名,如 ~/.ssh/id_ed25519.pub

    输出示例

    Identity added: /home/<you>/<path>/<file_name> (<computer_name>)
    Copy to Clipboard Toggle word wrap

后续步骤

  • 安装 OpenShift Container Platform 时,为安装程序提供 SSH 公钥。

5.8. 创建 Red Hat Enterprise Linux CoreOS(RHCOS)镜像

OpenShift Container Platform 安装程序要求 Red Hat OpenStack Platform(RHOSP)集群中存在 Red Hat Enterprise Linux CoreOS(RHCOS)镜像。检索最新的 RHCOS 镜像,然后使用 RHOSP CLI 上传该镜像。

先决条件

  • 已安装 RHOSP CLI。

流程

  1. 登录到红帽客户门户网站的产品 下载页面
  2. Version 下,为 Red Hat Enterprise Linux(RHEL)8 选择 OpenShift Container Platform 4.13 的最新发行版本。

    重要

    RHCOS 镜像可能不会随着 OpenShift Container Platform 的每个发行版本而改变。您必须下载最高版本的镜像,其版本号应小于或等于您安装的 OpenShift Container Platform 版本。如果可用,请使用与 OpenShift Container Platform 版本匹配的镜像版本。

  3. 下载 Red Hat Enterprise Linux CoreOS(RHCOS)- OpenStack Image(QCOW)。
  4. 解压缩镜像。

    注意

    您必须解压 RHOSP 镜像,然后集群才能使用它。下载的文件的名称可能不包含压缩扩展名,如 .gz 或. tgz。要查找是否或者如何压缩文件,请在命令行中输入:

    $ file <name_of_downloaded_file>
    Copy to Clipboard Toggle word wrap
  5. 从您下载的镜像,使用 RHOSP CLI 在集群中创建名为 rhcos 的镜像:

    $ openstack image create --container-format=bare --disk-format=qcow2 --file rhcos-${RHCOS_VERSION}-openstack.qcow2 rhcos
    Copy to Clipboard Toggle word wrap
    重要

    根据您的 RHOSP 环境,您可能能够以. raw.qcow2 格式 上传镜像。如果使用 Ceph,则必须使用 .raw 格式。

    警告

    如果安装程序发现多个同名的镜像,它会随机选择其中之一。为避免这种行为,请在 RHOSP 中为资源创建唯一名称。

将镜像上传到 RHOSP 后,就可以在安装过程中使用它。

5.9. 验证外部网络访问

OpenShift Container Platform 安装过程需要外部网络访问权限。您必须为其提供外部网络值,否则部署会失败。在开始这个过程前,请验证 Red Hat OpenStack Platform(RHOSP)中是否存在具有外部路由器类型的网络。

流程

  1. 使用 RHOSP CLI 验证"外部"网络的名称和 ID:

    $ openstack network list --long -c ID -c Name -c "Router Type"
    Copy to Clipboard Toggle word wrap

    输出示例

    +--------------------------------------+----------------+-------------+
    | ID                                   | Name           | Router Type |
    +--------------------------------------+----------------+-------------+
    | 148a8023-62a7-4672-b018-003462f8d7dc | public_network | External    |
    +--------------------------------------+----------------+-------------+
    Copy to Clipboard Toggle word wrap

网络列表中会显示具有外部路由器类型的网络。如果至少有一个没有,请参阅创建默认浮动 IP 网络创建默认供应商网络

注意

如果启用了 Neutron 中继服务插件,则默认创建一个中继端口。如需更多信息,请参阅 Neutron 中继端口

5.10. 启用对环境的访问

在部署时,所有 OpenShift Container Platform 机器都是在 Red Hat OpenStack Platform(RHOSP)租户网络中创建的。因此,大多数 RHOSP 部署中都无法直接访问它们。

您可以在安装过程中使用浮动 IP 地址(FIP)来配置 OpenShift Container Platform API 和应用程序访问。您还可以在没有配置 FIP 的情况下完成安装,但安装程序不会配置一种从外部访问 API 或应用程序的方法。

5.10.1. 启用通过浮动 IP 地址进行访问

创建浮动 IP(FIP)地址,以便外部访问 OpenShift Container Platform API、集群应用程序和 bootstrap 过程。

流程

  1. 使用 Red Hat OpenStack Platform(RHOSP)CLI 创建 API FIP:

    $ openstack floating ip create --description "API <cluster_name>.<base_domain>" <external_network>
    Copy to Clipboard Toggle word wrap
  2. 使用 Red Hat OpenStack Platform(RHOSP)CLI,创建应用程序或 Ingress,FIP:

    $ openstack floating ip create --description "Ingress <cluster_name>.<base_domain>" <external_network>
    Copy to Clipboard Toggle word wrap
  3. 使用 Red Hat OpenStack Platform(RHOSP)CLI 创建 bootstrap FIP:

    $ openstack floating ip create --description "bootstrap machine" <external_network>
    Copy to Clipboard Toggle word wrap
  4. 在 API 和 Ingress FIP 的 DNS 服务器中添加符合这些模式的记录:

    api.<cluster_name>.<base_domain>.  IN  A  <API_FIP>
    *.apps.<cluster_name>.<base_domain>. IN  A <apps_FIP>
    Copy to Clipboard Toggle word wrap
    注意

    如果您不控制 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 控制台和监控界面的访问权限。您还可以使用 kubectloc。您可以使用指向 <application_floating_ip> 的额外条目来访问用户应用程序。此操作使 API 和应用程序可供您访问,不适合于生产部署,但允许对开发和测试进行安装。

  5. 将 FIP 添加到 inventory.yaml 文件中,作为以下变量的值:

    • os_api_fip
    • os_bootstrap_fip
    • os_ingress_fip

如果使用这些值,还必须在 inventory.yaml 文件中输入外部网络作为 os_external_network 变量的值。

提示

您可以通过分配浮动 IP 地址并更新防火墙配置,使 OpenShift Container Platform 资源在集群外可用。

5.10.2. 完成没有浮动 IP 地址的安装

您可以在 Red Hat OpenStack Platform(RHOSP)上安装 OpenShift Container Platform,而无需提供浮动 IP 地址。

inventory.yaml 文件中,不要定义以下变量:

  • os_api_fip
  • os_bootstrap_fip
  • os_ingress_fip

如果无法提供外部网络,也可以将 os_external_network 留 空。如果没有提供 for os_external_network 值,则不会为您创建路由器,如果没有额外的操作,安装程序将无法从 Glance 检索镜像。之后在安装过程中,当您创建网络资源时,您必须自行配置外部连接。

如果您使用 wait-for 命令从因为缺少浮动 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>
Copy to Clipboard Toggle word wrap

如果您不控制 DNS 服务器,您可以将记录添加到 /etc/hosts 文件中。此操作使 API 可供您自己访问,不适合于生产部署,而是允许安装以进行开发和测试。

5.11. 为安装程序定义参数

OpenShift Container Platform 安装程序依赖于一个名为 clouds.yaml 的文件。该文件描述了 Red Hat OpenStack Platform(RHOSP)配置参数,包括项目名称、登录信息和授权服务 URL。

流程

  1. 创建 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'
      Copy to Clipboard Toggle word wrap
  2. 如果您的 RHOSP 安装使用自签名证书颁发机构(CA)证书进行端点身份验证:

    1. 将证书颁发机构文件复制到您的机器中。
    2. cacerts 键添加到 clouds.yaml 文件。该值必须是到 CA 证书的绝对、不可 root 访问的路径:

      clouds:
        shiftstack:
          ...
          cacert: "/etc/pki/ca-trust/source/anchors/ca.crt.pem"
      Copy to Clipboard Toggle word wrap
      提示

      使用自定义 CA 证书运行安装程序后,您可以通过编辑 cloud-provider-config keymap 中的 ca-cert.pem 键的值来更新证书。在命令行中运行:

      $ oc edit configmap -n openshift-config cloud-provider-config
      Copy to Clipboard Toggle word wrap
  3. clouds.yaml 文件放在以下位置之一:

    1. OS_CLIENT_CONFIG_FILE 环境变量的值
    2. 当前目录
    3. 特定于 Unix 的用户配置目录,如 ~/.config/openstack/clouds.yaml
    4. 特定于 Unix 的站点配置目录,如 /etc/openstack/clouds.yaml

      安装程序会按顺序搜索 clouds.yaml

5.12. 创建安装配置文件

您可以自定义在 Red Hat OpenStack Platform(RHOSP)上安装的 OpenShift Container Platform 集群。

先决条件

  • 获取 OpenShift Container Platform 安装程序和集群的 pull secret。
  • 在订阅级别获取服务主体权限。

流程

  1. 创建 install-config.yaml 文件。

    1. 进入包含安装程序的目录并运行以下命令:

      $ ./openshift-install create install-config --dir <installation_directory> 
      1
      Copy to Clipboard Toggle word wrap
      1
      对于 <installation_directory>,请指定要存储安装程序创建的文件的目录名称。

      在指定目录时:

      • 验证该目录是否具有执行权限。在安装目录中运行 Terraform 二进制文件需要这个权限。
      • 使用空目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。

        注意

        始终删除 ~/.powervs 目录,以避免重复使用过时的配置。运行以下命令:

        $ rm -rf ~/.powervs
        Copy to Clipboard Toggle word wrap
    2. 在提示符处,提供云的配置详情:

      1. 可选: 选择用于访问集群机器的 SSH 密钥。

        注意

        对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定 ssh-agent 进程使用的 SSH 密钥。

      2. 选择 openstack 作为目标平台。
      3. 指定用于安装集群的 Red Hat OpenStack Platform(RHOSP)外部网络名称。
      4. 指定用于从外部访问 OpenShift API 的浮动 IP 地址。
      5. 指定至少有 16 GB RAM 用于 control plane 节点,以及计算节点的 8 GB RAM。
      6. 选择集群要部署到的基域。所有 DNS 记录都将是这个基域的子域,并且还包括集群名称。
      7. 为集群输入一个名称。名称长度必须为 14 个或更少字符。
      8. 粘贴 Red Hat OpenShift Cluster Manager 中的 pull secret
  2. 修改 install-config.yaml 文件。您可以在"安装配置参数"部分找到有关可用参数的更多信息。
  3. 备份 install-config.yaml 文件,以便您可以使用它安装多个集群。

    重要

    install-config.yaml 文件会在安装过程中消耗掉。如果要重复使用该文件,您必须立即备份该文件。

现在,文件 install-config.yaml 位于您指定的目录中。

5.13. 安装配置参数

在部署 OpenShift Container Platform 集群前,您可以提供参数值来描述托管集群的云平台中的帐户,并选择性地自定义集群平台。在创建 install-config.yaml 安装配置文件时,您可以通过命令行为所需参数提供值。如果自定义集群,您可以修改 install-config.yaml 文件以提供有关平台的更多详情。

重要

安装后,您无法更改 install-config.yaml 文件中的这些参数。

5.13.1. 所需的配置参数

下表描述了所需的安装配置参数:

Expand
表 5.2. 所需的参数
参数描述

apiVersion

install-config.yaml 内容的 API 版本。当前版本为 v1。安装程序可能还支持旧的 API 版本。

字符串

baseDomain

云供应商的基域。基域用于创建到 OpenShift Container Platform 集群组件的路由。集群的完整 DNS 名称是 baseDomainmetadata.name 参数值的组合,其格式为 <metadata.name>.<baseDomain>

完全限定域名或子域名,如 example.com

metadata

Kubernetes 资源 ObjectMeta,其中只消耗 name 参数。

对象

metadata.name

集群的名称。集群的 DNS 记录是 {{.metadata.name}}.{{.baseDomain}} 的子域。

小写字母、连字符(-)和句点(.)字符串,如 dev。字符串长度必须为 14 个字符或更少。

platform

要执行安装的具体平台配置: alibabacloudawsbaremetalazuregcpibmcloudnutanixopenstackovirtpowervsvsphere{}。有关 platform.<platform> 参数的更多信息,请参考下表中您的特定平台。

对象

pullSecret

从 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"
      }
   }
}
Copy to Clipboard Toggle word wrap

5.13.2. 网络配置参数

您可以根据现有网络基础架构的要求自定义安装配置。例如,您可以扩展集群网络的 IP 地址块,或者提供不同于默认值的不同 IP 地址块。

仅支持 IPv4 地址。

注意

Red Hat OpenShift Data Foundation 灾难恢复解决方案不支持 Globalnet。对于区域灾难恢复场景,请确保为每个集群中的集群和服务网络使用非重叠的专用 IP 地址。

Expand
表 5.3. 网络参数
参数描述

networking

集群网络的配置。

对象

注意

您不能在安装后更改 networking 对象指定的参数。

networking.networkType

要安装的 Red Hat OpenShift Networking 网络插件。

OpenShiftSDNOVNKubernetesOpenShiftSDN 是 all-Linux 网络的 Container Network Interface (CNI)插件。OVNKubernetes 是 Linux 网络和包含 Linux 和 Windows 服务器的混合网络的 CNI 插件。默认值为 OVNKubernetes

networking.clusterNetwork

pod 的 IP 地址块。

默认值为 10.128.0.0/14,主机前缀为 /23

如果您指定了多个 IP 地址块,块不得重叠。

对象数组。例如:

networking:
  clusterNetwork:
  - cidr: 10.128.0.0/14
    hostPrefix: 23
Copy to Clipboard Toggle word wrap

networking.clusterNetwork.cidr

使用 networking.clusterNetwork 时需要此项。IP 地址块。

IPv4 网络。

无类别域间路由(CIDR)表示法中的 IP 地址块。IPv4 块的前缀长度介于 0 到 32 之间

networking.clusterNetwork.hostPrefix

分配给每个节点的子网前缀长度。例如,如果 hostPrefix 设为 23,则每个节点从 given cidr 中分配 a /23 子网。hostPrefix23 提供 510(2^(32 - 23)- 2)pod IP 地址。

子网前缀。

默认值为 23

networking.serviceNetwork

服务的 IP 地址块。默认值为 172.30.0.0/16

OpenShift SDN 和 OVN-Kubernetes 网络插件只支持服务网络的一个 IP 地址块。

CIDR 格式具有 IP 地址块的数组。例如:

networking:
  serviceNetwork:
   - 172.30.0.0/16
Copy to Clipboard Toggle word wrap

networking.machineNetwork

机器的 IP 地址块。

如果您指定了多个 IP 地址块,块不得重叠。

对象数组。例如:

networking:
  machineNetwork:
  - cidr: 10.0.0.0/16
Copy to Clipboard Toggle word wrap

networking.machineNetwork.cidr

使用 networking.machineNetwork 时需要此项。IP 地址块。libvirt 和 IBM Power Virtual Server 以外的所有平台的默认值为 10.0.0.0/16。对于 libvirt,默认值 为 192.168.126.0/24。对于 IBM Power Virtual Server,默认值为 192.168.0.0/24

CIDR 表示法中的 IP 网络块。

例如: 10.0.0.0/16

注意

networking.machineNetwork 设置为与首选 NIC 所在的 CIDR 匹配。

5.13.3. 可选的配置参数

下表描述了可选的安装配置参数:

Expand
表 5.4. 可选参数
参数描述

additionalTrustBundle

添加到节点可信证书存储中的 PEM 编码 X.509 证书捆绑包。配置代理时,也可以使用此信任捆绑包。

字符串

功能

控制可选核心组件的安装。您可以通过禁用可选组件来减少 OpenShift Container Platform 集群的空间。如需更多信息,请参阅安装中的"集群功能"页面。

字符串数组

capabilities.baselineCapabilitySet

选择要启用的一组初始可选功能。有效值为 Nonev4.11v4.12vCurrent。默认值为 vCurrent

字符串

capabilities.additionalEnabledCapabilities

将可选功能集合扩展到您在 baselineCapabilitySet 中指定的范围。您可以在此参数中指定多个功能。

字符串数组

cpuPartitioningMode

启用工作负载分区,它会隔离 OpenShift Container Platform 服务、集群管理工作负载和基础架构 pod,以便在保留的一组 CPU 上运行。您只能在安装过程中启用工作负载分区。您不能在安装后禁用它。虽然此字段启用工作负载分区,但它不会将工作负载配置为使用特定的 CPU。如需更多信息,请参阅 Scalability and Performance 部分中的 Workload partitioning 页面。

NoneAllNodes.None 是默认值。

Compute

组成计算节点的机器的配置。

MachinePool 对象的数组。

compute.architecture

决定池中机器的指令集合架构。目前,不支持具有不同架构的集群。所有池都必须指定相同的架构。有效值为默认值: amd64

字符串

compute: 超线程:

是否在计算机器上启用或禁用并发多 线程或超线程。默认情况下,启用并发多线程以提高机器内核的性能。

重要

如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。

enabledDisabled

compute.name

使用 compute 时需要此项。机器池的名称。

worker

compute.platform

使用 compute 时需要此项。使用此参数指定托管 worker 机器的云供应商。此参数值必须与 controlPlane.platform 参数值匹配。

alibabacloud,aws,azure,gcp,ibmcloud,nutanix,openstack,ovirt,powervs,vsphere, 或 {}

compute.replicas

要置备的计算机器数量,也称为 worker 机器。

大于或等于 2 的正整数。默认值为 3

featureSet

为功能集启用集群。功能集是 OpenShift Container Platform 功能的集合,默认情况下不启用。有关在安装过程中启用功能集的更多信息,请参阅"使用功能门启用功能"。

字符串.要启用的功能集的名称,如 TechPreviewNoUpgrade

controlPlane

组成 control plane 的机器的配置。

MachinePool 对象的数组。

controlPlane.architecture

决定池中机器的指令集合架构。目前,不支持具有不同架构的集群。所有池都必须指定相同的架构。有效值为默认值: amd64

字符串

controlPlane: 超线程:

是否在 control plane 机器上启用或禁用并发多 线程或超线程。默认情况下,启用并发多线程以提高机器内核的性能。

重要

如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。

enabledDisabled

controlPlane.name

使用 controlPlane 时需要此项。机器池的名称。

master

controlPlane.platform

使用 controlPlane 时需要此项。使用此参数指定托管 control plane 机器的云供应商。此参数值必须与 compute.platform 参数值匹配。

alibabacloud,aws,azure,gcp,ibmcloud,nutanix,openstack,ovirt,powervs,vsphere, 或 {}

controlPlane.replicas

要置备的 control plane 机器数量。

唯一支持的值是 3,这是默认值。

credentialsMode

Cloud Credential Operator(CCO)模式。在没有指定模式时,CCO 会动态尝试决定提供的凭证的功能,在支持多个模式的平台上首选 mint 模式。

注意

不是所有 CCO 模式都支持所有云供应商。如需有关 CCO 模式的更多信息,请参阅集群 Operator 参考内容中的 Cloud Credential Operator 条目。

注意

如果您的 AWS 帐户启用了服务控制策略 (SCP),您必须将 credentialsMode 参数配置为 MintPassthroughManual

MintPassthroughManual 或空字符串("")。

imageContentSources

release-image 内容的源和存储库。

对象数组。包括一个 source 以及可选的 mirrors,如本表的以下行所述。

imageContentSources.source

使用 imageContentSources 时需要此项。指定用户在镜像拉取规格中引用的存储库。

字符串

imageContentSources.mirrors

指定可能还包含同一镜像的一个或多个存储库。

字符串数组

publish

如何发布或公开集群的面向用户的端点,如 Kubernetes API、OpenShift 路由。

内部或外部 .默认值为 External

非云平台不支持将此字段设置为 Internal

重要

如果字段的值设为 Internal,集群就会变得无法正常工作。如需更多信息,请参阅 BZ#1953035

sshKey

用于验证对集群机器的访问的 SSH 密钥。

注意

对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定 ssh-agent 进程使用的 SSH 密钥。

例如,sshKey: ssh-ed25519 AAAA..

  1. 不是所有 CCO 模式都支持所有云供应商。有关 CCO 模式的更多信息,请参阅身份验证和授权内容中的"管理云供应商凭证"条目。

下表中描述了其他 RHOSP 配置参数:

Expand
表 5.5. 其他 RHOSP 参数
参数描述

compute.platform.openstack.rootVolume.size

对于计算机器,以 GB 为单位的根卷大小。如果没有设置这个值,机器将使用临时存储。

整数,如 30

compute.platform.openstack.rootVolume.type

对于计算机器,根卷的类型。

字符串,如 performance

controlPlane.platform.openstack.rootVolume.size

对于 control plane 机器,以 GB 为单位表示的根卷大小。如果没有设置这个值,机器将使用临时存储。

整数,如 30

controlPlane.platform.openstack.rootVolume.type

对于 control plane 机器,根卷的类型。

字符串,如 performance

platform.openstack.cloud

要使用的 RHOSP 云名称,来自于 clouds.yaml 文件中的云列表。

字符串,如 MyCloud

platform.openstack.externalNetwork

用于安装的 RHOSP 外部网络名称。

字符串,如 external

platform.openstack.computeFlavor

用于 control plane 和计算机器的 RHOSP 类别。

此属性已弃用。要将 flavor 用作所有机器池的默认值,请将其添加为 platform.openstack.defaultMachinePlatform 属性中的 type 键的值。您还可以分别为每个机器池设置 flavor 值。

字符串,如 m1.xlarge

5.13.5. 可选的 RHOSP 配置参数

下表描述了可选的 RHOSP 配置参数:

Expand
表 5.6. 可选的 RHOSP 参数
参数描述

compute.platform.openstack.additionalNetworkIDs

与计算机器关联的其他网络。不为额外网络创建允许的地址对。

一个或多个 UUID 的列表作为字符串。例如: fa806b2f-ac49-4bce-b9db-124bc64209bf

compute.platform.openstack.additionalSecurityGroupIDs

与计算机器关联的其他安全组。

一个或多个 UUID 的列表作为字符串。例如,7ee219f3-d2e9-48a1-96c2-e7429f1b0da7

compute.platform.openstack.zones

RHOSP Compute(Nova)可用区(AZ)在其中安装机器。如果没有设置此参数,安装程序会依赖于配置了 RHOSP 管理员的 Nova 的默认设置。

在使用 Kuryr 的集群上,RHOSP Octavia 不支持可用区。负载均衡器,如果您使用 Amphora 供应商驱动程序,则依赖 Amphora 虚拟机的 OpenShift Container Platform 服务不会根据此属性的值创建。

字符串列表。例如: ["zone-1", "zone-2"]

compute.platform.openstack.rootVolume.zones

对于计算机器,可在其上安装根卷的可用性区域。如果没有为此参数设置值,安装程序会选择默认的可用性区域。

字符串列表,如 ["zone-1", "zone-2"]

compute.platform.openstack.serverGroupPolicy

要应用到池中包含计算机器的组策略。您不能在创建后更改服务器组策略或关系。支持的选项包括 anti-affinity, soft-affinity, 和 soft-anti-affinity默认值为 soft-anti-affinity

affinity 策略可防止迁移,因此会影响 RHOSP 升级。不支持 affinity 策略。

如果使用严格的 anti-affinity 策略,实例迁移过程中需要额外的 RHOSP 主机。

应用到机器池的服务器组策略。例如,soft-affinity

controlPlane.platform.openstack.additionalNetworkIDs

与 control plane 机器关联的额外网络。不为额外网络创建允许的地址对。

附加到 control plane 机器的额外网络也会附加到 bootstrap 节点。

一个或多个 UUID 的列表作为字符串。例如: fa806b2f-ac49-4bce-b9db-124bc64209bf

controlPlane.platform.openstack.additionalSecurityGroupIDs

与 control plane 机器关联的其他安全组。

一个或多个 UUID 的列表作为字符串。例如,7ee219f3-d2e9-48a1-96c2-e7429f1b0da7

controlPlane.platform.openstack.zones

RHOSP Compute(Nova)可用区(AZ)在其中安装机器。如果没有设置此参数,安装程序会依赖于配置了 RHOSP 管理员的 Nova 的默认设置。

在使用 Kuryr 的集群上,RHOSP Octavia 不支持可用区。负载均衡器,如果您使用 Amphora 供应商驱动程序,则依赖 Amphora 虚拟机的 OpenShift Container Platform 服务不会根据此属性的值创建。

字符串列表。例如: ["zone-1", "zone-2"]

controlPlane.platform.openstack.rootVolume.zones

对于 control plane 机器,安装根卷的可用区。如果没有设置这个值,安装程序会选择默认可用区。

字符串列表,如 ["zone-1", "zone-2"]

controlPlane.platform.openstack.serverGroupPolicy

要应用到池中包含 control plane 机器的组的服务器组策略。您不能在创建后更改服务器组策略或关系。支持的选项包括 anti-affinity, soft-affinity, 和 soft-anti-affinity默认值为 soft-anti-affinity

affinity关联性 策略会阻止迁移,因此会影响 RHOSP 升级。不支持 affinity 策略。

如果使用严格的 anti-affinity 策略,实例迁移过程中需要额外的 RHOSP 主机。

应用到机器池的服务器组策略。例如,soft-affinity

platform.openstack.clusterOSImage

安装程序从中下载 RHCOS 镜像的位置。

您必须设置此参数才能在受限网络中执行安装。

HTTP 或 HTTPS URL,可选使用 SHA-256 校验和。

例如: http://mirror.example.com/images/rhcos-43.81.201912131630.0-openstack.x86_64.qcow2.gz?sha256=ffebbd68e8a1f2a245ca19522c16c86f67f9ac8e4e0c1f0a812b068b16f7265d。该值也可以是现有 Glance 镜像的名称,如 my-rhcos

platform.openstack.clusterOSImageProperties

在 Glance 中添加至安装程序上传的 ClusterOSImage 的属性。如果将 platform.openstack.clusterOSImage 设置为现有的 Glance 镜像,则此属性将被忽略。

您可以使用此属性超过每个节点 26 个 PV 的 RHOSP 的默认持久性卷(PV)限值。要超过这个限制,请将 virtio- scsi_model 属性值设置为 virtio-scsi, 并将 hw_disk_bus 值设置为 scsi

您还可以使用此属性通过包含值为 yeshw_qemu_guest_agent 属性来启用 QEMU 客户机代理。

一组字符串属性。例如:

clusterOSImageProperties:
    hw_scsi_model: "virtio-scsi"
    hw_disk_bus: "scsi"
    hw_qemu_guest_agent: "yes"
Copy to Clipboard Toggle word wrap

platform.openstack.defaultMachinePlatform

默认机器池平台配置。

{
   "type": "ml.large",
   "rootVolume": {
      "size": 30,
      "type": "performance"
   }
}
Copy to Clipboard Toggle word wrap

platform.openstack.ingressFloatingIP

与 Ingress 端口关联的现有浮动 IP 地址。要使用此属性,还必须定义 platform.openstack.externalNetwork 属性。

IP 地址,如 128.0.0.1

platform.openstack.apiFloatingIP

与 API 负载均衡器关联的现有浮动 IP 地址。要使用此属性,还必须定义 platform.openstack.externalNetwork 属性。

IP 地址,如 128.0.0.1

platform.openstack.externalDNS

集群实例用于 DNS 解析的外部 DNS 服务器的 IP 地址。

IP 地址列表作为字符串。例如 ,["8.8.8.8", "192.168.1.12"]

platform.openstack.loadbalancer

是否使用默认的内部负载均衡器。如果值设为 UserManaged,则此默认负载均衡器被禁用,以便您可以部署使用外部用户管理的负载均衡器的集群。如果没有设置该参数,或者值为 OpenShiftManagedDefault,集群将使用默认负载均衡器。

UserManagedOpenShiftManagedDefault.

platform.openstack.machinesSubnet

集群节点使用的 RHOSP 子网的 UUID。在这个子网上创建节点和虚拟 IP(VIP)端口。

networking.machineNetwork 中的第一个项必须与 machine Subnet 的值匹配。

如果部署到自定义子网中,则无法将外部 DNS 服务器指定到 OpenShift Container Platform 安装程序。相反,将 DNS 添加到 RHOSP 中的子网中

作为字符串的 UUID。例如: fa806b2f-ac49-4bce-b9db-124bc64209bf

5.13.6. 故障域的 RHOSP 参数

重要

RHOSP 故障域只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

Red Hat OpenStack Platform (RHOSP) 部署没有单一的故障域实现。相反,可用区会为每个服务单独定义,如计算服务、Nova;网络服务、Neutron;存储服务 Cinder。

从 OpenShift Container Platform 4.13 开始,RHOSP 部署有统一的故障域定义,覆盖所有支持的可用区类型。您可以使用故障域从单一位置控制 Nova、Neutron 和 Cinder 配置的相关方面。

在 RHOSP 中,端口描述了网络连接,并映射到计算机器内的接口。一个端口还:

  • 由网络或多个子网定义
  • 将机器连接到一个或多个子网

故障域使用端口对部署的服务进行分组。如果使用故障域,每台机器都会连接到:

  • 对象存在时 ID control-planeportTarget 对象。
  • 本身故障域中的所有非 control-plane portTarget 对象。
  • 机器池的 additionalNetworkIDs 列表中的所有网络。

要为机器池配置故障域,请编辑 controlPlane.platform.openstack.failureDomains 下的可用区和端口目标参数。

Expand
表 5.7. 故障域的 RHOSP 参数
参数描述

platform.openstack.failuredomains.computeAvailabilityZone

服务器的可用区。如果没有指定,则使用集群默认。

可用区的名称。例如,nova-1

platform.openstack.failuredomains.storageAvailabilityZone

root 卷的可用区。如果没有指定,则使用集群默认。

可用区的名称。例如,cinder-1

platform.openstack.failuredomains.portTargets

portTarget 对象列表,各自定义附加到故障域中机器的网络连接。

portTarget 对象列表。

platform.openstack.failuredomains.portTargets.portTarget.id

单个端口目标的 ID。要将该端口目标选为机器的第一个网络,请将此参数的值设置为 control-plane。如果此参数具有不同的值,它将被忽略。

control-plane 或任意字符串。

platform.openstack.failuredomains.portTargets.portTarget.network

必需。附加到故障域中机器的网络的名称或 ID。

包含名称或 UUID 的 network 对象。例如:

network:
  id: 8db6a48e-375b-4caa-b20b-5b9a7218bfe6
Copy to Clipboard Toggle word wrap

或:

network:
  name: my-network-1
Copy to Clipboard Toggle word wrap

platform.openstack.failuredomains.portTargets.portTarget.fixedIPs

要分配固定 IP 地址的子网。这些子网必须与端口位于同一个网络中。

subnet 对象列表。

重要

您不能组合区域字段和故障域。如果要使用故障域,则必须取消设置 controlPlane.zonecontrolPlane.rootVolume.zone 字段。

5.13.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.apiVIPsplatform.openstack.ingressVIPs 设置值。

重要

集群安装后无法调整网络的 CIDR 范围。红帽不提供有关在集群安装过程中确定范围的直接指导,因为它需要仔细考虑每个命名空间创建的 pod 数量。

5.13.8. 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...
Copy to Clipboard Toggle word wrap

5.13.9. 使用故障域的安装配置示例

重要

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
# ...
Copy to Clipboard Toggle word wrap

5.13.10. 为机器设置自定义子网

安装程序默认使用的 IP 范围可能与您在安装 OpenShift Container Platform 时创建的 Neutron 子网不匹配。如有必要,通过编辑安装配置文件来更新新机器的 CIDR 值。

先决条件

  • 有 OpenShift Container Platform 安装程序生成的 install-config.yaml 文件。

流程

  1. 在命令行中,浏览包含 install-config.yaml 的目录。
  2. 在该目录中,运行脚本来编辑 install-config.yaml 文件或手动更新该文件:

    • 要使用脚本设置值,请运行:

      $ python -c '
      import yaml;
      path = "install-config.yaml";
      data = yaml.safe_load(open(path));
      data["networking"]["machineNetwork"] = [{"cidr": "192.168.0.0/18"}]; 
      1
      
      open(path, "w").write(yaml.dump(data, default_flow_style=False))'
      Copy to Clipboard Toggle word wrap
      1
      插入与您预期的 Neutron 子网相匹配的值,如 192.0.2.0/24
    • 要手动设置值,请打开 文件,并将 networking.machineCIDR 的值设置为与您预期的 Neutron 子网匹配的内容。

5.13.11. 清空计算机器池

要继续使用您自己的基础架构的安装,请将安装配置文件中的计算机器数量设置为零。之后,您可以手动创建这些机器。

先决条件

  • 有 OpenShift Container Platform 安装程序生成的 install-config.yaml 文件。

流程

  1. 在命令行中,浏览包含 install-config.yaml 的目录。
  2. 在该目录中,运行脚本来编辑 install-config.yaml 文件或手动更新该文件:

    • 要使用脚本设置值,请运行:

      $ python -c '
      import yaml;
      path = "install-config.yaml";
      data = yaml.safe_load(open(path));
      data["compute"][0]["replicas"] = 0;
      open(path, "w").write(yaml.dump(data, default_flow_style=False))'
      Copy to Clipboard Toggle word wrap
    • 要手动设置值,打开该文件并将 compute.<first entry>.replicas 的 值设置为 0

5.13.12. 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 文档中的 了解更多有关供应商和租户网络的信息。

5.13.12.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
    Copy to Clipboard Toggle word wrap
    要为名为"openshift"的项目创建子网,请输入以下命令
    $ openstack subnet create --project openshift
    Copy to Clipboard Toggle word wrap

    要了解更多有关在 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 ...
    Copy to Clipboard Toggle word wrap
  • 可选: 要保护网络,请创建 基于角色的访问控制(RBAC) 规则,以限制对单个项目的网络访问。

您可以在 Red Hat OpenStack Platform(RHOSP) 提供商网络上部署具有主网络接口的 OpenShift Container Platform 集群。

先决条件

  • 您的 Red Hat OpenStack Platform(RHOSP)部署被配置为"RHOSP 供应商网络要求用于集群安装"。

流程

  1. 在文本编辑器中,打开 install-config.yaml 文件。
  2. platform.openstack.apiVIPs 属性的值设置为 API VIP 的 IP 地址。
  3. platform.openstack.ingressVIPs 属性的值设置为 Ingress VIP 的 IP 地址。
  4. platform.openstack.machinesSubnet 属性的值设置为提供商网络子网的 UUID。
  5. networking.machineNetwork.cidr 属性的值设置为提供商网络子网的 CIDR 块。
重要

platform.openstack.apiVIPsplatform.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
Copy to Clipboard Toggle word wrap

1 2
在 OpenShift Container Platform 4.12 及更新的版本中,apiVIPingressVIP 配置设置已弃用。反之,使用列表格式在 apiVIPsingressVIPs 配置设置中输入值。
警告

您不能在将提供商网络用于主网络接口时设置 platform.openstack.externalNetworkplatform.openstack.externalDNS 参数。

在部署集群时,安装程序使用 install-config.yaml 文件在提供商网络上部署集群。

提示

您可以将额外的网络(包括提供商网络)添加到 platform.openstack.additionalNetworkIDs 列表中。

部署集群后,您可以将 pod 附加到额外网络。如需更多信息,请参阅 了解多个网络

5.14. 创建 Kubernetes 清单和 Ignition 配置文件

由于您必须修改一些集群定义文件并手动启动集群机器,因此您必须生成 Kubernetes 清单和 Ignition 配置文件来配置机器。

安装配置文件转换为 Kubernetes 清单。清单嵌套到 Ignition 配置文件中,稍后用于配置集群机器。

重要
  • OpenShift Container Platform 安装程序生成的 Ignition 配置文件包含 24 小时后过期的证书,然后在该时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的 node-bootstrapper 证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。
  • 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。

先决条件

  • 已获得 OpenShift Container Platform 安装程序。
  • 已创建 install-config.yaml 安装配置文件。

流程

  1. 进入包含 OpenShift Container Platform 安装程序的目录,并为集群生成 Kubernetes 清单:

    $ ./openshift-install create manifests --dir <installation_directory> 
    1
    Copy to Clipboard Toggle word wrap
    1
    对于 <installation_directory>,请指定包含您创建的 install-config.yaml 文件的安装目录。
  2. 删除定义 control plane 机器的 Kubernetes 清单文件以及计算机器集:

    $ rm -f openshift/99_openshift-cluster-api_master-machines-*.yaml openshift/99_openshift-cluster-api_worker-machineset-*.yaml
    Copy to Clipboard Toggle word wrap

    由于您要自行创建和管理这些资源,因此不必初始化这些资源。

    • 您可以使用机器 API 来保留计算机器集文件来创建计算机器,但您必须更新对它们的引用以匹配您的环境。
  3. 检查 <installation_directory>/manifests/cluster-scheduler-02-config.yml Kubernetes 清单文件中的 mastersSchedulable 参数是否已设置为 false。此设置可防止在 control plane 机器上调度 pod:

    1. 打开 <installation_directory>/manifests/cluster-scheduler-02-config.yml 文件。
    2. 找到 mastersSchedulable 参数,并确保它被设置为 false
    3. 保存并退出 文件。
  4. 要创建 Ignition 配置文件,请从包含安装程序的目录运行以下命令:

    $ ./openshift-install create ignition-configs --dir <installation_directory> 
    1
    Copy to Clipboard Toggle word wrap
    1
    对于 <installation_directory>,请指定相同的安装目录。

    为安装目录中的 bootstrap、control plane 和计算节点创建 Ignition 配置文件。kubeadmin-passwordkubeconfig 文件在 ./<installation_directory>/auth 目录中创建:

    .
    ├── auth
    │   ├── kubeadmin-password
    │   └── kubeconfig
    ├── bootstrap.ign
    ├── master.ign
    ├── metadata.json
    └── worker.ign
    Copy to Clipboard Toggle word wrap
  5. 将元数据文件的 infraID 密钥导出为环境变量:

    $ export INFRA_ID=$(jq -r .infraID metadata.json)
    Copy to Clipboard Toggle word wrap
提示

metadata.json 中提取 infraID 密钥,并将它用作您创建的所有 RHOSP 资源的前缀。通过这样做,您可以避免在同一项目中进行多个部署时的名称冲突。

5.15. 准备 bootstrap Ignition 文件

OpenShift Container Platform 安装过程依赖于从 bootstrap Ignition 配置文件创建的 bootstrap 机器。

编辑 文件并上传该文件。然后,创建一个 Red Hat OpenStack Platform(RHOSP)用来下载主文件的辅助 bootstrap Ignition 配置文件。

先决条件

  • 您有安装程序生成的 bootstrap Ignition 文件,即 bootstrap.ign
  • 安装程序元数据文件中的基础架构 ID 被设置为环境变量($INFRA_ID)。

    • 如果没有设置变量,请参阅 创建 Kubernetes 清单和 Ignition 配置文件
  • 您可以使用 HTTP(S)来存储 bootstrap Ignition 文件。

    • 所记录的步骤使用 RHOSP 镜像服务(Glance),但也可以使用 RHOSP 存储服务(Swift)、Amazon S3、内部 HTTP 服务器或临时 Nova 服务器。

流程

  1. 运行以下 Python 脚本:该脚本修改 bootstrap Ignition 文件,以设置主机名,并在运行时设置 CA 证书文件:

    import base64
    import json
    import os
    
    with open('bootstrap.ign', 'r') as f:
        ignition = json.load(f)
    
    files = ignition['storage'].get('files', [])
    
    infra_id = os.environ.get('INFRA_ID', 'openshift').encode()
    hostname_b64 = base64.standard_b64encode(infra_id + b'-bootstrap\n').decode().strip()
    files.append(
    {
        'path': '/etc/hostname',
        'mode': 420,
        'contents': {
            'source': 'data:text/plain;charset=utf-8;base64,' + hostname_b64
        }
    })
    
    ca_cert_path = os.environ.get('OS_CACERT', '')
    if ca_cert_path:
        with open(ca_cert_path, 'r') as f:
            ca_cert = f.read().encode()
            ca_cert_b64 = base64.standard_b64encode(ca_cert).decode().strip()
    
        files.append(
        {
            'path': '/opt/openshift/tls/cloud-ca-cert.pem',
            'mode': 420,
            'contents': {
                'source': 'data:text/plain;charset=utf-8;base64,' + ca_cert_b64
            }
        })
    
    ignition['storage']['files'] = files;
    
    with open('bootstrap.ign', 'w') as f:
        json.dump(ignition, f)
    Copy to Clipboard Toggle word wrap
  2. 使用 RHOSP CLI,创建使用 bootstrap Ignition 文件的镜像:

    $ openstack image create --disk-format=raw --container-format=bare --file bootstrap.ign <image_name>
    Copy to Clipboard Toggle word wrap
  3. 获取镜像的详情:

    $ openstack image show <image_name>
    Copy to Clipboard Toggle word wrap

    记录 file 值;它遵循 v2/images/<image_ID>/file 模式。

    注意

    验证您创建的镜像是否活跃。

  4. 检索镜像服务的公共地址:

    $ openstack catalog show image
    Copy to Clipboard Toggle word wrap
  5. 将公共地址与 镜像文件 值组合,并在存储位置保存结果。位置遵循 <image_service_public_URL>/v2/images/<image_ID>/file 模式。
  6. 生成身份验证令牌并保存令牌 ID:

    $ openstack token issue -c id -f value
    Copy to Clipboard Toggle word wrap
  7. 将以下内容插入到名为 $INFRA_ID-bootstrap-ignition.json 的文件中,并编辑占位符以匹配您自己的值:

    {
      "ignition": {
        "config": {
          "merge": [{
            "source": "<storage_url>", 
    1
    
            "httpHeaders": [{
              "name": "X-Auth-Token", 
    2
    
              "value": "<token_ID>" 
    3
    
            }]
          }]
        },
        "security": {
          "tls": {
            "certificateAuthorities": [{
              "source": "data:text/plain;charset=utf-8;base64,<base64_encoded_certificate>" 
    4
    
            }]
          }
        },
        "version": "3.2.0"
      }
    }
    Copy to Clipboard Toggle word wrap
    1
    ignition.config.merge.source 值替换为 bootstrap Ignition 文件存储 URL。
    2
    httpHeaders 中将 name 设置为 "X-Auth-Token"。
    3
    httpHeaders 中将 value 设置为您的令牌 ID。
    4
    如果 bootstrap Ignition 文件服务器使用自签名证书,请包含 base64 编码的证书。
  8. 保存辅助 Ignition 配置文件。

bootstrap Ignition 数据将在安装过程中传递给 RHOSP。

警告

bootstrap Ignition 文件包含敏感信息,如 clouds.yaml 凭证。确保将其保存在安全的地方,并在完成安装后将其删除。

在您自己的基础架构的 Red Hat OpenStack Platform(RHOSP)上安装 OpenShift Container Platform 需要 control plane Ignition 配置文件。您必须创建多个配置文件。

注意

与 bootstrap Ignition 配置一样,您必须明确为每个 control plane 机器定义主机名。

先决条件

  • 来自安装程序元数据文件中的基础架构 ID 被设置为环境变量($INFRA_ID)。

    • 如果没有设置变量,请参阅"创建 Kubernetes 清单和 Ignition 配置文件"。

流程

  • 在命令行中运行以下 Python 脚本:

    $ for index in $(seq 0 2); do
        MASTER_HOSTNAME="$INFRA_ID-master-$index\n"
        python -c "import base64, json, sys;
    ignition = json.load(sys.stdin);
    storage = ignition.get('storage', {});
    files = storage.get('files', []);
    files.append({'path': '/etc/hostname', 'mode': 420, 'contents': {'source': 'data:text/plain;charset=utf-8;base64,' + base64.standard_b64encode(b'$MASTER_HOSTNAME').decode().strip(), 'verification': {}}, 'filesystem': 'root'});
    storage['files'] = files;
    ignition['storage'] = storage
    json.dump(ignition, sys.stdout)" <master.ign >"$INFRA_ID-master-$index-ignition.json"
    done
    Copy to Clipboard Toggle word wrap

    您现在有三个 control plane Ignition 文件:& lt;INFRA_ID>-master-0-ignition.json<INFRA_ID>-master-1-ignition.json<INFRA_ID>-master-2-ignition.json

5.17. 在 RHOSP 上创建网络资源

在您自己的基础架构的 Red Hat OpenStack Platform(RHOSP)安装上创建 OpenShift Container Platform 所需的网络资源。为节省时间,请运行提供的 Ansible playbook,以生成安全组、网络、子网、路由器和端口。

先决条件

  • Python 3 已安装在您的机器上。
  • 下载了"下载 playbook 依赖项"中的模块。
  • 下载了"下载安装 playbook"中的 playbook。

流程

  1. 可选:在 inventory.yaml playbook 中添加外部网络值:

    inventory.yaml Ansible playbook 中的外部网络值示例

    ...
          # The public network providing connectivity to the cluster. If not
          # provided, the cluster external connectivity must be provided in another
          # way.
    
          # Required for os_api_fip, os_ingress_fip, os_bootstrap_fip.
          os_external_network: 'external'
    ...
    Copy to Clipboard Toggle word wrap

    重要

    如果您没有在 inventory.yaml 文件中提供 for os_external_network 值,您必须确保虚拟机可以自行访问 Glance 和外部连接。

  2. 可选:将外部网络和浮动 IP(FIP)地址值添加到 inventory.yaml playbook 中:

    inventory.yaml Ansible playbook 中的 FIP 值示例

    ...
          # OpenShift API floating IP address. If this value is non-empty, the
          # corresponding floating IP will be attached to the Control Plane to
          # serve the OpenShift API.
          os_api_fip: '203.0.113.23'
    
          # OpenShift Ingress floating IP address. If this value is non-empty, the
          # corresponding floating IP will be attached to the worker nodes to serve
          # the applications.
          os_ingress_fip: '203.0.113.19'
    
          # If this value is non-empty, the corresponding floating IP will be
          # attached to the bootstrap machine. This is needed for collecting logs
          # in case of install failure.
          os_bootstrap_fip: '203.0.113.20'
    Copy to Clipboard Toggle word wrap

    重要

    如果没有为 os_api_fipos_ingress_fip 定义值,则必须执行安装后网络配置。

    如果您没有定义 for os_bootstrap_fip 值,安装程序将无法从失败的安装中下载调试信息。

    如需更多信息,请参阅"启用对环境的访问"。

  3. 在命令行中,通过运行 security-groups.yaml playbook 来创建安全组:

    $ ansible-playbook -i inventory.yaml security-groups.yaml
    Copy to Clipboard Toggle word wrap
  4. 在命令行中,通过运行 network.yaml playbook 来创建一个网络、子网和路由器:

    $ ansible-playbook -i inventory.yaml network.yaml
    Copy to Clipboard Toggle word wrap
  5. 可选:如果要控制 Nova 服务器使用的默认解析程序,请运行 RHOSP CLI 命令:

    $ openstack subnet set --dns-nameserver <server_1> --dns-nameserver <server_2> "$INFRA_ID-nodes"
    Copy to Clipboard Toggle word wrap

另外,您可以使用您创建的 inventory.yaml 文件来自定义安装。例如,您可以部署使用裸机的集群。

5.17.1. 使用裸机部署集群

如果您希望集群使用裸机,请修改 inventory.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 安装过程的一部分,创建了 inventory.yaml 文件。

流程

  1. inventory.yaml 文件中,编辑机器的类别:

    1. 如果要使用裸机 control plane 机器,请将 os_flavor_master 的值改为裸机类型。
    2. 将值 of os_flavor_worker 更改为裸机类型。

      裸机 inventory.yaml 文件示例

      all:
        hosts:
          localhost:
            ansible_connection: local
            ansible_python_interpreter: "{{ansible_playbook_python}}"
      
            # User-provided values
            os_subnet_range: '10.0.0.0/16'
            os_flavor_master: 'my-bare-metal-flavor' 
      1
      
            os_flavor_worker: 'my-bare-metal-flavor' 
      2
      
            os_image_rhcos: 'rhcos'
            os_external_network: 'external'
      ...
      Copy to Clipboard Toggle word wrap

      1
      如果要使用裸机 control plane 机器,请将这个值改为一个裸机类型。
      2
      将此值更改为用于计算机器的裸机类别。

使用更新的 inventory.yaml 文件完成安装过程。部署期间创建的机器使用添加到该文件中的类别。

注意

在等待裸机引导时,安装程序可能会超时。

如果安装程序超时,重启并使用安装程序的 wait-for 命令完成部署。例如:

$ ./openshift-install wait-for install-complete --log-level debug
Copy to Clipboard Toggle word wrap

5.18. 在 RHOSP 上创建 bootstrap 机器

创建 bootstrap 机器,为其提供在 Red Hat OpenStack Platform(RHOSP)上运行所需的网络访问权限。红帽提供了一个 Ansible playbook,您可以运行它来简化此过程。

先决条件

  • 下载了"下载 playbook 依赖项"中的模块。
  • 下载了"下载安装 playbook"中的 playbook。
  • inventory.yamlcommon.yamlbootstrap.yaml Ansible playbook 位于一个通用目录中。
  • 安装程序创建的 metadata.json 文件与 Ansible playbook 位于同一个目录中。

流程

  1. 在命令行中,将工作目录更改为 playbook 的位置。
  2. 在命令行中运行 bootstrap.yaml playbook:

    $ ansible-playbook -i inventory.yaml bootstrap.yaml
    Copy to Clipboard Toggle word wrap
  3. bootstrap 服务器活跃后,查看日志以验证是否收到 Ignition 文件:

    $ openstack console log show "$INFRA_ID-bootstrap"
    Copy to Clipboard Toggle word wrap

5.19. 在 RHOSP 上创建 control plane 机器

使用您生成的 Ignition 配置文件创建三台 control plane 机器。红帽提供了一个 Ansible playbook,您可以运行它来简化此过程。

先决条件

  • 下载了"下载 playbook 依赖项"中的模块。
  • 下载了"下载安装 playbook"中的 playbook。
  • 来自安装程序元数据文件中的基础架构 ID 被设置为环境变量($INFRA_ID)。
  • inventory.yamlcommon.yamlcontrol-plane.yaml Ansible playbook 位于一个通用目录中。
  • 您有三个在"Creating control plane Ignition 配置文件"中创建的 Ignition 文件。

流程

  1. 在命令行中,将工作目录更改为 playbook 的位置。
  2. 如果 control plane Ignition 配置文件尚未位于工作目录中,请将它们复制到其中。
  3. 在命令行中运行 control-plane.yaml playbook:

    $ ansible-playbook -i inventory.yaml control-plane.yaml
    Copy to Clipboard Toggle word wrap
  4. 运行以下命令来监控 bootstrap 过程:

    $ openshift-install wait-for bootstrap-complete
    Copy to Clipboard Toggle word wrap

    您将看到确认 control plane 机器正在运行并加入集群的信息:

    INFO API v1.26.0 up
    INFO Waiting up to 30m0s for bootstrapping to complete...
    ...
    INFO It is now safe to remove the bootstrap resources
    Copy to Clipboard Toggle word wrap

5.20. 使用 CLI 登录集群

您可以通过导出集群 kubeconfig 文件,以默认系统用户身份登录集群。kubeconfig 文件包含有关集群的信息,供 CLI 用于将客户端连接到正确的集群和 API 服务器。该文件特定于集群,在 OpenShift Container Platform 安装过程中创建。

先决条件

  • 已部署 OpenShift Container Platform 集群。
  • 已安装 oc CLI。

流程

  1. 导出 kubeadmin 凭证:

    $ export KUBECONFIG=<installation_directory>/auth/kubeconfig 
    1
    Copy to Clipboard Toggle word wrap
    1
    对于 <installation_directory>,请指定安装文件保存到的目录的路径。
  2. 验证您可以使用导出的配置成功运行 oc 命令:

    $ oc whoami
    Copy to Clipboard Toggle word wrap

    输出示例

    system:admin
    Copy to Clipboard Toggle word wrap

5.21. 从 RHOSP 删除 bootstrap 资源

删除您不再需要的 bootstrap 资源。

先决条件

  • 下载了"下载 playbook 依赖项"中的模块。
  • 下载了"下载安装 playbook"中的 playbook。
  • inventory.yamlcommon.yamldown-bootstrap.yaml Ansible playbook 位于一个通用目录中。
  • control plane 机器正在运行。

    • 如果您不知道机器的状态,请参阅"验证集群状态"。

流程

  1. 在命令行中,将工作目录更改为 playbook 的位置。
  2. 在命令行中运行 down-bootstrap.yaml playbook:

    $ ansible-playbook -i inventory.yaml down-bootstrap.yaml
    Copy to Clipboard Toggle word wrap

bootstrap 端口、服务器和浮动 IP 地址会被删除。

警告

如果您之前没有禁用 bootstrap Ignition 文件 URL,现在需要禁用。

5.22. 在 RHOSP 上创建计算机器

启动 control plane 后,创建计算机器。红帽提供了一个 Ansible playbook,您可以运行它来简化此过程。

先决条件

  • 下载了"下载 playbook 依赖项"中的模块。
  • 下载了"下载安装 playbook"中的 playbook。
  • inventory.yamlcommon.yamlcompute-nodes.yaml Ansible playbook 位于一个通用目录中。
  • 安装程序创建的 metadata.json 文件与 Ansible playbook 位于同一个目录中。
  • control plane 处于活跃状态。

流程

  1. 在命令行中,将工作目录更改为 playbook 的位置。
  2. 在命令行中运行 playbook:

    $ ansible-playbook -i inventory.yaml compute-nodes.yaml
    Copy to Clipboard Toggle word wrap

后续步骤

  • 批准机器的证书签名请求。

5.23. 批准机器的证书签名请求

当您将机器添加到集群时,会为您添加的每台机器生成两个待处理证书签名请求(CSR)。您必须确认这些 CSR 已获得批准,或根据需要自行批准。必须首先批准客户端请求,然后批准服务器请求。

先决条件

  • 您已将机器添加到集群中。

流程

  1. 确认集群可以识别这些机器:

    $ oc get nodes
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME      STATUS    ROLES   AGE  VERSION
    master-0  Ready     master  63m  v1.26.0
    master-1  Ready     master  63m  v1.26.0
    master-2  Ready     master  64m  v1.26.0
    Copy to Clipboard Toggle word wrap

    输出中列出了您创建的所有机器。

    注意

    在有些 CSR 被批准前,前面的输出可能不包括计算节点(也称为 worker 节点)。

  2. 检查待处理的 CSR,并确保添加到集群中的每台机器都有 PendingApproved 状态的客户端请求:

    $ oc get csr
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME        AGE     REQUESTOR                                                                   CONDITION
    csr-8b2br   15m     system:serviceaccount:openshift-machine-config-operator:node-bootstrapper   Pending
    csr-8vnps   15m     system:serviceaccount:openshift-machine-config-operator:node-bootstrapper   Pending
    ...
    Copy to Clipboard Toggle word wrap

    在本例中,两台机器加入集群。您可能会在列表中看到更多已批准的 CSR。

  3. 如果 CSR 没有获得批准,在您添加的机器的所有待处理 CSR 都处于 Pending 状态 后,请批准集群机器的 CSR:

    注意

    由于 CSR 会自动轮转,因此请在将机器添加到集群后一小时内批准您的 CSR。如果没有在一小时内批准它们,证书将会轮转,每个节点会存在多个证书。您必须批准所有这些证书。批准客户端 CSR 后,Kubelet 为服务证书创建一个二级 CSR,这需要手动批准。然后,如果 Kubelet 请求具有相同参数的新证书,则后续提供证书续订请求由 machine-approver 自动批准。

    注意

    对于在未启用机器 API 的平台上运行的集群,如裸机和其他用户置备的基础架构,您必须实施一种方法来自动批准 kubelet 提供证书请求(CSR)。如果没有批准请求,则 oc exec、ocrshoc logs 命令将无法成功,因为 API 服务器连接到 kubelet 时需要服务证书。与 Kubelet 端点联系的任何操作都需要此证书批准。该方法必须监视新的 CSR,确认 CSR 由 system: nodesystem:admin 组中的 node-bootstrapper 服务帐户提交,并确认节点的身份。

    • 要单独批准,请对每个有效的 CSR 运行以下命令:

      $ oc adm certificate approve <csr_name> 
      1
      Copy to Clipboard Toggle word wrap
      1
      <csr_name> 是当前 CSR 列表中 CSR 的名称。
    • 要批准所有待处理的 CSR,请运行以下命令:

      $ oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs --no-run-if-empty oc adm certificate approve
      Copy to Clipboard Toggle word wrap
      注意

      在有些 CSR 被批准前,一些 Operator 可能无法使用。

  4. 现在,您的客户端请求已被批准,您必须查看添加到集群中的每台机器的服务器请求:

    $ oc get csr
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME        AGE     REQUESTOR                                                                   CONDITION
    csr-bfd72   5m26s   system:node:ip-10-0-50-126.us-east-2.compute.internal                       Pending
    csr-c57lv   5m26s   system:node:ip-10-0-95-157.us-east-2.compute.internal                       Pending
    ...
    Copy to Clipboard Toggle word wrap

  5. 如果剩余的 CSR 没有被批准,且处于 Pending 状态,请批准集群机器的 CSR:

    • 要单独批准,请对每个有效的 CSR 运行以下命令:

      $ oc adm certificate approve <csr_name> 
      1
      Copy to Clipboard Toggle word wrap
      1
      <csr_name> 是当前 CSR 列表中 CSR 的名称。
    • 要批准所有待处理的 CSR,请运行以下命令:

      $ oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs oc adm certificate approve
      Copy to Clipboard Toggle word wrap
  6. 批准所有客户端和服务器 CSR 后,机器将 处于 Ready 状态。运行以下命令验证:

    $ oc get nodes
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME      STATUS    ROLES   AGE  VERSION
    master-0  Ready     master  73m  v1.26.0
    master-1  Ready     master  73m  v1.26.0
    master-2  Ready     master  74m  v1.26.0
    worker-0  Ready     worker  11m  v1.26.0
    worker-1  Ready     worker  11m  v1.26.0
    Copy to Clipboard Toggle word wrap

    注意

    批准服务器 CSR 后可能需要几分钟时间让机器过渡到 Ready 状态

其他信息

5.24. 验证安装是否成功

验证 OpenShift Container Platform 安装已经完成。

先决条件

  • 有安装程序(openshift-install)

流程

  • 在命令行中输入:

    $ openshift-install --log-level debug wait-for install-complete
    Copy to Clipboard Toggle word wrap

程序输出控制台 URL,以及管理员的登录信息。

5.25. 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 订阅。

5.26. 后续步骤

重要

Kuryr 是一个已弃用的功能。弃用的功能仍然包含在 OpenShift Container Platform 中,并将继续被支持。但是,这个功能会在以后的发行版本中被删除,且不建议在新的部署中使用。

有关 OpenShift Container Platform 中已弃用或删除的主要功能的最新列表,请参阅 OpenShift Container Platform 发行注记中已弃用和删除的功能部分。

在 OpenShift Container Platform 版本 4.13 中,您可以在运行于用户置备的基础架构上的 Red Hat OpenStack Platform(RHOSP)上安装集群。

通过利用您自己的基础架构,您可以将集群与现有的基础架构集成。与安装程序置备的安装相比,这个过程需要进行更多的操作,因为您必须创建所有 RHOSP 资源,如 Nova 服务器、Neutron 端口和安全组。但是,红帽提供了 Ansible playbook 来帮助您完成部署过程。

6.1. 先决条件

6.2. 关于 Kuryr SDN

重要

Kuryr 是一个已弃用的功能。弃用的功能仍然包含在 OpenShift Container Platform 中,并将继续被支持。但是,这个功能会在以后的发行版本中被删除,且不建议在新的部署中使用。

有关 OpenShift Container Platform 中已弃用或删除的主要功能的最新列表,请参阅 OpenShift Container Platform 发行注记中已弃用和删除的功能部分。

Kuryr 是一个容器网络接口(CNI)插件解决方案,它使用 NeutronOctavia Red Hat OpenStack Platform (RHOSP) 服务来为 pod 和服务提供网络。

Kuryr 和 OpenShift Container Platform 的集成主要针对在 RHOSP VM 上运行的 OpenShift Container Platform 集群设计。Kuryr 通过将 OpenShift Container Platform pod 插入 RHOSP SDN 来提高网络性能。另外,它还提供 pod 和 RHOSP 虚拟实例间的互联性。

Kuryr 组件作为 pod 安装在 OpenShift Container Platform 中,使用 openshift-kuryr 命名空间:

  • kuryr-controller - 在一个 master 节点上安装的单个服务实例。这在 OpenShift Container Platform 中建模为一个 Deployment 对象。
  • kuryr-cni - 在每个 OpenShift Container Platform 节点上安装和配置 Kuryr 作为 CNI 驱动程序的容器。这在 OpenShift Container Platform 中建模为一个 DaemonSet 对象。

Kuryr 控制器监控 OpenShift Container Platform API 服务器中的 pod、服务和命名空间创建、更新和删除事件。它将 OpenShift Container Platform API 调用映射到 Neutron 和 Octavia 中的对应对象。这意味着,实现 Neutron 中继端口功能的每个网络解决方案都可通过 Kuryr 支持 OpenShift Container Platform。这包括开源解决方案,如 Open vSwitch(OVS)和 Open Virtual Network(OVN),以及 Neutron 兼容的商业 SDN。

建议在封装的 RHOSP 租户网络上的 OpenShift Container Platform 部署 Kuryr,以避免重复封装,如通过 RHOSP 网络运行封装的 OpenShift Container Platform SDN。

如果您使用供应商网络或租户 VLAN,则不需要使用 Kuryr 来避免重复封装。性能优势可忽略不计。但根据您的配置,使用 Kuryr 避免两个覆盖可能仍然有用。

在满足以下所有条件的部署中不建议 Kuryr:

  • RHOSP 版本小于 16。
  • 部署使用 UDP 服务,或者在几个虚拟机监控程序上使用大量 TCP 服务。

或者

  • The ovn-octavia Octavia 驱动程序被禁用。
  • 部署在几个虚拟机监控程序上使用大量 TCP 服务。

当使用 Kuryr SDN 时,pod、服务、命名空间和网络策略会使用来自 RHOSP 配额的资源,这会增加最低要求。除了默认安装所需的之外,Kuryr 也有一些额外的要求。

使用以下配额来满足集群的默认最低要求:

Expand
表 6.1. 使用 Kuryr 的 RHOSP 上默认 OpenShift Container Platform 集群的建议资源
resourcevalue

浮动 IP 地址

3 - 加上预期的 LoadBalancer 类型服务数量

端口

1500 - 每个 Pod 需要 1 个

路由器

1

子网

250 - 每个命名空间/项目需要 1 个

网络

250 - 每个命名空间/项目需要 1 个

RAM

112 GB

VCPU

28

卷存储

275 GB

实例

7

安全组

250 - 每个服务和每个 NetworkPolicy 需要 1 个

安全组规则

1000

服务器组

2 - 每个机器池中每个额外可用区加 1

负载均衡器

100 - 每个服务需要 1 个

负载均衡器监听程序

500 - 每个服务公开端口需要 1 个

负载均衡器池

500 - 每个服务公开端口需要 1 个

集群或许能以少于推荐资源运行,但其性能无法保证。

重要

如果 RHOSP 对象存储(Swift)可用,并由具有 swiftoperator 角色的用户帐户执行,它将用作 OpenShift Container Platform 镜像 registry 的默认后端。在这种情况下,卷存储需要 175 GB。根据镜像 registry 的大小,Swift 空间要求会有所不同。

重要

如果您使用带有 Amphora 驱动程序的 Red Hat OpenStack Platform(RHOSP)版本 16,而不是 OVN Octavia 驱动程序,则安全组会与服务帐户而不是用户项目关联。

在设置资源时请考虑以下几点:

  • 需要的端口数量会大于 pod 的数量。Kuryr 使用端口池来预创建端口以供 pod 使用,并加快 pod 的启动时间。
  • 每个网络策略都映射到 RHOSP 安全组中,并根据 NetworkPolicy 规格将一个或多个规则添加到安全组中。
  • 每个服务都映射到一个 RHOSP 负载均衡器中。在估算配额所需的安全组数量时,请考虑此要求。

    如果您使用的是 RHOSP 版本 15 或更早版本,或者 ovn-octavia 驱动程序,则每个负载均衡器都有一个带有用户项目的安全组。

  • 配额不会考虑负载均衡器资源(如 VM 资源),但您必须在决定 RHOSP 部署的大小时考虑这些资源。默认安装将具有超过 50 个负载均衡器,集群必须能够容纳它们。

    如果您使用启用了 OVN Octavia 驱动程序的 RHOSP 版本 16,则只生成一个负载均衡器虚拟机;服务通过 OVN 流平衡负载。

OpenShift Container Platform 部署包含 control plane 机器、计算机器和 bootstrap 机器。

要启用 Kuryr SDN,您的环境必须满足以下要求:

  • 运行 RHOSP 13+。
  • 具有 Octavia 的 Overcloud。
  • 使用 Neutron Trunk 端口扩展。
  • 如果使用 ML2/OVS Neutron 驱动程序而不是 ovs-hybrid,则使用 openvswitch 防火墙驱动程序.

6.3.1. 增加配额

使用 Kuryr SDN 时,您必须提高配额以满足 pod、服务、命名空间和网络策略所使用的 Red Hat OpenStack Platform(RHOSP)资源要求。

流程

  • 运行以下命令为项目增加配额:

    $ sudo openstack quota set --secgroups 250 --secgroup-rules 1000 --ports 1500 --subnets 250 --networks 250 <project>
    Copy to Clipboard Toggle word wrap

6.3.2. 配置 Neutron

Kuryr CNI 利用 Neutron Trunks 扩展将容器插入 Red Hat OpenStack Platform(RHOSP)SDN,因此您必须使用 trunks 扩展才可以使 Kuryr 正常工作。

另外,如果您利用默认的 ML2/OVS Neutron 驱动程序,防火墙必须设置为 openvswitch 而不是 ovs_hybrid,以便在中继子端口上强制执行安全组,Kuryr 可以正确处理网络策略。

6.3.3. 配置 Octavia

Kuryr SDN 使用 Red Hat OpenStack Platform(RHOSP)的 Octavia LBaaS 来实现 OpenShift Container Platform 服务。因此,您必须在 RHOSP 中安装和配置 Octavia 组件以使用 Kuryr SDN。

要启用 Octavia,您必须在安装 RHOSP Overcloud 的过程中包括 Octavia 服务,或者如果 Overcloud 已存在则需要升级 Octavia 服务。以下启用 Octavia 的步骤适用于全新的 Overcloud 安装或 Overcloud 更新。

注意

以下步骤只包括在部署 RHOSP 时需要处理 Octavia 的关键部分。还要注意 registry 方法 会有所不同。

本例使用本地 registry 方法。

流程

  1. 如果您使用本地 registry,请创建一个模板来将镜像上传到 registry。例如:

    (undercloud) $ openstack overcloud container image prepare \
    -e /usr/share/openstack-tripleo-heat-templates/environments/services-docker/octavia.yaml \
    --namespace=registry.access.redhat.com/rhosp13 \
    --push-destination=<local-ip-from-undercloud.conf>:8787 \
    --prefix=openstack- \
    --tag-from-label {version}-{product-version} \
    --output-env-file=/home/stack/templates/overcloud_images.yaml \
    --output-images-file /home/stack/local_registry_images.yaml
    Copy to Clipboard Toggle word wrap
  2. 验证 local_registry_images.yaml 文件是否包含 Octavia 镜像。例如:

    ...
    - imagename: registry.access.redhat.com/rhosp13/openstack-octavia-api:13.0-43
      push_destination: <local-ip-from-undercloud.conf>:8787
    - imagename: registry.access.redhat.com/rhosp13/openstack-octavia-health-manager:13.0-45
      push_destination: <local-ip-from-undercloud.conf>:8787
    - imagename: registry.access.redhat.com/rhosp13/openstack-octavia-housekeeping:13.0-45
      push_destination: <local-ip-from-undercloud.conf>:8787
    - imagename: registry.access.redhat.com/rhosp13/openstack-octavia-worker:13.0-44
      push_destination: <local-ip-from-undercloud.conf>:8787
    Copy to Clipboard Toggle word wrap
    注意

    Octavia 容器版本根据安装的特定 RHOSP 版本的不同而有所不同。

  3. registry.redhat.io 中的容器镜像拉取到 Undercloud 节点:

    (undercloud) $ sudo openstack overcloud container image upload \
      --config-file  /home/stack/local_registry_images.yaml \
      --verbose
    Copy to Clipboard Toggle word wrap

    这可能需要一些时间,具体取决于您的网络速度和 Undercloud 磁盘的速度。

  4. 使用 Octavia 安装或更新 Overcloud 环境:

    $ openstack overcloud deploy --templates \
      -e /usr/share/openstack-tripleo-heat-templates/environments/services-docker/octavia.yaml \
      -e octavia_timeouts.yaml
    Copy to Clipboard Toggle word wrap
    注意

    这个命令只包含与 Octavia 相关的文件,它根据您具体的 RHOSP 安装而有所不同。如需更多信息,请参阅 RHOSP 文档。有关自定义 Octavia 安装的详情,请参考 使用 Director 安装 Octavia

    注意

    在利用 Kuryr SDN 时,Overcloud 安装需要 Neutron 中继 扩展。这在 director 部署中默认可用。当 Neutron 后端为 ML2/OVS 时,请使用 openvswitch 防火墙而不是默认的 ovs-hybrid。如果后端为 ML2/OVN,则不需要修改。

6.3.3.1. Octavia OVN 驱动程序

Octavia 通过 Octavia API 支持多个供应商驱动程序。

要查看所有可用的 Octavia 供应商驱动程序,请在命令行中输入:

$ openstack loadbalancer provider list
Copy to Clipboard Toggle word wrap

输出示例

+---------+-------------------------------------------------+
| name    | description                                     |
+---------+-------------------------------------------------+
| amphora | The Octavia Amphora driver.                     |
| octavia | Deprecated alias of the Octavia Amphora driver. |
| ovn     | Octavia OVN driver.                             |
+---------+-------------------------------------------------+
Copy to Clipboard Toggle word wrap

从 RHOSP 版本 16 开始,Octavia OVN 供应商驱动程序(ovn)在 RHOSP 部署的 OpenShift Container Platform 上被支持。

OVN 是 Octavia 和 OVN 提供的负载平衡的集成驱动程序。它支持基本的负载平衡功能,并且基于 OpenFlow 规则。Director 在使用 OVN Neutron ML2 的部署中自动启用该驱动程序。

Amphora 供应商驱动程序是默认驱动程序。If ovn 被启用,Kuryr 使用它。

如果 Kuryr 使用 ovn 而不是 Amphora,它会提供以下优点:

  • 资源要求降低.Kuryr 不需要为每个服务都提供一个负载均衡器虚拟机。
  • 网络延迟降低.
  • 通过对每个服务使用 OpenFlow 规则而不是 VM 来提高服务创建速度。
  • 跨所有节点的分布式负载平衡操作,而不是集中到 Amphora 虚拟机中。

6.3.4. 已知的使用 Kuryr 安装的限制

将 OpenShift Container Platform 与 Kuryr SDN 搭配使用有一些已知的限制。

RHOSP 常规限制

将 OpenShift Container Platform 与 Kuryr SDN 搭配使用有一些限制,适用于所有版本和环境:

  • 不支持具有 NodePort 类型的 Service 对象。
  • 如果 Endpoints 对象的 .subsets.addresses 属性包含节点或 pod 的子网时,使用 OVN Octavia 供应商驱动程序的集群才支持未指定 .spec.selector 属性的 Service 对象。
  • 如果创建机器的子网没有连接到路由器,或者子网已连接但路由器没有设置外部网关,Kuryr 无法为类型为 LoadBalancerService 对象创建浮动 IP。
  • Service 对象上配置 sessionAffinity=ClientIP 属性无效。Kuryr 不支持此设置。
RHOSP 版本限制

将 OpenShift Container Platform 与 Kuryr SDN 搭配使用有一些限制,具体取决于 RHOSP 版本。

  • RHOSP 16 前的版本使用默认 Octavia 负载均衡器驱动程序(Amphora)。此驱动要求在每个 OpenShift Container Platform 服务中部署一个 Amphora 负载均衡器虚拟机。创建太多的服务会导致您耗尽资源。

    如果以后版本的 RHOSP 部署禁用了 OVN Octavia 驱动程序,则也使用 Amphora 驱动程序。它们受到与早期版本的 RHOSP 相同的资源问题。

  • Kuryr SDN 不支持由服务自动取消闲置。
RHOSP 升级限制

由于 RHOSP 升级过程,可能会更改 Octavia API,可能需要升级到用于负载均衡器的 Amphora 镜像。

您可以单独处理 API 更改。

如果升级了 Amphora 镜像,RHOSP operator 可以通过两种方式处理现有的负载均衡器虚拟机:

如果运算符使用第一个选项,在故障切换过程中可能会有短暂的停机时间。

如果 Operator 采用第二个选项,现有的负载均衡器将不支持升级的 Octavia API 功能,如 UDP 侦听程序。在这种情况下,用户必须重新创建其服务以使用这些功能。

6.3.5. control plane 机器

默认情况下,OpenShift Container Platform 安装过程会创建三台 control plane 机器。

每台机器都需要:

  • 来自 RHOSP 配额的实例
  • 来自 RHOSP 配额的端口
  • 至少有 16 GB 内存和 4 个 vCPU 的类别
  • RHOSP 配额中至少有 100 GB 存储空间

6.3.6. 计算机器

默认情况下,OpenShift Container Platform 安装过程会创建三台计算机器。

每台机器都需要:

  • 来自 RHOSP 配额的实例
  • 来自 RHOSP 配额的端口
  • 至少有 8 GB 内存和 2 个 vCPU 的类别
  • RHOSP 配额中至少有 100 GB 存储空间
提示

计算机器托管您在 OpenShift Container Platform 上运行的应用程序;运行数量应尽可能多。

6.3.7. bootstrap 机器

在安装过程中,会临时置备 bootstrap 机器来支持 control plane。生产 control plane 就绪后,bootstrap 机器会被取消置备。

bootstrap 机器需要:

  • 来自 RHOSP 配额的实例
  • 来自 RHOSP 配额的端口
  • 至少有 16 GB 内存和 4 个 vCPU 的类别
  • RHOSP 配额中至少有 100 GB 存储空间

6.4. OpenShift Container Platform 互联网访问

在 OpenShift Container Platform 4.13 中,您需要访问互联网来安装集群。

您必须具有以下互联网访问权限:

  • 访问 OpenShift Cluster Manager Hybrid Cloud Console 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
  • 访问 Quay.io,以获取安装集群所需的软件包。
  • 获取执行集群更新所需的软件包。
重要

如果您的集群无法直接访问互联网,则可以在置备的某些类型的基础架构上执行受限网络安装。在此过程中,您可以下载所需的内容,并使用它为镜像 registry 填充安装软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群前,您要更新镜像 registry 的内容。

6.5. 下载 playbook 依赖项

用于简化用户置备的基础架构安装过程的 Ansible playbook 需要几个 Python 模块。在您要运行安装程序的机器上,添加模块的存储库,然后下载它们。

注意

这些说明假设您使用 Red Hat Enterprise Linux(RHEL)8。

先决条件

  • Python 3 已安装在您的机器上。

流程

  1. 在命令行中添加软件仓库:

    1. 使用 Red Hat Subscription Manager 注册:

      $ sudo subscription-manager register # If not done already
      Copy to Clipboard Toggle word wrap
    2. 获取最新的订阅数据:

      $ sudo subscription-manager attach --pool=$YOUR_POOLID # If not done already
      Copy to Clipboard Toggle word wrap
    3. 禁用当前的软件仓库:

      $ sudo subscription-manager repos --disable=* # If not done already
      Copy to Clipboard Toggle word wrap
    4. 添加所需的软件仓库:

      $ sudo subscription-manager repos \
        --enable=rhel-8-for-x86_64-baseos-rpms \
        --enable=openstack-16-tools-for-rhel-8-x86_64-rpms \
        --enable=ansible-2.9-for-rhel-8-x86_64-rpms \
        --enable=rhel-8-for-x86_64-appstream-rpms
      Copy to Clipboard Toggle word wrap
  2. 安装模块:

    $ sudo yum install python3-openstackclient ansible python3-openstacksdk python3-netaddr ansible-collections-openstack
    Copy to Clipboard Toggle word wrap
  3. 确保 python 命令指向 python 3:

    $ sudo alternatives --set python /usr/bin/python3
    Copy to Clipboard Toggle word wrap

6.6. 下载安装 playbook

下载 Ansible playbook,可用于在您自己的 Red Hat OpenStack Platform(RHOSP)基础架构上安装 OpenShift Container Platform。

先决条件

  • curl 命令行工具可在您的 计算机上使用。

流程

  • 要将 playbook 下载到您的工作目录中,请从命令行运行以下脚本:

    $ xargs -n 1 curl -O <<< '
            https://raw.githubusercontent.com/openshift/installer/release-4.13/upi/openstack/bootstrap.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.13/upi/openstack/common.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.13/upi/openstack/compute-nodes.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.13/upi/openstack/control-plane.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.13/upi/openstack/inventory.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.13/upi/openstack/network.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.13/upi/openstack/security-groups.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.13/upi/openstack/down-bootstrap.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.13/upi/openstack/down-compute-nodes.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.13/upi/openstack/down-control-plane.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.13/upi/openstack/down-load-balancers.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.13/upi/openstack/down-network.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.13/upi/openstack/down-security-groups.yaml
            https://raw.githubusercontent.com/openshift/installer/release-4.13/upi/openstack/down-containers.yaml'
    Copy to Clipboard Toggle word wrap

Playbook 下载到您的计算机。

重要

在安装过程中,您可以修改 playbook 来配置部署。

在集群生命周期中保留所有 playbook。您必须具有 playbook,才能从 RHOSP 中删除 OpenShift Container Platform 集群。

重要

您必须将对 bootstrap.yaml, compute-nodes.yaml, control-plane.yaml, network.yaml, 和 security-groups.yaml 文件的编辑与相应的前缀为 down- 的 playbook 匹配。例如,对 bootstrap.yaml 文件的编辑也必须反映在 down-bootstrap.yaml 文件中。如果没有编辑这两个文件,则支持的删除集群过程将失败。

6.7. 获取安装程序

在安装 OpenShift Container Platform 前,将安装文件下载到您用于安装的主机上。

先决条件

  • 您有一台运行 Linux 或 macOS 的计算机,本地磁盘空间为 500 MB。

流程

  1. 访问 OpenShift Cluster Manager 站点的 Infrastructure Provider 页面。如果您有红帽帐户,请使用您的凭证登录。如果没有,请创建一个帐户。
  2. 选择您的基础架构供应商。
  3. 进入到安装类型的页面,下载与您的主机操作系统和架构对应的安装程序,并将该文件放在您要存储安装配置文件的目录中。

    重要

    安装程序会在用来安装集群的计算机上创建几个文件。在完成集群安装后,您必须保留安装程序和安装程序所创建的文件。这两个文件都需要删除集群。

    重要

    删除安装程序创建的文件不会删除您的集群,即使集群在安装过程中失败也是如此。要删除集群,请为特定云供应商完成 OpenShift Container Platform 卸载流程。

  4. 提取安装程序。例如,在使用 Linux 操作系统的计算机上运行以下命令:

    $ tar -xvf openshift-install-linux.tar.gz
    Copy to Clipboard Toggle word wrap
  5. 从 Red Hat OpenShift Cluster Manager 下载安装 pull secret。此 pull secret 允许您与所含授权机构提供的服务进行身份验证,这些服务包括为 OpenShift Container Platform 组件提供容器镜像的 Quay.io。

6.8. 为集群节点 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 公钥。

重要

不要在生产环境中跳过这个过程,在生产环境中需要灾难恢复和调试。

流程

  1. 如果您在本地计算机上没有可用于在集群节点上进行身份验证的现有 SSH 密钥对,请创建一个。例如,在使用 Linux 操作系统的计算机上运行以下命令:

    $ ssh-keygen -t ed25519 -N '' -f <path>/<file_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    指定新 SSH 密钥的路径和文件名,如 ~/.ssh/id_ed25519。如果您已有密钥对,请确保您的公钥位于 ~/.ssh 目录中。
  2. 查看公共 SSH 密钥:

    $ cat <path>/<file_name>.pub
    Copy to Clipboard Toggle word wrap

    例如,运行以下命令来查看 ~/.ssh/id_ed25519.pub 公钥:

    $ cat ~/.ssh/id_ed25519.pub
    Copy to Clipboard Toggle word wrap
  3. 将 SSH 私钥身份添加到本地用户的 SSH 代理(如果尚未添加)。在集群节点上,或者要使用 ./openshift-install gather 命令,需要对该密钥进行 SSH 代理管理,才能在集群节点上进行免密码 SSH 身份验证。

    注意

    在某些发行版中,自动管理默认 SSH 私钥身份,如 ~/.ssh/id_rsa~/.ssh/id_dsa

    1. 如果 ssh-agent 进程尚未为您的本地用户运行,请将其作为后台任务启动:

      $ eval "$(ssh-agent -s)"
      Copy to Clipboard Toggle word wrap

      输出示例

      Agent pid 31874
      Copy to Clipboard Toggle word wrap

  4. 将 SSH 私钥添加到 ssh-agent

    $ ssh-add <path>/<file_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    指定 SSH 私钥的路径和文件名,如 ~/.ssh/id_ed25519.pub

    输出示例

    Identity added: /home/<you>/<path>/<file_name> (<computer_name>)
    Copy to Clipboard Toggle word wrap

后续步骤

  • 安装 OpenShift Container Platform 时,为安装程序提供 SSH 公钥。

6.9. 创建 Red Hat Enterprise Linux CoreOS(RHCOS)镜像

OpenShift Container Platform 安装程序要求 Red Hat OpenStack Platform(RHOSP)集群中存在 Red Hat Enterprise Linux CoreOS(RHCOS)镜像。检索最新的 RHCOS 镜像,然后使用 RHOSP CLI 上传该镜像。

先决条件

  • 已安装 RHOSP CLI。

流程

  1. 登录到红帽客户门户网站的产品 下载页面
  2. Version 下,为 Red Hat Enterprise Linux(RHEL)8 选择 OpenShift Container Platform 4.13 的最新发行版本。

    重要

    RHCOS 镜像可能不会随着 OpenShift Container Platform 的每个发行版本而改变。您必须下载最高版本的镜像,其版本号应小于或等于您安装的 OpenShift Container Platform 版本。如果可用,请使用与 OpenShift Container Platform 版本匹配的镜像版本。

  3. 下载 Red Hat Enterprise Linux CoreOS(RHCOS)- OpenStack Image(QCOW)。
  4. 解压缩镜像。

    注意

    您必须解压 RHOSP 镜像,然后集群才能使用它。下载的文件的名称可能不包含压缩扩展名,如 .gz 或. tgz。要查找是否或者如何压缩文件,请在命令行中输入:

    $ file <name_of_downloaded_file>
    Copy to Clipboard Toggle word wrap
  5. 从您下载的镜像,使用 RHOSP CLI 在集群中创建名为 rhcos 的镜像:

    $ openstack image create --container-format=bare --disk-format=qcow2 --file rhcos-${RHCOS_VERSION}-openstack.qcow2 rhcos
    Copy to Clipboard Toggle word wrap
    重要

    根据您的 RHOSP 环境,您可能能够以. raw.qcow2 格式 上传镜像。如果使用 Ceph,则必须使用 .raw 格式。

    警告

    如果安装程序发现多个同名的镜像,它会随机选择其中之一。为避免这种行为,请在 RHOSP 中为资源创建唯一名称。

将镜像上传到 RHOSP 后,就可以在安装过程中使用它。

6.10. 验证外部网络访问

OpenShift Container Platform 安装过程需要外部网络访问权限。您必须为其提供外部网络值,否则部署会失败。在开始这个过程前,请验证 Red Hat OpenStack Platform(RHOSP)中是否存在具有外部路由器类型的网络。

流程

  1. 使用 RHOSP CLI 验证"外部"网络的名称和 ID:

    $ openstack network list --long -c ID -c Name -c "Router Type"
    Copy to Clipboard Toggle word wrap

    输出示例

    +--------------------------------------+----------------+-------------+
    | ID                                   | Name           | Router Type |
    +--------------------------------------+----------------+-------------+
    | 148a8023-62a7-4672-b018-003462f8d7dc | public_network | External    |
    +--------------------------------------+----------------+-------------+
    Copy to Clipboard Toggle word wrap

网络列表中会显示具有外部路由器类型的网络。如果至少有一个没有,请参阅创建默认浮动 IP 网络创建默认供应商网络

注意

如果启用了 Neutron 中继服务插件,则默认创建一个中继端口。如需更多信息,请参阅 Neutron 中继端口

6.11. 启用对环境的访问

在部署时,所有 OpenShift Container Platform 机器都是在 Red Hat OpenStack Platform(RHOSP)租户网络中创建的。因此,大多数 RHOSP 部署中都无法直接访问它们。

您可以在安装过程中使用浮动 IP 地址(FIP)来配置 OpenShift Container Platform API 和应用程序访问。您还可以在没有配置 FIP 的情况下完成安装,但安装程序不会配置一种从外部访问 API 或应用程序的方法。

6.11.1. 启用通过浮动 IP 地址进行访问

创建浮动 IP(FIP)地址,以便外部访问 OpenShift Container Platform API、集群应用程序和 bootstrap 过程。

流程

  1. 使用 Red Hat OpenStack Platform(RHOSP)CLI 创建 API FIP:

    $ openstack floating ip create --description "API <cluster_name>.<base_domain>" <external_network>
    Copy to Clipboard Toggle word wrap
  2. 使用 Red Hat OpenStack Platform(RHOSP)CLI,创建应用程序或 Ingress,FIP:

    $ openstack floating ip create --description "Ingress <cluster_name>.<base_domain>" <external_network>
    Copy to Clipboard Toggle word wrap
  3. 使用 Red Hat OpenStack Platform(RHOSP)CLI 创建 bootstrap FIP:

    $ openstack floating ip create --description "bootstrap machine" <external_network>
    Copy to Clipboard Toggle word wrap
  4. 在 API 和 Ingress FIP 的 DNS 服务器中添加符合这些模式的记录:

    api.<cluster_name>.<base_domain>.  IN  A  <API_FIP>
    *.apps.<cluster_name>.<base_domain>. IN  A <apps_FIP>
    Copy to Clipboard Toggle word wrap
    注意

    如果您不控制 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 控制台和监控界面的访问权限。您还可以使用 kubectloc。您可以使用指向 <application_floating_ip> 的额外条目来访问用户应用程序。此操作使 API 和应用程序可供您访问,不适合于生产部署,但允许对开发和测试进行安装。

  5. 将 FIP 添加到 inventory.yaml 文件中,作为以下变量的值:

    • os_api_fip
    • os_bootstrap_fip
    • os_ingress_fip

如果使用这些值,还必须在 inventory.yaml 文件中输入外部网络作为 os_external_network 变量的值。

提示

您可以通过分配浮动 IP 地址并更新防火墙配置,使 OpenShift Container Platform 资源在集群外可用。

6.11.2. 完成没有浮动 IP 地址的安装

您可以在 Red Hat OpenStack Platform(RHOSP)上安装 OpenShift Container Platform,而无需提供浮动 IP 地址。

inventory.yaml 文件中,不要定义以下变量:

  • os_api_fip
  • os_bootstrap_fip
  • os_ingress_fip

如果无法提供外部网络,也可以将 os_external_network 留 空。如果没有提供 for os_external_network 值,则不会为您创建路由器,如果没有额外的操作,安装程序将无法从 Glance 检索镜像。之后在安装过程中,当您创建网络资源时,您必须自行配置外部连接。

如果您使用 wait-for 命令从因为缺少浮动 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>
Copy to Clipboard Toggle word wrap

如果您不控制 DNS 服务器,您可以将记录添加到 /etc/hosts 文件中。此操作使 API 可供您自己访问,不适合于生产部署,而是允许安装以进行开发和测试。

6.12. 为安装程序定义参数

OpenShift Container Platform 安装程序依赖于一个名为 clouds.yaml 的文件。该文件描述了 Red Hat OpenStack Platform(RHOSP)配置参数,包括项目名称、登录信息和授权服务 URL。

流程

  1. 创建 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'
      Copy to Clipboard Toggle word wrap
  2. 如果您的 RHOSP 安装使用自签名证书颁发机构(CA)证书进行端点身份验证:

    1. 将证书颁发机构文件复制到您的机器中。
    2. cacerts 键添加到 clouds.yaml 文件。该值必须是到 CA 证书的绝对、不可 root 访问的路径:

      clouds:
        shiftstack:
          ...
          cacert: "/etc/pki/ca-trust/source/anchors/ca.crt.pem"
      Copy to Clipboard Toggle word wrap
      提示

      使用自定义 CA 证书运行安装程序后,您可以通过编辑 cloud-provider-config keymap 中的 ca-cert.pem 键的值来更新证书。在命令行中运行:

      $ oc edit configmap -n openshift-config cloud-provider-config
      Copy to Clipboard Toggle word wrap
  3. clouds.yaml 文件放在以下位置之一:

    1. OS_CLIENT_CONFIG_FILE 环境变量的值
    2. 当前目录
    3. 特定于 Unix 的用户配置目录,如 ~/.config/openstack/clouds.yaml
    4. 特定于 Unix 的站点配置目录,如 /etc/openstack/clouds.yaml

      安装程序会按顺序搜索 clouds.yaml

6.13. 创建安装配置文件

您可以自定义在 Red Hat OpenStack Platform(RHOSP)上安装的 OpenShift Container Platform 集群。

先决条件

  • 获取 OpenShift Container Platform 安装程序和集群的 pull secret。
  • 在订阅级别获取服务主体权限。

流程

  1. 创建 install-config.yaml 文件。

    1. 进入包含安装程序的目录并运行以下命令:

      $ ./openshift-install create install-config --dir <installation_directory> 
      1
      Copy to Clipboard Toggle word wrap
      1
      对于 <installation_directory>,请指定要存储安装程序创建的文件的目录名称。

      在指定目录时:

      • 验证该目录是否具有执行权限。在安装目录中运行 Terraform 二进制文件需要这个权限。
      • 使用空目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。

        注意

        始终删除 ~/.powervs 目录,以避免重复使用过时的配置。运行以下命令:

        $ rm -rf ~/.powervs
        Copy to Clipboard Toggle word wrap
    2. 在提示符处,提供云的配置详情:

      1. 可选: 选择用于访问集群机器的 SSH 密钥。

        注意

        对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定 ssh-agent 进程使用的 SSH 密钥。

      2. 选择 openstack 作为目标平台。
      3. 指定用于安装集群的 Red Hat OpenStack Platform(RHOSP)外部网络名称。
      4. 指定用于从外部访问 OpenShift API 的浮动 IP 地址。
      5. 指定至少有 16 GB RAM 用于 control plane 节点,以及计算节点的 8 GB RAM。
      6. 选择集群要部署到的基域。所有 DNS 记录都将是这个基域的子域,并且还包括集群名称。
      7. 为集群输入一个名称。名称长度必须为 14 个或更少字符。
      8. 粘贴 Red Hat OpenShift Cluster Manager 中的 pull secret
  2. 修改 install-config.yaml 文件。您可以在"安装配置参数"部分找到有关可用参数的更多信息。
  3. 备份 install-config.yaml 文件,以便您可以使用它安装多个集群。

    重要

    install-config.yaml 文件会在安装过程中消耗掉。如果要重复使用该文件,您必须立即备份该文件。

现在,文件 install-config.yaml 位于您指定的目录中。

6.14. 安装配置参数

在部署 OpenShift Container Platform 集群前,您可以提供参数值来描述托管集群的云平台中的帐户,并选择性地自定义集群平台。在创建 install-config.yaml 安装配置文件时,您可以通过命令行为所需参数提供值。如果自定义集群,您可以修改 install-config.yaml 文件以提供有关平台的更多详情。

重要

安装后,您无法更改 install-config.yaml 文件中的这些参数。

6.14.1. 所需的配置参数

下表描述了所需的安装配置参数:

Expand
表 6.2. 所需的参数
参数描述

apiVersion

install-config.yaml 内容的 API 版本。当前版本为 v1。安装程序可能还支持旧的 API 版本。

字符串

baseDomain

云供应商的基域。基域用于创建到 OpenShift Container Platform 集群组件的路由。集群的完整 DNS 名称是 baseDomainmetadata.name 参数值的组合,其格式为 <metadata.name>.<baseDomain>

完全限定域名或子域名,如 example.com

metadata

Kubernetes 资源 ObjectMeta,其中只消耗 name 参数。

对象

metadata.name

集群的名称。集群的 DNS 记录是 {{.metadata.name}}.{{.baseDomain}} 的子域。

小写字母、连字符(-)和句点(.)字符串,如 dev。字符串长度必须为 14 个字符或更少。

platform

要执行安装的具体平台配置: alibabacloudawsbaremetalazuregcpibmcloudnutanixopenstackovirtpowervsvsphere{}。有关 platform.<platform> 参数的更多信息,请参考下表中您的特定平台。

对象

pullSecret

从 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"
      }
   }
}
Copy to Clipboard Toggle word wrap

6.14.2. 网络配置参数

您可以根据现有网络基础架构的要求自定义安装配置。例如,您可以扩展集群网络的 IP 地址块,或者提供不同于默认值的不同 IP 地址块。

仅支持 IPv4 地址。

注意

Red Hat OpenShift Data Foundation 灾难恢复解决方案不支持 Globalnet。对于区域灾难恢复场景,请确保为每个集群中的集群和服务网络使用非重叠的专用 IP 地址。

Expand
表 6.3. 网络参数
参数描述

networking

集群网络的配置。

对象

注意

您不能在安装后更改 networking 对象指定的参数。

networking.networkType

要安装的 Red Hat OpenShift Networking 网络插件。

OpenShiftSDNOVNKubernetesOpenShiftSDN 是 all-Linux 网络的 Container Network Interface (CNI)插件。OVNKubernetes 是 Linux 网络和包含 Linux 和 Windows 服务器的混合网络的 CNI 插件。默认值为 OVNKubernetes

networking.clusterNetwork

pod 的 IP 地址块。

默认值为 10.128.0.0/14,主机前缀为 /23

如果您指定了多个 IP 地址块,块不得重叠。

对象数组。例如:

networking:
  clusterNetwork:
  - cidr: 10.128.0.0/14
    hostPrefix: 23
Copy to Clipboard Toggle word wrap

networking.clusterNetwork.cidr

使用 networking.clusterNetwork 时需要此项。IP 地址块。

IPv4 网络。

无类别域间路由(CIDR)表示法中的 IP 地址块。IPv4 块的前缀长度介于 0 到 32 之间

networking.clusterNetwork.hostPrefix

分配给每个节点的子网前缀长度。例如,如果 hostPrefix 设为 23,则每个节点从 given cidr 中分配 a /23 子网。hostPrefix23 提供 510(2^(32 - 23)- 2)pod IP 地址。

子网前缀。

默认值为 23

networking.serviceNetwork

服务的 IP 地址块。默认值为 172.30.0.0/16

OpenShift SDN 和 OVN-Kubernetes 网络插件只支持服务网络的一个 IP 地址块。

CIDR 格式具有 IP 地址块的数组。例如:

networking:
  serviceNetwork:
   - 172.30.0.0/16
Copy to Clipboard Toggle word wrap

networking.machineNetwork

机器的 IP 地址块。

如果您指定了多个 IP 地址块,块不得重叠。

对象数组。例如:

networking:
  machineNetwork:
  - cidr: 10.0.0.0/16
Copy to Clipboard Toggle word wrap

networking.machineNetwork.cidr

使用 networking.machineNetwork 时需要此项。IP 地址块。libvirt 和 IBM Power Virtual Server 以外的所有平台的默认值为 10.0.0.0/16。对于 libvirt,默认值 为 192.168.126.0/24。对于 IBM Power Virtual Server,默认值为 192.168.0.0/24

CIDR 表示法中的 IP 网络块。

例如: 10.0.0.0/16

注意

networking.machineNetwork 设置为与首选 NIC 所在的 CIDR 匹配。

6.14.3. 可选的配置参数

下表描述了可选的安装配置参数:

Expand
表 6.4. 可选参数
参数描述

additionalTrustBundle

添加到节点可信证书存储中的 PEM 编码 X.509 证书捆绑包。配置代理时,也可以使用此信任捆绑包。

字符串

功能

控制可选核心组件的安装。您可以通过禁用可选组件来减少 OpenShift Container Platform 集群的空间。如需更多信息,请参阅安装中的"集群功能"页面。

字符串数组

capabilities.baselineCapabilitySet

选择要启用的一组初始可选功能。有效值为 Nonev4.11v4.12vCurrent。默认值为 vCurrent

字符串

capabilities.additionalEnabledCapabilities

将可选功能集合扩展到您在 baselineCapabilitySet 中指定的范围。您可以在此参数中指定多个功能。

字符串数组

cpuPartitioningMode

启用工作负载分区,它会隔离 OpenShift Container Platform 服务、集群管理工作负载和基础架构 pod,以便在保留的一组 CPU 上运行。您只能在安装过程中启用工作负载分区。您不能在安装后禁用它。虽然此字段启用工作负载分区,但它不会将工作负载配置为使用特定的 CPU。如需更多信息,请参阅 Scalability and Performance 部分中的 Workload partitioning 页面。

NoneAllNodes.None 是默认值。

Compute

组成计算节点的机器的配置。

MachinePool 对象的数组。

compute.architecture

决定池中机器的指令集合架构。目前,不支持具有不同架构的集群。所有池都必须指定相同的架构。有效值为默认值: amd64

字符串

compute: 超线程:

是否在计算机器上启用或禁用并发多 线程或超线程。默认情况下,启用并发多线程以提高机器内核的性能。

重要

如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。

enabledDisabled

compute.name

使用 compute 时需要此项。机器池的名称。

worker

compute.platform

使用 compute 时需要此项。使用此参数指定托管 worker 机器的云供应商。此参数值必须与 controlPlane.platform 参数值匹配。

alibabacloud,aws,azure,gcp,ibmcloud,nutanix,openstack,ovirt,powervs,vsphere, 或 {}

compute.replicas

要置备的计算机器数量,也称为 worker 机器。

大于或等于 2 的正整数。默认值为 3

featureSet

为功能集启用集群。功能集是 OpenShift Container Platform 功能的集合,默认情况下不启用。有关在安装过程中启用功能集的更多信息,请参阅"使用功能门启用功能"。

字符串.要启用的功能集的名称,如 TechPreviewNoUpgrade

controlPlane

组成 control plane 的机器的配置。

MachinePool 对象的数组。

controlPlane.architecture

决定池中机器的指令集合架构。目前,不支持具有不同架构的集群。所有池都必须指定相同的架构。有效值为默认值: amd64

字符串

controlPlane: 超线程:

是否在 control plane 机器上启用或禁用并发多 线程或超线程。默认情况下,启用并发多线程以提高机器内核的性能。

重要

如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。

enabledDisabled

controlPlane.name

使用 controlPlane 时需要此项。机器池的名称。

master

controlPlane.platform

使用 controlPlane 时需要此项。使用此参数指定托管 control plane 机器的云供应商。此参数值必须与 compute.platform 参数值匹配。

alibabacloud,aws,azure,gcp,ibmcloud,nutanix,openstack,ovirt,powervs,vsphere, 或 {}

controlPlane.replicas

要置备的 control plane 机器数量。

唯一支持的值是 3,这是默认值。

credentialsMode

Cloud Credential Operator(CCO)模式。在没有指定模式时,CCO 会动态尝试决定提供的凭证的功能,在支持多个模式的平台上首选 mint 模式。

注意

不是所有 CCO 模式都支持所有云供应商。如需有关 CCO 模式的更多信息,请参阅集群 Operator 参考内容中的 Cloud Credential Operator 条目。

注意

如果您的 AWS 帐户启用了服务控制策略 (SCP),您必须将 credentialsMode 参数配置为 MintPassthroughManual

MintPassthroughManual 或空字符串("")。

imageContentSources

release-image 内容的源和存储库。

对象数组。包括一个 source 以及可选的 mirrors,如本表的以下行所述。

imageContentSources.source

使用 imageContentSources 时需要此项。指定用户在镜像拉取规格中引用的存储库。

字符串

imageContentSources.mirrors

指定可能还包含同一镜像的一个或多个存储库。

字符串数组

publish

如何发布或公开集群的面向用户的端点,如 Kubernetes API、OpenShift 路由。

内部或外部 .默认值为 External

在非云平台上不支持将此字段设置为 Internal

重要

如果字段的值设为 Internal,集群就会变得无法正常工作。如需更多信息,请参阅 BZ#1953035

sshKey

用于验证对集群机器的访问的 SSH 密钥。

注意

对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定 ssh-agent 进程使用的 SSH 密钥。

例如,sshKey: ssh-ed25519 AAAA..

  1. 不是所有 CCO 模式都支持所有云供应商。有关 CCO 模式的更多信息,请参阅身份验证和授权内容中的"管理云供应商凭证"条目。

下表中描述了其他 RHOSP 配置参数:

Expand
表 6.5. 其他 RHOSP 参数
参数描述

compute.platform.openstack.rootVolume.size

对于计算机器,以 GB 为单位的根卷大小。如果没有设置这个值,机器将使用临时存储。

整数,如 30

compute.platform.openstack.rootVolume.type

对于计算机器,根卷的类型。

字符串,如 performance

controlPlane.platform.openstack.rootVolume.size

对于 control plane 机器,以 GB 为单位表示的根卷大小。如果没有设置这个值,机器将使用临时存储。

整数,如 30

controlPlane.platform.openstack.rootVolume.type

对于 control plane 机器,根卷的类型。

字符串,如 performance

platform.openstack.cloud

要使用的 RHOSP 云名称,来自于 clouds.yaml 文件中的云列表。

字符串,如 MyCloud

platform.openstack.externalNetwork

用于安装的 RHOSP 外部网络名称。

字符串,如 external

platform.openstack.computeFlavor

用于 control plane 和计算机器的 RHOSP 类别。

此属性已弃用。要将 flavor 用作所有机器池的默认值,请将其添加为 platform.openstack.defaultMachinePlatform 属性中的 type 键的值。您还可以分别为每个机器池设置 flavor 值。

字符串,如 m1.xlarge

6.14.5. 可选的 RHOSP 配置参数

下表描述了可选的 RHOSP 配置参数:

Expand
表 6.6. 可选的 RHOSP 参数
参数描述

compute.platform.openstack.additionalNetworkIDs

与计算机器关联的其他网络。不为额外网络创建允许的地址对。

一个或多个 UUID 的列表作为字符串。例如: fa806b2f-ac49-4bce-b9db-124bc64209bf

compute.platform.openstack.additionalSecurityGroupIDs

与计算机器关联的其他安全组。

一个或多个 UUID 的列表作为字符串。例如,7ee219f3-d2e9-48a1-96c2-e7429f1b0da7

compute.platform.openstack.zones

RHOSP Compute(Nova)可用区(AZ)在其中安装机器。如果没有设置此参数,安装程序会依赖于配置了 RHOSP 管理员的 Nova 的默认设置。

在使用 Kuryr 的集群上,RHOSP Octavia 不支持可用区。负载均衡器,如果您使用 Amphora 供应商驱动程序,则依赖 Amphora 虚拟机的 OpenShift Container Platform 服务不会根据此属性的值创建。

字符串列表。例如: ["zone-1", "zone-2"]

compute.platform.openstack.rootVolume.zones

对于计算机器,可在其上安装根卷的可用性区域。如果没有为此参数设置值,安装程序会选择默认的可用性区域。

字符串列表,如 ["zone-1", "zone-2"]

compute.platform.openstack.serverGroupPolicy

要应用到池中包含计算机器的组策略。您不能在创建后更改服务器组策略或关系。支持的选项包括 anti-affinity, soft-affinity, 和 soft-anti-affinity默认值为 soft-anti-affinity

affinity 策略可防止迁移,因此会影响 RHOSP 升级。不支持 affinity 策略。

如果使用严格的 anti-affinity 策略,实例迁移过程中需要额外的 RHOSP 主机。

应用到机器池的服务器组策略。例如,soft-affinity

controlPlane.platform.openstack.additionalNetworkIDs

与 control plane 机器关联的额外网络。不为额外网络创建允许的地址对。

附加到 control plane 机器的额外网络也会附加到 bootstrap 节点。

一个或多个 UUID 的列表作为字符串。例如: fa806b2f-ac49-4bce-b9db-124bc64209bf

controlPlane.platform.openstack.additionalSecurityGroupIDs

与 control plane 机器关联的其他安全组。

一个或多个 UUID 的列表作为字符串。例如,7ee219f3-d2e9-48a1-96c2-e7429f1b0da7

controlPlane.platform.openstack.zones

RHOSP Compute(Nova)可用区(AZ)在其中安装机器。如果没有设置此参数,安装程序会依赖于配置了 RHOSP 管理员的 Nova 的默认设置。

在使用 Kuryr 的集群上,RHOSP Octavia 不支持可用区。负载均衡器,如果您使用 Amphora 供应商驱动程序,则依赖 Amphora 虚拟机的 OpenShift Container Platform 服务不会根据此属性的值创建。

字符串列表。例如: ["zone-1", "zone-2"]

controlPlane.platform.openstack.rootVolume.zones

对于 control plane 机器,安装根卷的可用区。如果没有设置这个值,安装程序会选择默认可用区。

字符串列表,如 ["zone-1", "zone-2"]

controlPlane.platform.openstack.serverGroupPolicy

要应用到池中包含 control plane 机器的组的服务器组策略。您不能在创建后更改服务器组策略或关系。支持的选项包括 anti-affinity, soft-affinity, 和 soft-anti-affinity默认值为 soft-anti-affinity

affinity关联性 策略会阻止迁移,因此会影响 RHOSP 升级。不支持 affinity 策略。

如果使用严格的 anti-affinity 策略,实例迁移过程中需要额外的 RHOSP 主机。

应用到机器池的服务器组策略。例如,soft-affinity

platform.openstack.clusterOSImage

安装程序从中下载 RHCOS 镜像的位置。

您必须设置此参数才能在受限网络中执行安装。

HTTP 或 HTTPS URL,可选使用 SHA-256 校验和。

例如: http://mirror.example.com/images/rhcos-43.81.201912131630.0-openstack.x86_64.qcow2.gz?sha256=ffebbd68e8a1f2a245ca19522c16c86f67f9ac8e4e0c1f0a812b068b16f7265d。该值也可以是现有 Glance 镜像的名称,如 my-rhcos

platform.openstack.clusterOSImageProperties

在 Glance 中添加至安装程序上传的 ClusterOSImage 的属性。如果将 platform.openstack.clusterOSImage 设置为现有的 Glance 镜像,则此属性将被忽略。

您可以使用此属性超过每个节点 26 个 PV 的 RHOSP 的默认持久性卷(PV)限值。要超过这个限制,请将 virtio- scsi_model 属性值设置为 virtio-scsi, 并将 hw_disk_bus 值设置为 scsi

您还可以使用此属性通过包含值为 yeshw_qemu_guest_agent 属性来启用 QEMU 客户机代理。

一组字符串属性。例如:

clusterOSImageProperties:
    hw_scsi_model: "virtio-scsi"
    hw_disk_bus: "scsi"
    hw_qemu_guest_agent: "yes"
Copy to Clipboard Toggle word wrap

platform.openstack.defaultMachinePlatform

默认机器池平台配置。

{
   "type": "ml.large",
   "rootVolume": {
      "size": 30,
      "type": "performance"
   }
}
Copy to Clipboard Toggle word wrap

platform.openstack.ingressFloatingIP

与 Ingress 端口关联的现有浮动 IP 地址。要使用此属性,还必须定义 platform.openstack.externalNetwork 属性。

IP 地址,如 128.0.0.1

platform.openstack.apiFloatingIP

与 API 负载均衡器关联的现有浮动 IP 地址。要使用此属性,还必须定义 platform.openstack.externalNetwork 属性。

IP 地址,如 128.0.0.1

platform.openstack.externalDNS

集群实例用于 DNS 解析的外部 DNS 服务器的 IP 地址。

IP 地址列表作为字符串。例如 ,["8.8.8.8", "192.168.1.12"]

platform.openstack.loadbalancer

是否使用默认的内部负载均衡器。如果值设为 UserManaged,则此默认负载均衡器被禁用,以便您可以部署使用外部用户管理的负载均衡器的集群。如果没有设置该参数,或者值为 OpenShiftManagedDefault,集群将使用默认负载均衡器。

UserManagedOpenShiftManagedDefault.

platform.openstack.machinesSubnet

集群节点使用的 RHOSP 子网的 UUID。在这个子网上创建节点和虚拟 IP(VIP)端口。

networking.machineNetwork 中的第一个项必须与 machine Subnet 的值匹配。

如果部署到自定义子网中,则无法将外部 DNS 服务器指定到 OpenShift Container Platform 安装程序。相反,将 DNS 添加到 RHOSP 中的子网中

作为字符串的 UUID。例如: fa806b2f-ac49-4bce-b9db-124bc64209bf

6.14.6. 故障域的 RHOSP 参数

重要

RHOSP 故障域只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

Red Hat OpenStack Platform (RHOSP) 部署没有单一的故障域实现。相反,可用区会为每个服务单独定义,如计算服务、Nova;网络服务、Neutron;存储服务 Cinder。

从 OpenShift Container Platform 4.13 开始,RHOSP 部署有统一的故障域定义,覆盖所有支持的可用区类型。您可以使用故障域从单一位置控制 Nova、Neutron 和 Cinder 配置的相关方面。

在 RHOSP 中,端口描述了网络连接,并映射到计算机器内的接口。一个端口还:

  • 由网络或多个子网定义
  • 将机器连接到一个或多个子网

故障域使用端口对部署的服务进行分组。如果使用故障域,每台机器都会连接到:

  • 对象存在时 ID control-planeportTarget 对象。
  • 本身故障域中的所有非 control-plane portTarget 对象。
  • 机器池的 additionalNetworkIDs 列表中的所有网络。

要为机器池配置故障域,请编辑 controlPlane.platform.openstack.failureDomains 下的可用区和端口目标参数。

Expand
表 6.7. 故障域的 RHOSP 参数
参数描述

platform.openstack.failuredomains.computeAvailabilityZone

服务器的可用区。如果没有指定,则使用集群默认。

可用区的名称。例如,nova-1

platform.openstack.failuredomains.storageAvailabilityZone

root 卷的可用区。如果没有指定,则使用集群默认。

可用区的名称。例如,cinder-1

platform.openstack.failuredomains.portTargets

portTarget 对象列表,各自定义附加到故障域中机器的网络连接。

portTarget 对象列表。

platform.openstack.failuredomains.portTargets.portTarget.id

单个端口目标的 ID。要将该端口目标选为机器的第一个网络,请将此参数的值设置为 control-plane。如果此参数具有不同的值,它将被忽略。

control-plane 或任意字符串。

platform.openstack.failuredomains.portTargets.portTarget.network

必需。附加到故障域中机器的网络的名称或 ID。

包含名称或 UUID 的 network 对象。例如:

network:
  id: 8db6a48e-375b-4caa-b20b-5b9a7218bfe6
Copy to Clipboard Toggle word wrap

或:

network:
  name: my-network-1
Copy to Clipboard Toggle word wrap

platform.openstack.failuredomains.portTargets.portTarget.fixedIPs

要分配固定 IP 地址的子网。这些子网必须与端口位于同一个网络中。

subnet 对象列表。

重要

您不能组合区域字段和故障域。如果要使用故障域,则必须取消设置 controlPlane.zonecontrolPlane.rootVolume.zone 字段。

6.14.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.apiVIPsplatform.openstack.ingressVIPs 设置值。

重要

集群安装后无法调整网络的 CIDR 范围。红帽不提供有关在集群安装过程中确定范围的直接指导,因为它需要仔细考虑每个命名空间创建的 pod 数量。

要使用 Kuryr SDN 而不是默认的 OVN-Kubernetes 网络插件进行部署,您必须修改 install-config.yaml 文件,使其包含 Kuryr 作为所需的 networking.networkType。这个示例 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 
1

  networkType: Kuryr 
2

platform:
  openstack:
    cloud: mycloud
    externalNetwork: external
    computeFlavor: m1.xlarge
    apiFloatingIP: 128.0.0.1
    trunkSupport: true 
3

    octaviaSupport: true 
4

pullSecret: '{"auths": ...}'
sshKey: ssh-ed25519 AAAA...
Copy to Clipboard Toggle word wrap
1
Amphora Octavia 驱动程序在每个负载均衡器创建两个端口。因此,安装程序创建的服务子网是指定为 serviceNetwork 属性值的 CIDR 大小的两倍。需要更大的范围来防止 IP 地址冲突。
2
要安装的集群网络插件。支持的值包括 KuryrOVNKubernetesOpenShiftSDN。默认值为 OVNKubernetes
3 4
安装程序会自动发现 trunkSupport 和 octaviaSupport,因此无需设置它们。但是,如果您的环境不能满足这两个要求,Kuryr SDN 将无法正常工作。需要中继才能将 pod 连接到 RHOSP 网络,并且需要 Octavia 来创建 OpenShift Container Platform 服务。

6.14.9. 使用故障域的安装配置示例

重要

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
# ...
Copy to Clipboard Toggle word wrap

6.14.10. 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 文档中的 了解更多有关供应商和租户网络的信息。

6.14.10.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
    Copy to Clipboard Toggle word wrap
    要为名为"openshift"的项目创建子网,请输入以下命令
    $ openstack subnet create --project openshift
    Copy to Clipboard Toggle word wrap

    要了解更多有关在 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 ...
    Copy to Clipboard Toggle word wrap
  • 可选: 要保护网络,请创建 基于角色的访问控制(RBAC) 规则,以限制对单个项目的网络访问。

您可以在 Red Hat OpenStack Platform(RHOSP) 提供商网络上部署具有主网络接口的 OpenShift Container Platform 集群。

先决条件

  • 您的 Red Hat OpenStack Platform(RHOSP)部署被配置为"RHOSP 供应商网络要求用于集群安装"。

流程

  1. 在文本编辑器中,打开 install-config.yaml 文件。
  2. platform.openstack.apiVIPs 属性的值设置为 API VIP 的 IP 地址。
  3. platform.openstack.ingressVIPs 属性的值设置为 Ingress VIP 的 IP 地址。
  4. platform.openstack.machinesSubnet 属性的值设置为提供商网络子网的 UUID。
  5. networking.machineNetwork.cidr 属性的值设置为提供商网络子网的 CIDR 块。
重要

platform.openstack.apiVIPsplatform.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
Copy to Clipboard Toggle word wrap

1 2
在 OpenShift Container Platform 4.12 及更新的版本中,apiVIPingressVIP 配置设置已弃用。反之,使用列表格式在 apiVIPsingressVIPs 配置设置中输入值。
警告

您不能在将提供商网络用于主网络接口时设置 platform.openstack.externalNetworkplatform.openstack.externalDNS 参数。

在部署集群时,安装程序使用 install-config.yaml 文件在提供商网络上部署集群。

提示

您可以将额外的网络(包括提供商网络)添加到 platform.openstack.additionalNetworkIDs 列表中。

部署集群后,您可以将 pod 附加到额外网络。如需更多信息,请参阅 了解多个网络

6.14.11. Kuryr 端口池

Kuryr 端口池在待机时维护多个端口,用于创建 pod。

将端口保留在待机上可最大程度缩短 pod 创建时间。如果没有端口池,Kuryr 必须明确请求在创建或删除 pod 时创建或删除端口。

Kuryr 使用的 Neutron 端口是在绑定到命名空间的子网中创建的。这些 pod 端口也作为子端口添加到 OpenShift Container Platform 集群节点的主端口。

因为 Kuryr 将每个命名空间保留在单独的子网中,所以为每个命名空间 worker 对维护一个单独的端口池。

在安装集群前,您可以在 cluster-network-03-config.yml 清单文件中设置以下参数来配置端口池行为:

  • enablePortPoolsPrepopulation 参数控制池准备工作,它会强制 Kuryr 在命名空间中创建第一个 pod 使用专用网络时将 Neutron 端口添加到池中。默认值为 false
  • poolMinPorts 参数是池中保留的最少可用端口的数量。默认值为 1
  • poolMaxPorts 参数是池中保留的最大可用端口数。值 0 可 禁用此上限。这是默认设置。

    如果您的 OpenStack 端口配额较低,或者 pod 网络上的 IP 地址有限,请考虑设置此选项以确保删除不需要的端口。

  • poolBatchPorts 参数定义一次可以创建的 Neutron 端口的最大数量。默认值为 3

6.14.12. 在安装过程中调整 Kuryr 端口池

在安装过程中,您可以配置 Kuryr 如何管理 Red Hat OpenStack Platform(RHOSP)Neutron 端口,以控制 pod 创建的速度和效率。

先决条件

  • 创建并修改 install-config.yaml 文件。

流程

  1. 在命令行中创建清单文件:

    $ ./openshift-install create manifests --dir <installation_directory> 
    1
    Copy to Clipboard Toggle word wrap
    1
    对于 <installation_directory>,请指定包含集群的 install-config.yaml 文件的目录名称。
  2. <installation_directory>/manifests/ 目录中创建一个名为 cluster-network-03-config.yml 的文件:

    $ touch <installation_directory>/manifests/cluster-network-03-config.yml 
    1
    Copy to Clipboard Toggle word wrap
    1
    对于 <installation_directory>,请指定包含集群的 manifests/ 目录的目录名称。

    创建该文件后,几个网络配置文件位于 manifests/ 目录中,如下所示:

    $ ls <installation_directory>/manifests/cluster-network-*
    Copy to Clipboard Toggle word wrap

    输出示例

    cluster-network-01-crd.yml
    cluster-network-02-config.yml
    cluster-network-03-config.yml
    Copy to Clipboard Toggle word wrap

  3. 在编辑器中打开 cluster-network-03-config.yml 文件,并输入描述您想要的 Cluster Network Operator 配置的自定义资源(CR):

    $ oc edit networks.operator.openshift.io cluster
    Copy to Clipboard Toggle word wrap
  4. 编辑设置以满足您的要求。以下示例提供了以下文件:

    apiVersion: operator.openshift.io/v1
    kind: Network
    metadata:
      name: cluster
    spec:
      clusterNetwork:
      - cidr: 10.128.0.0/14
        hostPrefix: 23
      serviceNetwork:
      - 172.30.0.0/16
      defaultNetwork:
        type: Kuryr
        kuryrConfig:
          enablePortPoolsPrepopulation: false 
    1
    
          poolMinPorts: 1 
    2
    
          poolBatchPorts: 3 
    3
    
          poolMaxPorts: 5 
    4
    
          openstackServiceNetwork: 172.30.0.0/15 
    5
    Copy to Clipboard Toggle word wrap
    1
    enablePortPoolsPrepopulation 设置为 true,以便在一个命名空间中为 pod 在网络上创建第一个 pod 时使 Kuryr 创建新的 Neutron 端口。此设置引发 Neutron 端口配额,但可以缩短生成容器集所需的时间。默认值为 false
    2
    如果池中的可用端口数量低于 poolMinPorts 的值,Kuryr 会为池创建新端口。默认值为 1
    3
    poolBatchPorts 控制在可用端口数量低于 poolMinPorts 值时创建的新端口数量。默认值为 3
    4
    如果池中的可用端口数量大于 poolMaxPorts 的值,Kuryr 会删除它们,直到数量与这个值匹配为止。将此值设置为 0 可 禁用此上限,防止池缩小。默认值为 0
    5
    openStackServiceNetwork 参数定义将 IP 地址分配到 RHOSP Octavia 的 LoadBalancer 的网络的 CIDR 范围。

    如果此参数与 Amphora 驱动程序一起使用,则 Octavia 会为每个负载均衡器从这个网络获取两个 IP 地址:一个用于 OpenShift,另一个用于 VRRP 连接。由于这些 IP 地址分别由 OpenShift 容器平台和 Neutron 管理,因此它们必须来自不同的池。因此,open StackServiceNetwork 的值必须至少是 serviceNetwork 值的两倍,service Network 的值必须与 openStackServiceNetwork 定义的范围完全重叠。

    CNO 验证从此参数定义的范围获取的 VRRP IP 地址是否与 serviceNetwork 参数定义的范围不重叠。

    如果没有设置此参数,CNO 将使用 serviceNetwork 扩展值,它由使用 1 减少前缀大小决定。

  5. 保存 cluster-network-03-config.yml 文件,再退出文本编辑器。
  6. 可选:备份 manifests/cluster-network-03-config.yml 文件。安装程序在创建集群时删除 manifests/ 目录。

6.14.13. 为机器设置自定义子网

安装程序默认使用的 IP 范围可能与您在安装 OpenShift Container Platform 时创建的 Neutron 子网不匹配。如有必要,通过编辑安装配置文件来更新新机器的 CIDR 值。

先决条件

  • 有 OpenShift Container Platform 安装程序生成的 install-config.yaml 文件。

流程

  1. 在命令行中,浏览包含 install-config.yaml 的目录。
  2. 在该目录中,运行脚本来编辑 install-config.yaml 文件或手动更新该文件:

    • 要使用脚本设置值,请运行:

      $ python -c '
      import yaml;
      path = "install-config.yaml";
      data = yaml.safe_load(open(path));
      data["networking"]["machineNetwork"] = [{"cidr": "192.168.0.0/18"}]; 
      1
      
      open(path, "w").write(yaml.dump(data, default_flow_style=False))'
      Copy to Clipboard Toggle word wrap
      1
      插入与您预期的 Neutron 子网相匹配的值,如 192.0.2.0/24
    • 要手动设置值,请打开 文件,并将 networking.machineCIDR 的值设置为与您预期的 Neutron 子网匹配的内容。

6.14.14. 清空计算机器池

要继续使用您自己的基础架构的安装,请将安装配置文件中的计算机器数量设置为零。之后,您可以手动创建这些机器。

先决条件

  • 有 OpenShift Container Platform 安装程序生成的 install-config.yaml 文件。

流程

  1. 在命令行中,浏览包含 install-config.yaml 的目录。
  2. 在该目录中,运行脚本来编辑 install-config.yaml 文件或手动更新该文件:

    • 要使用脚本设置值,请运行:

      $ python -c '
      import yaml;
      path = "install-config.yaml";
      data = yaml.safe_load(open(path));
      data["compute"][0]["replicas"] = 0;
      open(path, "w").write(yaml.dump(data, default_flow_style=False))'
      Copy to Clipboard Toggle word wrap
    • 要手动设置值,打开该文件并将 compute.<first entry>.replicas 的 值设置为 0

6.14.15. 修改网络类型

默认情况下,安装程序会选择 OpenShiftSDN 网络类型。要使用 Kuryr,请更改安装程序生成的安装配置文件中的值。

先决条件

  • 有 OpenShift Container Platform 安装程序生成的 install-config.yaml 文件

流程

  1. 在命令提示符中,进入包含 install-config.yaml 的目录。
  2. 在该目录中,运行脚本来编辑 install-config.yaml 文件或手动更新该文件:

    • 要使用脚本设置值,请运行:

      $ python -c '
      import yaml;
      path = "install-config.yaml";
      data = yaml.safe_load(open(path));
      data["networking"]["networkType"] = "Kuryr";
      open(path, "w").write(yaml.dump(data, default_flow_style=False))'
      Copy to Clipboard Toggle word wrap
    • 要手动设置值,打开 文件并将 networking.networkType 设置为 "Kuryr"。

6.15. 创建 Kubernetes 清单和 Ignition 配置文件

由于您必须修改一些集群定义文件并手动启动集群机器,因此您必须生成 Kubernetes 清单和 Ignition 配置文件来配置机器。

安装配置文件转换为 Kubernetes 清单。清单嵌套到 Ignition 配置文件中,稍后用于配置集群机器。

重要
  • OpenShift Container Platform 安装程序生成的 Ignition 配置文件包含 24 小时后过期的证书,然后在该时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的 node-bootstrapper 证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。
  • 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。

先决条件

  • 已获得 OpenShift Container Platform 安装程序。
  • 已创建 install-config.yaml 安装配置文件。

流程

  1. 进入包含 OpenShift Container Platform 安装程序的目录,并为集群生成 Kubernetes 清单:

    $ ./openshift-install create manifests --dir <installation_directory> 
    1
    Copy to Clipboard Toggle word wrap
    1
    对于 <installation_directory>,请指定包含您创建的 install-config.yaml 文件的安装目录。
  2. 删除定义 control plane 机器的 Kubernetes 清单文件以及计算机器集:

    $ rm -f openshift/99_openshift-cluster-api_master-machines-*.yaml openshift/99_openshift-cluster-api_worker-machineset-*.yaml
    Copy to Clipboard Toggle word wrap

    由于您要自行创建和管理这些资源,因此不必初始化这些资源。

    • 您可以使用机器 API 来保留计算机器集文件来创建计算机器,但您必须更新对它们的引用以匹配您的环境。
  3. 检查 <installation_directory>/manifests/cluster-scheduler-02-config.yml Kubernetes 清单文件中的 mastersSchedulable 参数是否已设置为 false。此设置可防止在 control plane 机器上调度 pod:

    1. 打开 <installation_directory>/manifests/cluster-scheduler-02-config.yml 文件。
    2. 找到 mastersSchedulable 参数,并确保它被设置为 false
    3. 保存并退出 文件。
  4. 要创建 Ignition 配置文件,请从包含安装程序的目录运行以下命令:

    $ ./openshift-install create ignition-configs --dir <installation_directory> 
    1
    Copy to Clipboard Toggle word wrap
    1
    对于 <installation_directory>,请指定相同的安装目录。

    为安装目录中的 bootstrap、control plane 和计算节点创建 Ignition 配置文件。kubeadmin-passwordkubeconfig 文件在 ./<installation_directory>/auth 目录中创建:

    .
    ├── auth
    │   ├── kubeadmin-password
    │   └── kubeconfig
    ├── bootstrap.ign
    ├── master.ign
    ├── metadata.json
    └── worker.ign
    Copy to Clipboard Toggle word wrap
  5. 将元数据文件的 infraID 密钥导出为环境变量:

    $ export INFRA_ID=$(jq -r .infraID metadata.json)
    Copy to Clipboard Toggle word wrap
提示

metadata.json 中提取 infraID 密钥,并将它用作您创建的所有 RHOSP 资源的前缀。通过这样做,您可以避免在同一项目中进行多个部署时的名称冲突。

6.16. 准备 bootstrap Ignition 文件

OpenShift Container Platform 安装过程依赖于从 bootstrap Ignition 配置文件创建的 bootstrap 机器。

编辑 文件并上传该文件。然后,创建一个 Red Hat OpenStack Platform(RHOSP)用来下载主文件的辅助 bootstrap Ignition 配置文件。

先决条件

  • 您有安装程序生成的 bootstrap Ignition 文件,即 bootstrap.ign
  • 安装程序元数据文件中的基础架构 ID 被设置为环境变量($INFRA_ID)。

    • 如果没有设置变量,请参阅 创建 Kubernetes 清单和 Ignition 配置文件
  • 您可以使用 HTTP(S)来存储 bootstrap Ignition 文件。

    • 所记录的步骤使用 RHOSP 镜像服务(Glance),但也可以使用 RHOSP 存储服务(Swift)、Amazon S3、内部 HTTP 服务器或临时 Nova 服务器。

流程

  1. 运行以下 Python 脚本:该脚本修改 bootstrap Ignition 文件,以设置主机名,并在运行时设置 CA 证书文件:

    import base64
    import json
    import os
    
    with open('bootstrap.ign', 'r') as f:
        ignition = json.load(f)
    
    files = ignition['storage'].get('files', [])
    
    infra_id = os.environ.get('INFRA_ID', 'openshift').encode()
    hostname_b64 = base64.standard_b64encode(infra_id + b'-bootstrap\n').decode().strip()
    files.append(
    {
        'path': '/etc/hostname',
        'mode': 420,
        'contents': {
            'source': 'data:text/plain;charset=utf-8;base64,' + hostname_b64
        }
    })
    
    ca_cert_path = os.environ.get('OS_CACERT', '')
    if ca_cert_path:
        with open(ca_cert_path, 'r') as f:
            ca_cert = f.read().encode()
            ca_cert_b64 = base64.standard_b64encode(ca_cert).decode().strip()
    
        files.append(
        {
            'path': '/opt/openshift/tls/cloud-ca-cert.pem',
            'mode': 420,
            'contents': {
                'source': 'data:text/plain;charset=utf-8;base64,' + ca_cert_b64
            }
        })
    
    ignition['storage']['files'] = files;
    
    with open('bootstrap.ign', 'w') as f:
        json.dump(ignition, f)
    Copy to Clipboard Toggle word wrap
  2. 使用 RHOSP CLI,创建使用 bootstrap Ignition 文件的镜像:

    $ openstack image create --disk-format=raw --container-format=bare --file bootstrap.ign <image_name>
    Copy to Clipboard Toggle word wrap
  3. 获取镜像的详情:

    $ openstack image show <image_name>
    Copy to Clipboard Toggle word wrap

    记录 file 值;它遵循 v2/images/<image_ID>/file 模式。

    注意

    验证您创建的镜像是否活跃。

  4. 检索镜像服务的公共地址:

    $ openstack catalog show image
    Copy to Clipboard Toggle word wrap
  5. 将公共地址与 镜像文件 值组合,并在存储位置保存结果。位置遵循 <image_service_public_URL>/v2/images/<image_ID>/file 模式。
  6. 生成身份验证令牌并保存令牌 ID:

    $ openstack token issue -c id -f value
    Copy to Clipboard Toggle word wrap
  7. 将以下内容插入到名为 $INFRA_ID-bootstrap-ignition.json 的文件中,并编辑占位符以匹配您自己的值:

    {
      "ignition": {
        "config": {
          "merge": [{
            "source": "<storage_url>", 
    1
    
            "httpHeaders": [{
              "name": "X-Auth-Token", 
    2
    
              "value": "<token_ID>" 
    3
    
            }]
          }]
        },
        "security": {
          "tls": {
            "certificateAuthorities": [{
              "source": "data:text/plain;charset=utf-8;base64,<base64_encoded_certificate>" 
    4
    
            }]
          }
        },
        "version": "3.2.0"
      }
    }
    Copy to Clipboard Toggle word wrap
    1
    ignition.config.merge.source 值替换为 bootstrap Ignition 文件存储 URL。
    2
    httpHeaders 中将 name 设置为 "X-Auth-Token"。
    3
    httpHeaders 中将 value 设置为您的令牌 ID。
    4
    如果 bootstrap Ignition 文件服务器使用自签名证书,请包含 base64 编码的证书。
  8. 保存辅助 Ignition 配置文件。

bootstrap Ignition 数据将在安装过程中传递给 RHOSP。

警告

bootstrap Ignition 文件包含敏感信息,如 clouds.yaml 凭证。确保将其保存在安全的地方,并在完成安装后将其删除。

在您自己的基础架构的 Red Hat OpenStack Platform(RHOSP)上安装 OpenShift Container Platform 需要 control plane Ignition 配置文件。您必须创建多个配置文件。

注意

与 bootstrap Ignition 配置一样,您必须明确为每个 control plane 机器定义主机名。

先决条件

  • 来自安装程序元数据文件中的基础架构 ID 被设置为环境变量($INFRA_ID)。

    • 如果没有设置变量,请参阅"创建 Kubernetes 清单和 Ignition 配置文件"。

流程

  • 在命令行中运行以下 Python 脚本:

    $ for index in $(seq 0 2); do
        MASTER_HOSTNAME="$INFRA_ID-master-$index\n"
        python -c "import base64, json, sys;
    ignition = json.load(sys.stdin);
    storage = ignition.get('storage', {});
    files = storage.get('files', []);
    files.append({'path': '/etc/hostname', 'mode': 420, 'contents': {'source': 'data:text/plain;charset=utf-8;base64,' + base64.standard_b64encode(b'$MASTER_HOSTNAME').decode().strip(), 'verification': {}}, 'filesystem': 'root'});
    storage['files'] = files;
    ignition['storage'] = storage
    json.dump(ignition, sys.stdout)" <master.ign >"$INFRA_ID-master-$index-ignition.json"
    done
    Copy to Clipboard Toggle word wrap

    您现在有三个 control plane Ignition 文件:& lt;INFRA_ID>-master-0-ignition.json<INFRA_ID>-master-1-ignition.json<INFRA_ID>-master-2-ignition.json

6.18. 在 RHOSP 上创建网络资源

在您自己的基础架构的 Red Hat OpenStack Platform(RHOSP)安装上创建 OpenShift Container Platform 所需的网络资源。为节省时间,请运行提供的 Ansible playbook,以生成安全组、网络、子网、路由器和端口。

先决条件

  • Python 3 已安装在您的机器上。
  • 下载了"下载 playbook 依赖项"中的模块。
  • 下载了"下载安装 playbook"中的 playbook。

流程

  1. 可选:在 inventory.yaml playbook 中添加外部网络值:

    inventory.yaml Ansible playbook 中的外部网络值示例

    ...
          # The public network providing connectivity to the cluster. If not
          # provided, the cluster external connectivity must be provided in another
          # way.
    
          # Required for os_api_fip, os_ingress_fip, os_bootstrap_fip.
          os_external_network: 'external'
    ...
    Copy to Clipboard Toggle word wrap

    重要

    如果您没有在 inventory.yaml 文件中提供 for os_external_network 值,您必须确保虚拟机可以自行访问 Glance 和外部连接。

  2. 可选:将外部网络和浮动 IP(FIP)地址值添加到 inventory.yaml playbook 中:

    inventory.yaml Ansible playbook 中的 FIP 值示例

    ...
          # OpenShift API floating IP address. If this value is non-empty, the
          # corresponding floating IP will be attached to the Control Plane to
          # serve the OpenShift API.
          os_api_fip: '203.0.113.23'
    
          # OpenShift Ingress floating IP address. If this value is non-empty, the
          # corresponding floating IP will be attached to the worker nodes to serve
          # the applications.
          os_ingress_fip: '203.0.113.19'
    
          # If this value is non-empty, the corresponding floating IP will be
          # attached to the bootstrap machine. This is needed for collecting logs
          # in case of install failure.
          os_bootstrap_fip: '203.0.113.20'
    Copy to Clipboard Toggle word wrap

    重要

    如果没有为 os_api_fipos_ingress_fip 定义值,则必须执行安装后网络配置。

    如果您没有定义 for os_bootstrap_fip 值,安装程序将无法从失败的安装中下载调试信息。

    如需更多信息,请参阅"启用对环境的访问"。

  3. 在命令行中,通过运行 security-groups.yaml playbook 来创建安全组:

    $ ansible-playbook -i inventory.yaml security-groups.yaml
    Copy to Clipboard Toggle word wrap
  4. 在命令行中,通过运行 network.yaml playbook 来创建一个网络、子网和路由器:

    $ ansible-playbook -i inventory.yaml network.yaml
    Copy to Clipboard Toggle word wrap
  5. 可选:如果要控制 Nova 服务器使用的默认解析程序,请运行 RHOSP CLI 命令:

    $ openstack subnet set --dns-nameserver <server_1> --dns-nameserver <server_2> "$INFRA_ID-nodes"
    Copy to Clipboard Toggle word wrap

6.19. 在 RHOSP 上创建 bootstrap 机器

创建 bootstrap 机器,为其提供在 Red Hat OpenStack Platform(RHOSP)上运行所需的网络访问权限。红帽提供了一个 Ansible playbook,您可以运行它来简化此过程。

先决条件

  • 下载了"下载 playbook 依赖项"中的模块。
  • 下载了"下载安装 playbook"中的 playbook。
  • inventory.yamlcommon.yamlbootstrap.yaml Ansible playbook 位于一个通用目录中。
  • 安装程序创建的 metadata.json 文件与 Ansible playbook 位于同一个目录中。

流程

  1. 在命令行中,将工作目录更改为 playbook 的位置。
  2. 在命令行中运行 bootstrap.yaml playbook:

    $ ansible-playbook -i inventory.yaml bootstrap.yaml
    Copy to Clipboard Toggle word wrap
  3. bootstrap 服务器活跃后,查看日志以验证是否收到 Ignition 文件:

    $ openstack console log show "$INFRA_ID-bootstrap"
    Copy to Clipboard Toggle word wrap

6.20. 在 RHOSP 上创建 control plane 机器

使用您生成的 Ignition 配置文件创建三台 control plane 机器。红帽提供了一个 Ansible playbook,您可以运行它来简化此过程。

先决条件

  • 下载了"下载 playbook 依赖项"中的模块。
  • 下载了"下载安装 playbook"中的 playbook。
  • 来自安装程序元数据文件中的基础架构 ID 被设置为环境变量($INFRA_ID)。
  • inventory.yamlcommon.yamlcontrol-plane.yaml Ansible playbook 位于一个通用目录中。
  • 您有三个在"Creating control plane Ignition 配置文件"中创建的 Ignition 文件。

流程

  1. 在命令行中,将工作目录更改为 playbook 的位置。
  2. 如果 control plane Ignition 配置文件尚未位于工作目录中,请将它们复制到其中。
  3. 在命令行中运行 control-plane.yaml playbook:

    $ ansible-playbook -i inventory.yaml control-plane.yaml
    Copy to Clipboard Toggle word wrap
  4. 运行以下命令来监控 bootstrap 过程:

    $ openshift-install wait-for bootstrap-complete
    Copy to Clipboard Toggle word wrap

    您将看到确认 control plane 机器正在运行并加入集群的信息:

    INFO API v1.26.0 up
    INFO Waiting up to 30m0s for bootstrapping to complete...
    ...
    INFO It is now safe to remove the bootstrap resources
    Copy to Clipboard Toggle word wrap

6.21. 使用 CLI 登录集群

您可以通过导出集群 kubeconfig 文件,以默认系统用户身份登录集群。kubeconfig 文件包含有关集群的信息,供 CLI 用于将客户端连接到正确的集群和 API 服务器。该文件特定于集群,在 OpenShift Container Platform 安装过程中创建。

先决条件

  • 已部署 OpenShift Container Platform 集群。
  • 已安装 oc CLI。

流程

  1. 导出 kubeadmin 凭证:

    $ export KUBECONFIG=<installation_directory>/auth/kubeconfig 
    1
    Copy to Clipboard Toggle word wrap
    1
    对于 <installation_directory>,请指定安装文件保存到的目录的路径。
  2. 验证您可以使用导出的配置成功运行 oc 命令:

    $ oc whoami
    Copy to Clipboard Toggle word wrap

    输出示例

    system:admin
    Copy to Clipboard Toggle word wrap

6.22. 从 RHOSP 删除 bootstrap 资源

删除您不再需要的 bootstrap 资源。

先决条件

  • 下载了"下载 playbook 依赖项"中的模块。
  • 下载了"下载安装 playbook"中的 playbook。
  • inventory.yamlcommon.yamldown-bootstrap.yaml Ansible playbook 位于一个通用目录中。
  • control plane 机器正在运行。

    • 如果您不知道机器的状态,请参阅"验证集群状态"。

流程

  1. 在命令行中,将工作目录更改为 playbook 的位置。
  2. 在命令行中运行 down-bootstrap.yaml playbook:

    $ ansible-playbook -i inventory.yaml down-bootstrap.yaml
    Copy to Clipboard Toggle word wrap

bootstrap 端口、服务器和浮动 IP 地址会被删除。

警告

如果您之前没有禁用 bootstrap Ignition 文件 URL,现在需要禁用。

6.23. 在 RHOSP 上创建计算机器

启动 control plane 后,创建计算机器。红帽提供了一个 Ansible playbook,您可以运行它来简化此过程。

先决条件

  • 下载了"下载 playbook 依赖项"中的模块。
  • 下载了"下载安装 playbook"中的 playbook。
  • inventory.yamlcommon.yamlcompute-nodes.yaml Ansible playbook 位于一个通用目录中。
  • 安装程序创建的 metadata.json 文件与 Ansible playbook 位于同一个目录中。
  • control plane 处于活跃状态。

流程

  1. 在命令行中,将工作目录更改为 playbook 的位置。
  2. 在命令行中运行 playbook:

    $ ansible-playbook -i inventory.yaml compute-nodes.yaml
    Copy to Clipboard Toggle word wrap

后续步骤

  • 批准机器的证书签名请求。

6.24. 批准机器的证书签名请求

当您将机器添加到集群时,会为您添加的每台机器生成两个待处理证书签名请求(CSR)。您必须确认这些 CSR 已获得批准,或根据需要自行批准。必须首先批准客户端请求,然后批准服务器请求。

先决条件

  • 您已将机器添加到集群中。

流程

  1. 确认集群可以识别这些机器:

    $ oc get nodes
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME      STATUS    ROLES   AGE  VERSION
    master-0  Ready     master  63m  v1.26.0
    master-1  Ready     master  63m  v1.26.0
    master-2  Ready     master  64m  v1.26.0
    Copy to Clipboard Toggle word wrap

    输出中列出了您创建的所有机器。

    注意

    在有些 CSR 被批准前,前面的输出可能不包括计算节点(也称为 worker 节点)。

  2. 检查待处理的 CSR,并确保添加到集群中的每台机器都有 PendingApproved 状态的客户端请求:

    $ oc get csr
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME        AGE     REQUESTOR                                                                   CONDITION
    csr-8b2br   15m     system:serviceaccount:openshift-machine-config-operator:node-bootstrapper   Pending
    csr-8vnps   15m     system:serviceaccount:openshift-machine-config-operator:node-bootstrapper   Pending
    ...
    Copy to Clipboard Toggle word wrap

    在本例中,两台机器加入集群。您可能会在列表中看到更多已批准的 CSR。

  3. 如果 CSR 没有获得批准,在您添加的机器的所有待处理 CSR 都处于 Pending 状态 后,请批准集群机器的 CSR:

    注意

    由于 CSR 会自动轮转,因此请在将机器添加到集群后一小时内批准您的 CSR。如果没有在一小时内批准它们,证书将会轮转,每个节点会存在多个证书。您必须批准所有这些证书。批准客户端 CSR 后,Kubelet 为服务证书创建一个二级 CSR,这需要手动批准。然后,如果 Kubelet 请求具有相同参数的新证书,则后续提供证书续订请求由 machine-approver 自动批准。

    注意

    对于在未启用机器 API 的平台上运行的集群,如裸机和其他用户置备的基础架构,您必须实施一种方法来自动批准 kubelet 提供证书请求(CSR)。如果没有批准请求,则 oc exec、ocrshoc logs 命令将无法成功,因为 API 服务器连接到 kubelet 时需要服务证书。与 Kubelet 端点联系的任何操作都需要此证书批准。该方法必须监视新的 CSR,确认 CSR 由 system: nodesystem:admin 组中的 node-bootstrapper 服务帐户提交,并确认节点的身份。

    • 要单独批准,请对每个有效的 CSR 运行以下命令:

      $ oc adm certificate approve <csr_name> 
      1
      Copy to Clipboard Toggle word wrap
      1
      <csr_name> 是当前 CSR 列表中 CSR 的名称。
    • 要批准所有待处理的 CSR,请运行以下命令:

      $ oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs --no-run-if-empty oc adm certificate approve
      Copy to Clipboard Toggle word wrap
      注意

      在有些 CSR 被批准前,一些 Operator 可能无法使用。

  4. 现在,您的客户端请求已被批准,您必须查看添加到集群中的每台机器的服务器请求:

    $ oc get csr
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME        AGE     REQUESTOR                                                                   CONDITION
    csr-bfd72   5m26s   system:node:ip-10-0-50-126.us-east-2.compute.internal                       Pending
    csr-c57lv   5m26s   system:node:ip-10-0-95-157.us-east-2.compute.internal                       Pending
    ...
    Copy to Clipboard Toggle word wrap

  5. 如果剩余的 CSR 没有被批准,且处于 Pending 状态,请批准集群机器的 CSR:

    • 要单独批准,请对每个有效的 CSR 运行以下命令:

      $ oc adm certificate approve <csr_name> 
      1
      Copy to Clipboard Toggle word wrap
      1
      <csr_name> 是当前 CSR 列表中 CSR 的名称。
    • 要批准所有待处理的 CSR,请运行以下命令:

      $ oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs oc adm certificate approve
      Copy to Clipboard Toggle word wrap
  6. 批准所有客户端和服务器 CSR 后,机器将 处于 Ready 状态。运行以下命令验证:

    $ oc get nodes
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME      STATUS    ROLES   AGE  VERSION
    master-0  Ready     master  73m  v1.26.0
    master-1  Ready     master  73m  v1.26.0
    master-2  Ready     master  74m  v1.26.0
    worker-0  Ready     worker  11m  v1.26.0
    worker-1  Ready     worker  11m  v1.26.0
    Copy to Clipboard Toggle word wrap

    注意

    批准服务器 CSR 后可能需要几分钟时间让机器过渡到 Ready 状态

其他信息

6.25. 验证安装是否成功

验证 OpenShift Container Platform 安装已经完成。

先决条件

  • 有安装程序(openshift-install)

流程

  • 在命令行中输入:

    $ openshift-install --log-level debug wait-for install-complete
    Copy to Clipboard Toggle word wrap

程序输出控制台 URL,以及管理员的登录信息。

6.26. 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 订阅。

6.27. 后续步骤

第 7 章 在受限网络中的 OpenStack 上安装集群

在 OpenShift Container Platform 4.13 中,您可以通过创建安装发行内容的内部镜像在受限网络中的 Red Hat OpenStack Platform(RHOSP)上安装集群。

7.1. 先决条件

7.2. 关于在受限网络中安装

在 OpenShift Container Platform 4.13 中,可以执行不需要有效的互联网连接来获取软件组件的安装。受限网络安装可以使用安装程序置备的基础架构或用户置备的基础架构完成,具体取决于您要安装集群的云平台。

如果您选择在云平台中执行受限网络安装,您仍需要访问其云 API。有些云功能,比如 Amazon Web Service 的 Route 53 DNS 和 IAM 服务,需要访问互联网。根据您的网络,在裸机硬件、Nutanix 或 VMware vSphere 上安装可能需要较少的互联网访问。

要完成受限网络安装,您必须创建一个 registry,以镜像 OpenShift 镜像 registry 的内容并包含安装介质。您可以在镜像主机上创建此 registry,该主机可同时访问互联网和您的封闭网络,也可以使用满足您的限制条件的其他方法。

7.2.1. 其他限制

受限网络中的集群有以下额外限制和限制:

  • ClusterVersion 状态包含一个 Unable to retrieve available updates 错误。
  • 默认情况下,您无法使用 Developer Catalog 的内容,因为您无法访问所需的镜像流标签。

为支持 OpenShift Container Platform 安装,您的 Red Hat OpenStack Platform(RHOSP)配额必须满足以下要求:

Expand
表 7.1. RHOSP 上默认 OpenShift Container Platform 集群的建议资源
resourcevalue

浮动 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 机器。

7.3.1. control plane 机器

默认情况下,OpenShift Container Platform 安装过程会创建三台 control plane 机器。

每台机器都需要:

  • 来自 RHOSP 配额的实例
  • 来自 RHOSP 配额的端口
  • 至少有 16 GB 内存和 4 个 vCPU 的类别
  • RHOSP 配额中至少有 100 GB 存储空间

7.3.2. 计算机器

默认情况下,OpenShift Container Platform 安装过程会创建三台计算机器。

每台机器都需要:

  • 来自 RHOSP 配额的实例
  • 来自 RHOSP 配额的端口
  • 至少有 8 GB 内存和 2 个 vCPU 的类别
  • RHOSP 配额中至少有 100 GB 存储空间
提示

计算机器托管您在 OpenShift Container Platform 上运行的应用程序;运行数量应尽可能多。

7.3.3. bootstrap 机器

在安装过程中,会临时置备 bootstrap 机器来支持 control plane。生产 control plane 就绪后,bootstrap 机器会被取消置备。

bootstrap 机器需要:

  • 来自 RHOSP 配额的实例
  • 来自 RHOSP 配额的端口
  • 至少有 16 GB 内存和 4 个 vCPU 的类别
  • RHOSP 配额中至少有 100 GB 存储空间

7.4. OpenShift Container Platform 互联网访问

在 OpenShift Container Platform 4.13 中,您需要访问互联网来获得用来安装集群的镜像。

您必须具有以下互联网访问权限:

  • 访问 OpenShift Cluster Manager Hybrid Cloud Console 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
  • 访问 Quay.io,以获取安装集群所需的软件包。
  • 获取执行集群更新所需的软件包。

7.5. 在 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:

  1. 在 RHOSP CLI 中以管理员身份,将 swiftoperator 角色添加到将要访问 Swift 的帐户中:

    $ openstack role add --user <user> --project <project> swiftoperator
    Copy to Clipboard Toggle word wrap

您的 RHOSP 部署现在可以将 Swift 用于镜像 registry。

7.6. 为安装程序定义参数

OpenShift Container Platform 安装程序依赖于一个名为 clouds.yaml 的文件。该文件描述了 Red Hat OpenStack Platform(RHOSP)配置参数,包括项目名称、登录信息和授权服务 URL。

流程

  1. 创建 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'
      Copy to Clipboard Toggle word wrap
  2. 如果您的 RHOSP 安装使用自签名证书颁发机构(CA)证书进行端点身份验证:

    1. 将证书颁发机构文件复制到您的机器中。
    2. cacerts 键添加到 clouds.yaml 文件。该值必须是到 CA 证书的绝对、不可 root 访问的路径:

      clouds:
        shiftstack:
          ...
          cacert: "/etc/pki/ca-trust/source/anchors/ca.crt.pem"
      Copy to Clipboard Toggle word wrap
      提示

      使用自定义 CA 证书运行安装程序后,您可以通过编辑 cloud-provider-config keymap 中的 ca-cert.pem 键的值来更新证书。在命令行中运行:

      $ oc edit configmap -n openshift-config cloud-provider-config
      Copy to Clipboard Toggle word wrap
  3. clouds.yaml 文件放在以下位置之一:

    1. OS_CLIENT_CONFIG_FILE 环境变量的值
    2. 当前目录
    3. 特定于 Unix 的用户配置目录,如 ~/.config/openstack/clouds.yaml
    4. 特定于 Unix 的站点配置目录,如 /etc/openstack/clouds.yaml

      安装程序会按顺序搜索 clouds.yaml

7.6.1. 使用故障域的安装配置示例

重要

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
# ...
Copy to Clipboard Toggle word wrap

7.7. 设置 OpenStack Cloud Controller Manager 选项

另外,您可以编辑集群的 OpenStack Cloud Controller Manager (CCM) 配置。此配置控制 OpenShift Container Platform 与 Red Hat OpenStack Platform (RHOSP) 的交互方式。

有关配置参数的完整列表,请参阅"安装 OpenStack"文档中的"OpenStack Cloud Controller Manager 参考指南"页面。

流程

  1. 如果您还没有为集群生成清单文件,请运行以下命令生成这些文件:

    $ openshift-install --dir <destination_directory> create manifests
    Copy to Clipboard Toggle word wrap
  2. 在文本编辑器中,打开 cloud-provider 配置清单文件。例如:

    $ vi openshift/manifests/cloud-provider-config.yaml
    Copy to Clipboard Toggle word wrap
  3. 根据 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
    
    #...
    Copy to Clipboard Toggle word wrap
    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 负载均衡。

  4. 保存对文件的更改并开始安装。

    提示

    您可以在运行安装程序后更新云供应商配置。在命令行中运行:

    $ oc edit configmap -n openshift-config cloud-provider-config
    Copy to Clipboard Toggle word wrap

    保存更改后,您的集群将需要一些时间重新配置其自身。如果您的任一节点都没有 SchedulingDisabled 状态,则此过程已完成。

7.8. 为受限网络安装创建 RHCOS 镜像

下载 Red Hat Enterprise Linux CoreOS(RHCOS)镜像,以在受限网络 Red Hat OpenStack Platform(RHOSP)环境中安装 OpenShift Container Platform。

先决条件

  • 获取 OpenShift Container Platform 安装程序。对于受限网络安装,该程序位于您的镜像 registry 主机上。

流程

  1. 登录到红帽客户门户网站的产品 下载页面
  2. Version 下,为 RHEL 8 选择 OpenShift Container Platform 4.13 的最新发行版本。

    重要

    RHCOS 镜像可能不会随着 OpenShift Container Platform 的每个发行版本而改变。您必须下载最高版本的镜像,其版本号应小于或等于您安装的 OpenShift Container Platform 版本。如果可用,请使用与 OpenShift Container Platform 版本匹配的镜像版本。

  3. 下载 Red Hat Enterprise Linux CoreOS(RHCOS)- OpenStack Image(QCOW) 镜像。
  4. 解压缩镜像。

    注意

    您必须解压镜像,然后集群才能使用它。下载的文件的名称可能不包含压缩扩展名,如 .gz 或. tgz。要查找是否或者如何压缩文件,请在命令行中输入:

    $ file <name_of_downloaded_file>
    Copy to Clipboard Toggle word wrap
  5. 将您解压缩的镜像上传到堡垒服务器可访问的位置,如 Glance。例如:

    $ openstack image create --file rhcos-44.81.202003110027-0-openstack.x86_64.qcow2 --disk-format qcow2 rhcos-${RHCOS_VERSION}
    Copy to Clipboard Toggle word wrap
    重要

    根据您的 RHOSP 环境,您可能能够以. raw.qcow2 格式 上传镜像。如果使用 Ceph,则必须使用 .raw 格式。

    警告

    如果安装程序发现多个同名的镜像,它会随机选择其中之一。为避免这种行为,请在 RHOSP 中为资源创建唯一名称。

该镜像现在可用于受限安装。记录 OpenShift Container Platform 部署中使用的镜像名称或位置。

7.9. 创建安装配置文件

您可以自定义在 Red Hat OpenStack Platform(RHOSP)上安装的 OpenShift Container Platform 集群。

先决条件

  • 获取 OpenShift Container Platform 安装程序和集群的 pull secret。对于受限网络安装,这些文件位于您的镜像主机上。
  • 具有创建镜像 registry 时生成的 imageContentSources 值。
  • 获取您的镜像 registry 的证书内容。
  • 检索 Red Hat Enterprise Linux CoreOS(RHCOS)镜像,并将其上传到可访问的位置。
  • 在订阅级别获取服务主体权限。

流程

  1. 创建 install-config.yaml 文件。

    1. 进入包含安装程序的目录并运行以下命令:

      $ ./openshift-install create install-config --dir <installation_directory> 
      1
      Copy to Clipboard Toggle word wrap
      1
      对于 <installation_directory>,请指定要存储安装程序创建的文件的目录名称。

      在指定目录时:

      • 验证该目录是否具有执行权限。在安装目录中运行 Terraform 二进制文件需要这个权限。
      • 使用空目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。

        注意

        始终删除 ~/.powervs 目录,以避免重复使用过时的配置。运行以下命令:

        $ rm -rf ~/.powervs
        Copy to Clipboard Toggle word wrap
    2. 在提示符处,提供云的配置详情:

      1. 可选: 选择用于访问集群机器的 SSH 密钥。

        注意

        对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定 ssh-agent 进程使用的 SSH 密钥。

      2. 选择 openstack 作为目标平台。
      3. 指定用于安装集群的 Red Hat OpenStack Platform(RHOSP)外部网络名称。
      4. 指定用于从外部访问 OpenShift API 的浮动 IP 地址。
      5. 指定至少有 16 GB RAM 用于 control plane 节点,以及计算节点的 8 GB RAM。
      6. 选择集群要部署到的基域。所有 DNS 记录都将是这个基域的子域,并且还包括集群名称。
      7. 为集群输入一个名称。名称长度必须为 14 个或更少字符。
      8. 粘贴 Red Hat OpenShift Cluster Manager 中的 pull secret
  2. install-config.yaml 文件中,将 platform.openstack.clusterOSImage 的值设置为镜像位置或名称。例如:

    platform:
      openstack:
          clusterOSImage: http://mirror.example.com/images/rhcos-43.81.201912131630.0-openstack.x86_64.qcow2.gz?sha256=ffebbd68e8a1f2a245ca19522c16c86f67f9ac8e4e0c1f0a812b068b16f7265d
    Copy to Clipboard Toggle word wrap
  3. 编辑 install-config.yaml 文件,以提供在受限网络中安装所需的额外信息。

    1. 更新 pullSecret 值,使其包含 registry 的身份验证信息:

      pullSecret: '{"auths":{"<mirror_host_name>:5000": {"auth": "<credentials>","email": "you@example.com"}}}'
      Copy to Clipboard Toggle word wrap

      对于 <mirror_host_name>,请指定 您在镜像 registry 证书中指定的 registry 域名 ;对于 <credentials>, 请指定您的镜像 registry 的 base64 编码用户名和密码。

    2. 添加 additionalTrustBundle 参数和值。

      additionalTrustBundle: |
        -----BEGIN CERTIFICATE-----
        ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
        -----END CERTIFICATE-----
      Copy to Clipboard Toggle word wrap

      该值必须是您用于镜像 registry 的证书文件内容。证书文件可以是现有的可信证书颁发机构,也可以是您为镜像 registry 生成的自签名证书。

    3. 添加镜像内容资源,类似于以下 YAML 摘录:

      imageContentSources:
      - mirrors:
        - <mirror_host_name>:5000/<repo_name>/release
        source: quay.io/openshift-release-dev/ocp-release
      - mirrors:
        - <mirror_host_name>:5000/<repo_name>/release
        source: registry.redhat.io/ocp/release
      Copy to Clipboard Toggle word wrap

      对于这些值,请使用您在创建镜像 registry 时记录的 imageContentSources

  4. 对您需要的 install-config.yaml 文件进行任何其他修改。您可以在 安装配置参数部分找到有关可用参数 的更多信息。
  5. 备份 install-config.yaml 文件,以便您可以使用它安装多个集群。

    重要

    install-config.yaml 文件会在安装过程中消耗掉。如果要重复使用该文件,您必须立即备份该文件。

7.9.1. 在安装过程中配置集群范围的代理

生产环境可能会拒绝直接访问互联网,而是提供 HTTP 或 HTTPS 代理。您可以通过在 install-config.yaml 文件中配置代理设置,将新的 OpenShift Container Platform 集群配置为使用代理。

注意

Kuryr 安装默认为 HTTP 代理。

先决条件

  • 对于在使用 Proxy 对象的受限网络中的 Kuryr 安装,代理必须能够响应集群使用的路由器。要为代理配置添加静态路由,以 root 用户身份从命令行输入:

    $ ip route add <cluster_network_cidr> via <installer_subnet_gateway>
    Copy to Clipboard Toggle word wrap
  • 受限子网必须具有定义网关,并可用于链接到 Kuryr 创建的 Router 资源。
  • 您有一个现有的 install-config.yaml 文件。
  • 您检查了集群需要访问的站点,并确定它们中的任何站点是否需要绕过代理。默认情况下,所有集群出口流量都经过代理,包括对托管云供应商 API 的调用。如果需要,您将在 Proxy 对象的 spec.noProxy 字段中添加站点来绕过代理。

    注意

    Proxy 对象 status.noProxy 字段使用安装配置中的 networking.machineNetwork[].cidrnetworking.clusterNetwork[].cidrnetworking.serviceNetwork[] 字段的值填充。

    对于在 Amazon Web Services(AWS)、Google Cloud Platform(GCP)、Microsoft Azure 和 Red Hat OpenStack Platform(RHOSP)上安装,Proxy 对象 status.noProxy 字段也会使用实例元数据端点填充(169.254.169.254)。

流程

  1. 编辑 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
    Copy to Clipboard Toggle word wrap
    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 配置映射的策略。允许的值是 ProxyonlyAlways。仅在配置了 http/https 代理时,使用 Proxyonly 引用 user-ca-bundle 配置映射。使用 Always 始终引用 user-ca-bundle 配置映射。默认值为 Proxyonly
    注意

    安装程序不支持代理的 readinessEndpoints 字段。

    注意

    如果安装程序超时,重启并使用安装程序的 wait-for 命令完成部署。例如:

    $ ./openshift-install wait-for install-complete --log-level debug
    Copy to Clipboard Toggle word wrap
  2. 保存该文件并在安装 OpenShift Container Platform 时引用。

安装程序会创建一个名为 cluster 的集群范围代理,该代理 使用 提供的 install-config.yaml 文件中的代理设置。如果没有提供代理设置,仍然会创建一个 cluster Proxy 对象,但它会有一个空 spec

注意

只支持名为 clusterProxy 对象,且无法创建额外的代理。

7.9.2. 安装配置参数

在部署 OpenShift Container Platform 集群前,您可以提供参数值来描述托管集群的云平台中的帐户,并选择性地自定义集群平台。在创建 install-config.yaml 安装配置文件时,您可以通过命令行为所需参数提供值。如果自定义集群,您可以修改 install-config.yaml 文件以提供有关平台的更多详情。

重要

安装后,您无法更改 install-config.yaml 文件中的这些参数。

7.9.2.1. 所需的配置参数

下表描述了所需的安装配置参数:

Expand
表 7.2. 所需的参数
参数描述

apiVersion

install-config.yaml 内容的 API 版本。当前版本为 v1。安装程序可能还支持旧的 API 版本。

字符串

baseDomain

云供应商的基域。基域用于创建到 OpenShift Container Platform 集群组件的路由。集群的完整 DNS 名称是 baseDomainmetadata.name 参数值的组合,其格式为 <metadata.name>.<baseDomain>

完全限定域名或子域名,如 example.com

metadata

Kubernetes 资源 ObjectMeta,其中只消耗 name 参数。

对象

metadata.name

集群的名称。集群的 DNS 记录是 {{.metadata.name}}.{{.baseDomain}} 的子域。

小写字母、连字符(-)和句点(.)字符串,如 dev。字符串长度必须为 14 个字符或更少。

platform

要执行安装的具体平台配置: alibabacloudawsbaremetalazuregcpibmcloudnutanixopenstackovirtpowervsvsphere{}。有关 platform.<platform> 参数的更多信息,请参考下表中您的特定平台。

对象

pullSecret

从 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"
      }
   }
}
Copy to Clipboard Toggle word wrap
7.9.2.2. 网络配置参数

您可以根据现有网络基础架构的要求自定义安装配置。例如,您可以扩展集群网络的 IP 地址块,或者提供不同于默认值的不同 IP 地址块。

仅支持 IPv4 地址。

注意

Red Hat OpenShift Data Foundation 灾难恢复解决方案不支持 Globalnet。对于区域灾难恢复场景,请确保为每个集群中的集群和服务网络使用非重叠的专用 IP 地址。

Expand
表 7.3. 网络参数
参数描述

networking

集群网络的配置。

对象

注意

您不能在安装后更改 networking 对象指定的参数。

networking.networkType

要安装的 Red Hat OpenShift Networking 网络插件。

OpenShiftSDNOVNKubernetesOpenShiftSDN 是 all-Linux 网络的 Container Network Interface (CNI)插件。OVNKubernetes 是 Linux 网络和包含 Linux 和 Windows 服务器的混合网络的 CNI 插件。默认值为 OVNKubernetes

networking.clusterNetwork

pod 的 IP 地址块。

默认值为 10.128.0.0/14,主机前缀为 /23

如果您指定了多个 IP 地址块,块不得重叠。

对象数组。例如:

networking:
  clusterNetwork:
  - cidr: 10.128.0.0/14
    hostPrefix: 23
Copy to Clipboard Toggle word wrap

networking.clusterNetwork.cidr

使用 networking.clusterNetwork 时需要此项。IP 地址块。

IPv4 网络。

无类别域间路由(CIDR)表示法中的 IP 地址块。IPv4 块的前缀长度介于 0 到 32 之间

networking.clusterNetwork.hostPrefix

分配给每个节点的子网前缀长度。例如,如果 hostPrefix 设为 23,则每个节点从 given cidr 中分配 a /23 子网。hostPrefix23 提供 510(2^(32 - 23)- 2)pod IP 地址。

子网前缀。

默认值为 23

networking.serviceNetwork

服务的 IP 地址块。默认值为 172.30.0.0/16

OpenShift SDN 和 OVN-Kubernetes 网络插件只支持服务网络的一个 IP 地址块。

CIDR 格式具有 IP 地址块的数组。例如:

networking:
  serviceNetwork:
   - 172.30.0.0/16
Copy to Clipboard Toggle word wrap

networking.machineNetwork

机器的 IP 地址块。

如果您指定了多个 IP 地址块,块不得重叠。

对象数组。例如:

networking:
  machineNetwork:
  - cidr: 10.0.0.0/16
Copy to Clipboard Toggle word wrap

networking.machineNetwork.cidr

使用 networking.machineNetwork 时需要此项。IP 地址块。libvirt 和 IBM Power Virtual Server 以外的所有平台的默认值为 10.0.0.0/16。对于 libvirt,默认值 为 192.168.126.0/24。对于 IBM Power Virtual Server,默认值为 192.168.0.0/24

CIDR 表示法中的 IP 网络块。

例如: 10.0.0.0/16

注意

networking.machineNetwork 设置为与首选 NIC 所在的 CIDR 匹配。

7.9.2.3. 可选的配置参数

下表描述了可选的安装配置参数:

Expand
表 7.4. 可选参数
参数描述

additionalTrustBundle

添加到节点可信证书存储中的 PEM 编码 X.509 证书捆绑包。配置代理时,也可以使用此信任捆绑包。

字符串

功能

控制可选核心组件的安装。您可以通过禁用可选组件来减少 OpenShift Container Platform 集群的空间。如需更多信息,请参阅安装中的"集群功能"页面。

字符串数组

capabilities.baselineCapabilitySet

选择要启用的一组初始可选功能。有效值为 Nonev4.11v4.12vCurrent。默认值为 vCurrent

字符串

capabilities.additionalEnabledCapabilities

将可选功能集合扩展到您在 baselineCapabilitySet 中指定的范围。您可以在此参数中指定多个功能。

字符串数组

cpuPartitioningMode

启用工作负载分区,它会隔离 OpenShift Container Platform 服务、集群管理工作负载和基础架构 pod,以便在保留的一组 CPU 上运行。您只能在安装过程中启用工作负载分区。您不能在安装后禁用它。虽然此字段启用工作负载分区,但它不会将工作负载配置为使用特定的 CPU。如需更多信息,请参阅 Scalability and Performance 部分中的 Workload partitioning 页面。

NoneAllNodes.None 是默认值。

Compute

组成计算节点的机器的配置。

MachinePool 对象的数组。

compute.architecture

决定池中机器的指令集合架构。目前,不支持具有不同架构的集群。所有池都必须指定相同的架构。有效值为默认值: amd64

字符串

compute: 超线程:

是否在计算机器上启用或禁用并发多 线程或超线程。默认情况下,启用并发多线程以提高机器内核的性能。

重要

如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。

enabledDisabled

compute.name

使用 compute 时需要此项。机器池的名称。

worker

compute.platform

使用 compute 时需要此项。使用此参数指定托管 worker 机器的云供应商。此参数值必须与 controlPlane.platform 参数值匹配。

alibabacloud,aws,azure,gcp,ibmcloud,nutanix,openstack,ovirt,powervs,vsphere, 或 {}

compute.replicas

要置备的计算机器数量,也称为 worker 机器。

大于或等于 2 的正整数。默认值为 3

featureSet

为功能集启用集群。功能集是 OpenShift Container Platform 功能的集合,默认情况下不启用。有关在安装过程中启用功能集的更多信息,请参阅"使用功能门启用功能"。

字符串.要启用的功能集的名称,如 TechPreviewNoUpgrade

controlPlane

组成 control plane 的机器的配置。

MachinePool 对象的数组。

controlPlane.architecture

决定池中机器的指令集合架构。目前,不支持具有不同架构的集群。所有池都必须指定相同的架构。有效值为默认值: amd64

字符串

controlPlane: 超线程:

是否在 control plane 机器上启用或禁用并发多 线程或超线程。默认情况下,启用并发多线程以提高机器内核的性能。

重要

如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。

enabledDisabled

controlPlane.name

使用 controlPlane 时需要此项。机器池的名称。

master

controlPlane.platform

使用 controlPlane 时需要此项。使用此参数指定托管 control plane 机器的云供应商。此参数值必须与 compute.platform 参数值匹配。

alibabacloud,aws,azure,gcp,ibmcloud,nutanix,openstack,ovirt,powervs,vsphere, 或 {}

controlPlane.replicas

要置备的 control plane 机器数量。

唯一支持的值是 3,这是默认值。

credentialsMode

Cloud Credential Operator(CCO)模式。在没有指定模式时,CCO 会动态尝试决定提供的凭证的功能,在支持多个模式的平台上首选 mint 模式。

注意

不是所有 CCO 模式都支持所有云供应商。如需有关 CCO 模式的更多信息,请参阅集群 Operator 参考内容中的 Cloud Credential Operator 条目。

注意

如果您的 AWS 帐户启用了服务控制策略 (SCP),您必须将 credentialsMode 参数配置为 MintPassthroughManual

MintPassthroughManual 或空字符串("")。

imageContentSources

release-image 内容的源和存储库。

对象数组。包括一个 source 以及可选的 mirrors,如本表的以下行所述。

imageContentSources.source

使用 imageContentSources 时需要此项。指定用户在镜像拉取规格中引用的存储库。

字符串

imageContentSources.mirrors

指定可能还包含同一镜像的一个或多个存储库。

字符串数组

publish

如何发布或公开集群的面向用户的端点,如 Kubernetes API、OpenShift 路由。

内部或外部 .默认值为 External

在非云平台上不支持将此字段设置为 Internal

重要

如果字段的值设为 Internal,集群就会变得无法正常工作。如需更多信息,请参阅 BZ#1953035

sshKey

用于验证对集群机器的访问的 SSH 密钥。

注意

对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定 ssh-agent 进程使用的 SSH 密钥。

例如,sshKey: ssh-ed25519 AAAA..

  1. 不是所有 CCO 模式都支持所有云供应商。有关 CCO 模式的更多信息,请参阅身份验证和授权内容中的"管理云供应商凭证"条目。

下表中描述了其他 RHOSP 配置参数:

Expand
表 7.5. 其他 RHOSP 参数
参数描述

compute.platform.openstack.rootVolume.size

对于计算机器,以 GB 为单位的根卷大小。如果没有设置这个值,机器将使用临时存储。

整数,如 30

compute.platform.openstack.rootVolume.type

对于计算机器,根卷的类型。

字符串,如 performance

controlPlane.platform.openstack.rootVolume.size

对于 control plane 机器,以 GB 为单位表示的根卷大小。如果没有设置这个值,机器将使用临时存储。

整数,如 30

controlPlane.platform.openstack.rootVolume.type

对于 control plane 机器,根卷的类型。

字符串,如 performance

platform.openstack.cloud

要使用的 RHOSP 云名称,来自于 clouds.yaml 文件中的云列表。

字符串,如 MyCloud

platform.openstack.externalNetwork

用于安装的 RHOSP 外部网络名称。

字符串,如 external

platform.openstack.computeFlavor

用于 control plane 和计算机器的 RHOSP 类别。

此属性已弃用。要将 flavor 用作所有机器池的默认值,请将其添加为 platform.openstack.defaultMachinePlatform 属性中的 type 键的值。您还可以分别为每个机器池设置 flavor 值。

字符串,如 m1.xlarge

7.9.2.5. 可选的 RHOSP 配置参数

下表描述了可选的 RHOSP 配置参数:

Expand
表 7.6. 可选的 RHOSP 参数
参数描述

compute.platform.openstack.additionalNetworkIDs

与计算机器关联的其他网络。不为额外网络创建允许的地址对。

一个或多个 UUID 的列表作为字符串。例如: fa806b2f-ac49-4bce-b9db-124bc64209bf

compute.platform.openstack.additionalSecurityGroupIDs

与计算机器关联的其他安全组。

一个或多个 UUID 的列表作为字符串。例如,7ee219f3-d2e9-48a1-96c2-e7429f1b0da7

compute.platform.openstack.zones

RHOSP Compute(Nova)可用区(AZ)在其中安装机器。如果没有设置此参数,安装程序会依赖于配置了 RHOSP 管理员的 Nova 的默认设置。

在使用 Kuryr 的集群上,RHOSP Octavia 不支持可用区。负载均衡器,如果您使用 Amphora 供应商驱动程序,则依赖 Amphora 虚拟机的 OpenShift Container Platform 服务不会根据此属性的值创建。

字符串列表。例如: ["zone-1", "zone-2"]

compute.platform.openstack.rootVolume.zones

对于计算机器,可在其上安装根卷的可用性区域。如果没有为此参数设置值,安装程序会选择默认的可用性区域。

字符串列表,如 ["zone-1", "zone-2"]

compute.platform.openstack.serverGroupPolicy

要应用到池中包含计算机器的组策略。您不能在创建后更改服务器组策略或关系。支持的选项包括 anti-affinity, soft-affinity, 和 soft-anti-affinity默认值为 soft-anti-affinity

affinity 策略可防止迁移,因此会影响 RHOSP 升级。不支持 affinity 策略。

如果使用严格的 anti-affinity 策略,实例迁移过程中需要额外的 RHOSP 主机。

应用到机器池的服务器组策略。例如,soft-affinity

controlPlane.platform.openstack.additionalNetworkIDs

与 control plane 机器关联的额外网络。不为额外网络创建允许的地址对。

附加到 control plane 机器的额外网络也会附加到 bootstrap 节点。

一个或多个 UUID 的列表作为字符串。例如: fa806b2f-ac49-4bce-b9db-124bc64209bf

controlPlane.platform.openstack.additionalSecurityGroupIDs

与 control plane 机器关联的其他安全组。

一个或多个 UUID 的列表作为字符串。例如,7ee219f3-d2e9-48a1-96c2-e7429f1b0da7

controlPlane.platform.openstack.zones

RHOSP Compute(Nova)可用区(AZ)在其中安装机器。如果没有设置此参数,安装程序会依赖于配置了 RHOSP 管理员的 Nova 的默认设置。

在使用 Kuryr 的集群上,RHOSP Octavia 不支持可用区。负载均衡器,如果您使用 Amphora 供应商驱动程序,则依赖 Amphora 虚拟机的 OpenShift Container Platform 服务不会根据此属性的值创建。

字符串列表。例如: ["zone-1", "zone-2"]

controlPlane.platform.openstack.rootVolume.zones

对于 control plane 机器,安装根卷的可用区。如果没有设置这个值,安装程序会选择默认可用区。

字符串列表,如 ["zone-1", "zone-2"]

controlPlane.platform.openstack.serverGroupPolicy

要应用到池中包含 control plane 机器的组的服务器组策略。您不能在创建后更改服务器组策略或关系。支持的选项包括 anti-affinity, soft-affinity, 和 soft-anti-affinity默认值为 soft-anti-affinity

affinity关联性 策略会阻止迁移,因此会影响 RHOSP 升级。不支持 affinity 策略。

如果使用严格的 anti-affinity 策略,实例迁移过程中需要额外的 RHOSP 主机。

应用到机器池的服务器组策略。例如,soft-affinity

platform.openstack.clusterOSImage

安装程序从中下载 RHCOS 镜像的位置。

您必须设置此参数才能在受限网络中执行安装。

HTTP 或 HTTPS URL,可选使用 SHA-256 校验和。

例如: http://mirror.example.com/images/rhcos-43.81.201912131630.0-openstack.x86_64.qcow2.gz?sha256=ffebbd68e8a1f2a245ca19522c16c86f67f9ac8e4e0c1f0a812b068b16f7265d。该值也可以是现有 Glance 镜像的名称,如 my-rhcos

platform.openstack.clusterOSImageProperties

在 Glance 中添加至安装程序上传的 ClusterOSImage 的属性。如果将 platform.openstack.clusterOSImage 设置为现有的 Glance 镜像,则此属性将被忽略。

您可以使用此属性超过每个节点 26 个 PV 的 RHOSP 的默认持久性卷(PV)限值。要超过这个限制,请将 virtio- scsi_model 属性值设置为 virtio-scsi, 并将 hw_disk_bus 值设置为 scsi

您还可以使用此属性通过包含值为 yeshw_qemu_guest_agent 属性来启用 QEMU 客户机代理。

一组字符串属性。例如:

clusterOSImageProperties:
    hw_scsi_model: "virtio-scsi"
    hw_disk_bus: "scsi"
    hw_qemu_guest_agent: "yes"
Copy to Clipboard Toggle word wrap

platform.openstack.defaultMachinePlatform

默认机器池平台配置。

{
   "type": "ml.large",
   "rootVolume": {
      "size": 30,
      "type": "performance"
   }
}
Copy to Clipboard Toggle word wrap

platform.openstack.ingressFloatingIP

与 Ingress 端口关联的现有浮动 IP 地址。要使用此属性,还必须定义 platform.openstack.externalNetwork 属性。

IP 地址,如 128.0.0.1

platform.openstack.apiFloatingIP

与 API 负载均衡器关联的现有浮动 IP 地址。要使用此属性,还必须定义 platform.openstack.externalNetwork 属性。

IP 地址,如 128.0.0.1

platform.openstack.externalDNS

集群实例用于 DNS 解析的外部 DNS 服务器的 IP 地址。

IP 地址列表作为字符串。例如 ,["8.8.8.8", "192.168.1.12"]

platform.openstack.loadbalancer

是否使用默认的内部负载均衡器。如果值设为 UserManaged,则此默认负载均衡器被禁用,以便您可以部署使用外部用户管理的负载均衡器的集群。如果没有设置该参数,或者值为 OpenShiftManagedDefault,集群将使用默认负载均衡器。

UserManagedOpenShiftManagedDefault.

platform.openstack.machinesSubnet

集群节点使用的 RHOSP 子网的 UUID。在这个子网上创建节点和虚拟 IP(VIP)端口。

networking.machineNetwork 中的第一个项必须与 machine Subnet 的值匹配。

如果部署到自定义子网中,则无法将外部 DNS 服务器指定到 OpenShift Container Platform 安装程序。相反,将 DNS 添加到 RHOSP 中的子网中

作为字符串的 UUID。例如: fa806b2f-ac49-4bce-b9db-124bc64209bf

7.9.2.6. 故障域的 RHOSP 参数
重要

RHOSP 故障域只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

Red Hat OpenStack Platform (RHOSP) 部署没有单一的故障域实现。相反,可用区会为每个服务单独定义,如计算服务、Nova;网络服务、Neutron;存储服务 Cinder。

从 OpenShift Container Platform 4.13 开始,RHOSP 部署有统一的故障域定义,覆盖所有支持的可用区类型。您可以使用故障域从单一位置控制 Nova、Neutron 和 Cinder 配置的相关方面。

在 RHOSP 中,端口描述了网络连接,并映射到计算机器内的接口。一个端口还:

  • 由网络或多个子网定义
  • 将机器连接到一个或多个子网

故障域使用端口对部署的服务进行分组。如果使用故障域,每台机器都会连接到:

  • 对象存在时 ID control-planeportTarget 对象。
  • 本身故障域中的所有非 control-plane portTarget 对象。
  • 机器池的 additionalNetworkIDs 列表中的所有网络。

要为机器池配置故障域,请编辑 controlPlane.platform.openstack.failureDomains 下的可用区和端口目标参数。

Expand
表 7.7. 故障域的 RHOSP 参数
参数描述

platform.openstack.failuredomains.computeAvailabilityZone

服务器的可用区。如果没有指定,则使用集群默认。

可用区的名称。例如,nova-1

platform.openstack.failuredomains.storageAvailabilityZone

root 卷的可用区。如果没有指定,则使用集群默认。

可用区的名称。例如,cinder-1

platform.openstack.failuredomains.portTargets

portTarget 对象列表,各自定义附加到故障域中机器的网络连接。

portTarget 对象列表。

platform.openstack.failuredomains.portTargets.portTarget.id

单个端口目标的 ID。要将该端口目标选为机器的第一个网络,请将此参数的值设置为 control-plane。如果此参数具有不同的值,它将被忽略。

control-plane 或任意字符串。

platform.openstack.failuredomains.portTargets.portTarget.network

必需。附加到故障域中机器的网络的名称或 ID。

包含名称或 UUID 的 network 对象。例如:

network:
  id: 8db6a48e-375b-4caa-b20b-5b9a7218bfe6
Copy to Clipboard Toggle word wrap

或:

network:
  name: my-network-1
Copy to Clipboard Toggle word wrap

platform.openstack.failuredomains.portTargets.portTarget.fixedIPs

要分配固定 IP 地址的子网。这些子网必须与端口位于同一个网络中。

subnet 对象列表。

重要

您不能组合区域字段和故障域。如果要使用故障域,则必须取消设置 controlPlane.zonecontrolPlane.rootVolume.zone 字段。

这个示例 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:
    region: region1
    cloud: mycloud
    externalNetwork: external
    computeFlavor: m1.xlarge
    apiFloatingIP: 128.0.0.1
fips: false
pullSecret: '{"auths": ...}'
sshKey: ssh-ed25519 AAAA...
additionalTrustBundle: |

  -----BEGIN CERTIFICATE-----

  ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

  -----END CERTIFICATE-----

imageContentSources:
- mirrors:
  - <mirror_registry>/<repo_name>/release
  source: quay.io/openshift-release-dev/ocp-release
- mirrors:
  - <mirror_registry>/<repo_name>/release
  source: quay.io/openshift-release-dev/ocp-v4.0-art-dev
Copy to Clipboard Toggle word wrap

7.10. 为集群节点 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 公钥。

重要

不要在生产环境中跳过这个过程,在生产环境中需要灾难恢复和调试。

注意

您必须使用本地密钥,而不是使用特定平台方法配置 的密钥,如 AWS 密钥对

流程

  1. 如果您在本地计算机上没有可用于在集群节点上进行身份验证的现有 SSH 密钥对,请创建一个。例如,在使用 Linux 操作系统的计算机上运行以下命令:

    $ ssh-keygen -t ed25519 -N '' -f <path>/<file_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    指定新 SSH 密钥的路径和文件名,如 ~/.ssh/id_ed25519。如果您已有密钥对,请确保您的公钥位于 ~/.ssh 目录中。
  2. 查看公共 SSH 密钥:

    $ cat <path>/<file_name>.pub
    Copy to Clipboard Toggle word wrap

    例如,运行以下命令来查看 ~/.ssh/id_ed25519.pub 公钥:

    $ cat ~/.ssh/id_ed25519.pub
    Copy to Clipboard Toggle word wrap
  3. 将 SSH 私钥身份添加到本地用户的 SSH 代理(如果尚未添加)。在集群节点上,或者要使用 ./openshift-install gather 命令,需要对该密钥进行 SSH 代理管理,才能在集群节点上进行免密码 SSH 身份验证。

    注意

    在某些发行版中,自动管理默认 SSH 私钥身份,如 ~/.ssh/id_rsa~/.ssh/id_dsa

    1. 如果 ssh-agent 进程尚未为您的本地用户运行,请将其作为后台任务启动:

      $ eval "$(ssh-agent -s)"
      Copy to Clipboard Toggle word wrap

      输出示例

      Agent pid 31874
      Copy to Clipboard Toggle word wrap

  4. 将 SSH 私钥添加到 ssh-agent

    $ ssh-add <path>/<file_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    指定 SSH 私钥的路径和文件名,如 ~/.ssh/id_ed25519.pub

    输出示例

    Identity added: /home/<you>/<path>/<file_name> (<computer_name>)
    Copy to Clipboard Toggle word wrap

后续步骤

  • 安装 OpenShift Container Platform 时,为安装程序提供 SSH 公钥。

7.11. 启用对环境的访问

在部署时,所有 OpenShift Container Platform 机器都是在 Red Hat OpenStack Platform(RHOSP)租户网络中创建的。因此,大多数 RHOSP 部署中都无法直接访问它们。

您可以在安装过程中使用浮动 IP 地址(FIP)来配置 OpenShift Container Platform API 和应用程序访问。您还可以在没有配置 FIP 的情况下完成安装,但安装程序不会配置一种从外部访问 API 或应用程序的方法。

7.11.1. 启用通过浮动 IP 地址进行访问

创建浮动 IP(FIP)地址,以便从外部访问 OpenShift Container Platform API 和集群应用程序。

流程

  1. 使用 Red Hat OpenStack Platform(RHOSP)CLI 创建 API FIP:

    $ openstack floating ip create --description "API <cluster_name>.<base_domain>" <external_network>
    Copy to Clipboard Toggle word wrap
  2. 使用 Red Hat OpenStack Platform(RHOSP)CLI,创建应用程序或 Ingress,FIP:

    $ openstack floating ip create --description "Ingress <cluster_name>.<base_domain>" <external_network>
    Copy to Clipboard Toggle word wrap
  3. 在 API 和 Ingress FIP 的 DNS 服务器中添加符合这些模式的记录:

    api.<cluster_name>.<base_domain>.  IN  A  <API_FIP>
    *.apps.<cluster_name>.<base_domain>. IN  A <apps_FIP>
    Copy to Clipboard Toggle word wrap
    注意

    如果您不控制 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 控制台和监控界面的访问权限。您还可以使用 kubectloc。您可以使用指向 <application_floating_ip> 的额外条目来访问用户应用程序。此操作使 API 和应用程序可供您访问,不适合于生产部署,但允许对开发和测试进行安装。

  4. 将 FIP 添加到 install-config.yaml 文件中,作为以下参数的值:

    • platform.openstack.ingressFloatingIP
    • platform.openstack.apiFloatingIP

如果使用这些值,还必须在 install-config.yaml 文件中输入一个外部网络作为 platform.openstack.externalNetwork 参数的值。

提示

您可以通过分配浮动 IP 地址并更新防火墙配置,使 OpenShift Container Platform 资源在集群外可用。

7.11.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>
Copy to Clipboard Toggle word wrap

如果您不控制 DNS 服务器,您可以将记录添加到 /etc/hosts 文件中。此操作使 API 可供您自己访问,不适合于生产部署,而是允许安装以进行开发和测试。

7.12. 部署集群

您可以在兼容云平台上安装 OpenShift Container Platform。

重要

在初始安装过程中,您只能运行安装程序的 create cluster 命令一次。

先决条件

  • 获取 OpenShift Container Platform 安装程序和集群的 pull secret。
  • 验证主机上的云供应商帐户是否有部署集群的正确权限。权限不正确的帐户会导致安装过程失败,并显示包括缺失权限的错误消息。

流程

  • 进入包含安装程序的目录并初始化集群部署:

    $ ./openshift-install create cluster --dir <installation_directory> \ 
    1
    
        --log-level=info 
    2
    Copy to Clipboard Toggle word wrap
    1
    对于 <installation_directory>,请指定自定义 ./install-config.yaml 文件的位置。
    2
    要查看不同的安装详情,请指定 warndebugerror,而不是 info

验证

当集群部署成功完成时:

  • 终端会显示用于访问集群的说明,包括指向 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
Copy to Clipboard Toggle word wrap

重要
  • 安装程序生成的 Ignition 配置文件包含在 24 小时后过期的证书,然后在过期时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的 node-bootstrapper 证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。
  • 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。

7.13. 验证集群状态

您可以在安装过程中或安装后验证 OpenShift Container Platform 集群的状态。

流程

  1. 在集群环境中,导出管理员的 kubeconfig 文件:

    $ export KUBECONFIG=<installation_directory>/auth/kubeconfig 
    1
    Copy to Clipboard Toggle word wrap
    1
    对于 <installation_directory>,请指定安装文件保存到的目录的路径。

    kubeconfig 文件包含有关集群的信息,供 CLI 用于将客户端连接到正确的集群和 API 服务器。

  2. 查看部署后创建的 control plane 和计算机器:

    $ oc get nodes
    Copy to Clipboard Toggle word wrap
  3. 查看集群的版本:

    $ oc get clusterversion
    Copy to Clipboard Toggle word wrap
  4. 查看 Operator 的状态:

    $ oc get clusteroperator
    Copy to Clipboard Toggle word wrap
  5. 查看集群中的所有正在运行的 pod:

    $ oc get pods -A
    Copy to Clipboard Toggle word wrap

7.14. 使用 CLI 登录集群

您可以通过导出集群 kubeconfig 文件,以默认系统用户身份登录集群。kubeconfig 文件包含有关集群的信息,供 CLI 用于将客户端连接到正确的集群和 API 服务器。该文件特定于集群,在 OpenShift Container Platform 安装过程中创建。

先决条件

  • 已部署 OpenShift Container Platform 集群。
  • 已安装 oc CLI。

流程

  1. 导出 kubeadmin 凭证:

    $ export KUBECONFIG=<installation_directory>/auth/kubeconfig 
    1
    Copy to Clipboard Toggle word wrap
    1
    对于 <installation_directory>,请指定安装文件保存到的目录的路径。
  2. 验证您可以使用导出的配置成功运行 oc 命令:

    $ oc whoami
    Copy to Clipboard Toggle word wrap

    输出示例

    system:admin
    Copy to Clipboard Toggle word wrap

7.15. 禁用默认的 OperatorHub 目录源

在 OpenShift Container Platform 安装过程中,默认为 OperatorHub 配置由红帽和社区项目提供的源内容的 operator 目录。在受限网络环境中,必须以集群管理员身份禁用默认目录。

流程

  • 通过在 OperatorHub 对象中添加 disableAllDefaultSources: true 来 禁用默认目录的源:

    $ oc patch OperatorHub cluster --type json \
        -p '[{"op": "add", "path": "/spec/disableAllDefaultSources", "value": true}]'
    Copy to Clipboard Toggle word wrap
提示

或者,您可以使用 Web 控制台管理目录源。在 AdministrationCluster SettingsConfigurationOperatorHub 页面中,点 Sources 选项卡,您可以在其中创建、更新、删除、禁用和启用单独的源。

7.16. 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 订阅。

7.17. 后续步骤

第 8 章 安装 OpenStack 后配置网络设置

在安装后,您可以在 Red Hat OpenStack Platform (RHOSP) 集群中为 OpenShift Container Platform 配置网络设置。

8.1. 使用浮动 IP 地址配置应用程序访问

安装 OpenShift Container Platform 后,请配置 Red Hat OpenStack Platform (RHOSP) 以允许应用程序网络流量。

注意

如果您在 install-config.yaml 文件中为 platform.openstack.apiFloatingIPplatform.openstack.ingressFloatingIP 提供了值,或为 inventory.yaml playbook 中的 os_api_fipos_ingress_fip 提供了值,在安装过程中不需要执行此步骤。已设置浮动 IP 地址。

先决条件

  • 必须已安装 OpenShift Container Platform 集群
  • 启用浮动 IP 地址,如 RHOSP 安装文档中的 OpenShift Container Platform 所述。

流程

在安装 OpenShift Container Platform 集群后,将浮动 IP 地址附加到入口端口:

  1. 显示端口:

    $ openstack port show <cluster_name>-<cluster_ID>-ingress-port
    Copy to Clipboard Toggle word wrap
  2. 将端口附加到 IP 地址:

    $ openstack floating ip set --port <ingress_port_ID> <apps_FIP>
    Copy to Clipboard Toggle word wrap
  3. 在您的 DNS 文件中,为 *apps. 添加一条通配符 A 记录。

    *.apps.<cluster_name>.<base_domain>  IN  A  <apps_FIP>
    Copy to Clipboard Toggle word wrap
注意

如果您不控制 DNS 服务器,但希望为非生产用途启用应用程序访问,您可以将这些主机名添加到 /etc/hosts

<apps_FIP> console-openshift-console.apps.<cluster name>.<base domain>
<apps_FIP> integrated-oauth-server-openshift-authentication.apps.<cluster name>.<base domain>
<apps_FIP> oauth-openshift.apps.<cluster name>.<base domain>
<apps_FIP> prometheus-k8s-openshift-monitoring.apps.<cluster name>.<base domain>
<apps_FIP> <app name>.apps.<cluster name>.<base domain>
Copy to Clipboard Toggle word wrap

8.2. 启用 OVS 硬件卸载

对于在 Red Hat OpenStack Platform(RHOSP)上运行的集群,您可以启用 Open vSwitch(OVS) 硬件卸载。

OVS 是一种多层虚拟交换机,能够启用大规模多服务器网络虚拟化。

先决条件

  • 您在为单根输入/输出虚拟化(SR-IOV)配置的 RHOSP 上安装集群。
  • 在集群中安装了 SR-IOV Network Operator。
  • 您在集群中创建了两个 hw-offload 类型虚拟功能(VF)接口。
注意

应用程序层网关流在 OpenShift Container Platform 版本 4.10、4.11 和 4.12 中无法正常工作。另外,您无法卸载 OpenShift Container Platform 版本 4.13 的应用程序层网关流。

流程

  1. 为集群中的两个 hw-offload 类型 VF 接口创建一个 SriovNetworkNodePolicy 策略:

    第一个虚拟功能接口

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovNetworkNodePolicy 
    1
    
    metadata:
      name: "hwoffload9"
      namespace: openshift-sriov-network-operator
    spec:
      deviceType: netdevice
      isRdma: true
      nicSelector:
        pfNames: 
    2
    
        - ens6
      nodeSelector:
        feature.node.kubernetes.io/network-sriov.capable: 'true'
      numVfs: 1
      priority: 99
      resourceName: "hwoffload9"
    Copy to Clipboard Toggle word wrap

    1
    在此处插入 SriovNetworkNodePolicy 值。
    2
    两个接口都必须包含物理功能(PF)名称。

    第二个虚拟功能接口

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovNetworkNodePolicy 
    1
    
    metadata:
      name: "hwoffload10"
      namespace: openshift-sriov-network-operator
    spec:
      deviceType: netdevice
      isRdma: true
      nicSelector:
        pfNames: 
    2
    
        - ens5
      nodeSelector:
        feature.node.kubernetes.io/network-sriov.capable: 'true'
      numVfs: 1
      priority: 99
      resourceName: "hwoffload10"
    Copy to Clipboard Toggle word wrap

    1
    在此处插入 SriovNetworkNodePolicy 值。
    2
    两个接口都必须包含物理功能(PF)名称。
  2. 为两个接口创建 NetworkAttachmentDefinition 资源:

    第一接口的 NetworkAttachmentDefinition 资源

    apiVersion: k8s.cni.cncf.io/v1
    kind: NetworkAttachmentDefinition
    metadata:
      annotations:
        k8s.v1.cni.cncf.io/resourceName: openshift.io/hwoffload9
      name: hwoffload9
      namespace: default
    spec:
        config: '{ "cniVersion":"0.3.1", "name":"hwoffload9","type":"host-device","device":"ens6"
        }'
    Copy to Clipboard Toggle word wrap

    第二个接口的 NetworkAttachmentDefinition 资源

    apiVersion: k8s.cni.cncf.io/v1
    kind: NetworkAttachmentDefinition
    metadata:
      annotations:
        k8s.v1.cni.cncf.io/resourceName: openshift.io/hwoffload10
      name: hwoffload10
      namespace: default
    spec:
        config: '{ "cniVersion":"0.3.1", "name":"hwoffload10","type":"host-device","device":"ens5"
        }'
    Copy to Clipboard Toggle word wrap

  3. 使用通过 pod 创建的接口。例如:

    使用两个 OVS 卸载接口的 Pod

    apiVersion: v1
    kind: Pod
    metadata:
      name: dpdk-testpmd
      namespace: default
      annotations:
        irq-load-balancing.crio.io: disable
        cpu-quota.crio.io: disable
        k8s.v1.cni.cncf.io/resourceName: openshift.io/hwoffload9
        k8s.v1.cni.cncf.io/resourceName: openshift.io/hwoffload10
    spec:
      restartPolicy: Never
      containers:
      - name: dpdk-testpmd
        image: quay.io/krister/centos8_nfv-container-dpdk-testpmd:latest
    Copy to Clipboard Toggle word wrap

8.3. 附加 OVS 硬件卸载网络

您可以将 Open vSwitch (OVS) 硬件卸载网络添加到集群中。

先决条件

  • 集群已安装并运行。
  • 您已在 Red Hat OpenStack Platform (RHOSP) 上置备了 OVS 硬件卸载网络,用于您的集群。

流程

  1. 从以下模板创建一个名为 network.yaml 的文件:

    spec:
      additionalNetworks:
      - name: hwoffload1
        namespace: cnf
        rawCNIConfig: '{ "cniVersion": "0.3.1", "name": "hwoffload1", "type": "host-device","pciBusId": "0000:00:05.0", "ipam": {}}' 
    1
    
        type: Raw
    Copy to Clipboard Toggle word wrap

    其中:

    pciBusId

    指定连接到卸载网络的设备。如果没有它,您可以运行以下命令来查找这个值:

    $ oc describe SriovNetworkNodeState -n openshift-sriov-network-operator
    Copy to Clipboard Toggle word wrap
  2. 在命令行中输入以下命令使用该文件来修补集群:

    $ oc apply -f network.yaml
    Copy to Clipboard Toggle word wrap

8.4. 启用与 RHOSP 上的 pod 的 IPv6 连接

要在具有不同节点上的额外网络的 pod 之间启用 IPv6 连接,请禁用服务器的 IPv6 端口的端口安全性。禁用端口安全性,从而需要为每个分配给 pod 的 IPv6 地址创建允许的地址对,并启用安全组上的流量。

重要

仅支持以下 IPv6 额外网络配置:

  • SLAAC 和 host-device
  • SLAAC 和 MACVLAN
  • DHCP stateless 和 host-device
  • DHCP stateless 和 MACVLAN

流程

  • 在命令行中输入以下命令:

    $ openstack port set --no-security-group --disable-port-security <compute_ipv6_port> 
    1
    Copy to Clipboard Toggle word wrap
    1 1
    指定计算服务器的 IPv6 端口。
    重要

    这个命令从端口中删除安全组,并禁用端口安全性。流量限制完全从端口中删除。

8.5. 在 RHOSP 上创建具有 IPv6 连接的 pod

为 pod 启用 IPv6 连接后,将其添加到其中,创建具有辅助 IPv6 连接的 pod。

流程

  1. 定义使用 IPv6 命名空间和注解 k8s.v1.cni.cncf.io/networks: <additional_network_name> 的 pod,其中 <additional_network_name 是额外网络的名称。例如,作为 Deployment 对象的一部分:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: hello-openshift
      namespace: ipv6
    spec:
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
             - labelSelector:
                matchExpressions:
                - key: app
                  operator: In
                  values:
                  - hello-openshift
      replicas: 2
      selector:
        matchLabels:
          app: hello-openshift
      template:
        metadata:
          labels:
            app: hello-openshift
          annotations:
            k8s.v1.cni.cncf.io/networks: ipv6
        spec:
          securityContext:
            runAsNonRoot: true
            seccompProfile:
              type: RuntimeDefault
          containers:
          - name: hello-openshift
            securityContext:
              allowPrivilegeEscalation: false
              capabilities:
                drop:
                - ALL
            image: quay.io/openshift/origin-hello-openshift
            ports:
            - containerPort: 8080
    Copy to Clipboard Toggle word wrap
  2. 创建 pod。例如,在命令行中输入以下命令:

    $ oc create -f <ipv6_enabled_resource> 
    1
    Copy to Clipboard Toggle word wrap
    1
    指定包含资源定义的文件。

8.6. 为 RHOSP 上的 pod 添加 IPv6 连接

在 pod 中启用 IPv6 连接后,使用 Container Network Interface (CNI) 配置添加与它们的连接。

流程

  1. 要编辑 Cluster Network Operator (CNO),请输入以下命令:

    $ oc edit networks.operator.openshift.io cluster
    Copy to Clipboard Toggle word wrap
  2. spec 字段中指定您的 CNI 配置。例如,以下配置使用带有 MACVLAN 的 192.168.1.0/24 地址模式:

    ...
    spec:
      additionalNetworks:
      - name: ipv6
        namespace: ipv6 
    1
    
        rawCNIConfig: '{ "cniVersion": "0.3.1", "name": "ipv6", "type": "macvlan", "master": "ens4"}' 
    2
    
        type: Raw
    Copy to Clipboard Toggle word wrap
    1
    确保在同一命名空间中创建 pod。
    2
    当配置了更多网络或使用不同的内核驱动程序时,网络附加 "master" 字段中的接口可能与 "ens4" 不同。
    注意

    如果您使用有状态地址模式,请在 CNI 配置中包含 IP 地址管理 (IPAM)。

    Multus 不支持 DHCPv6。

  3. 保存您的更改,再退出文本编辑器以提交更改。

验证

  • 在命令行中输入以下命令:

    $ oc get network-attachment-definitions -A
    Copy to Clipboard Toggle word wrap

    输出示例

    NAMESPACE       NAME            AGE
    ipv6            ipv6            21h
    Copy to Clipboard Toggle word wrap

现在,您可以创建具有辅助 IPv6 连接的 pod。

第 9 章 OpenStack Cloud Controller Manager 参考指南

9.1. OpenStack Cloud Controller Manager

从 OpenShift Container Platform 4.12 开始,在 Red Hat OpenStack Platform (RHOSP) 上运行的集群从旧的 OpenStack 云供应商切换到外部 OpenStack Cloud Controller Manager (CCM)。此更改遵循 Kubernetes 的变化,它从 in-tree(传统的云供应商)变为使用 Cloud Controller Manager 实施的外部云供应商。

要为旧的云供应商保留用户定义的配置,现有配置作为迁移过程的一部分映射到新的配置。它会在 openshift-config 命名空间中搜索名为 cloud-provider-config 的配置。

注意

配置映射名称 cloud-provider-config 没有静态配置。它源自 infrastructure/cluster CRD 中的 spec.cloudConfig.name 值。

找到的配置与 openshift-cloud-controller-manager 命名空间中的 cloud-conf 配置映射同步。

作为此同步的一部分,OpenStack CCM Operator 会更改新的配置映射,以便其属性与外部云供应商兼容。该文件通过以下方式更改:

  • [Global] secret-name,[Global] secret-namespace, 和 [Global] kubeconfig-path 选项会被删除。它们不适用于外部云供应商。
  • 添加 [Global] use-clouds,[Global] clouds-file, 和 [Global] cloud 选项。
  • 整个 [BlockStorage] 部分已被删除。外部云供应商不再执行存储操作。块存储配置由 Cinder CSI 驱动程序管理。

另外,CCM Operator 会强制执行多个默认选项。这些选项的值始终被覆盖,如下所示:

[Global]
use-clouds = true
clouds-file = /etc/openstack/secret/clouds.yaml
cloud = openstack
...

[LoadBalancer]
use-octavia = true
enabled = true 
1
Copy to Clipboard Toggle word wrap
1
如果网络被配置为使用 Kuryr,则默认值为 false

clouds-value/etc/openstack/secret/clouds.yaml 映射到 openshift-cloud-controller-manager 命名空间中的 openstack-cloud-credentials 配置。您可以像执行任何其他 clouds.yaml 文件一样修改此文件中的 RHOSP 云。

9.2. OpenStack Cloud Controller Manager (CCM) 配置映射

OpenStack CCM 配置映射定义集群如何与 RHOSP 云交互。默认情况下,此配置存储在 openshift-cloud-controller-manager 命名空间中的 cloud-conf 配置映射中的 cloud.conf 键下。

重要

cloud-conf 配置映射从 openshift-config 命名空间中的 cloud-provider-config 配置映射生成。

要更改 cloud-conf 配置映射描述的设置,请修改 cloud-provider-config 配置映射。

作为此同步的一部分,CCM Operator 会覆盖一些选项。如需更多信息,请参阅 "RHOSP Cloud Controller Manager"。

例如:

cloud-conf 配置映射示例

apiVersion: v1
data:
  cloud.conf: |
    [Global] 
1

    secret-name = openstack-credentials
    secret-namespace = kube-system
    region = regionOne
    [LoadBalancer]
    use-octavia = True
kind: ConfigMap
metadata:
  creationTimestamp: "2022-12-20T17:01:08Z"
  name: cloud-conf
  namespace: openshift-cloud-controller-manager
  resourceVersion: "2519"
  uid: cbbeedaf-41ed-41c2-9f37-4885732d3677
Copy to Clipboard Toggle word wrap

1
使用 clouds.yaml 文件而不是修改配置映射来设置全局选项。

配置映射中存在以下选项。除另有说明时,对于在 RHOSP 上运行的集群,它们是必需的。

9.2.1. 负载均衡器选项

CCM 为使用 Octavia 的部署支持多个负载均衡器选项。

注意

neutron-rhcs 支持已弃用。

Expand
选项描述

enabled

是否启用 LoadBalancer 类型的服务集成。默认值为 true

floating-network-id

可选。用于为负载均衡器虚拟 IP 地址 (VIP) 创建浮动 IP 地址的外部网络。如果云中有多个外部网络,则必须设置此选项,或者用户必须在服务注解中指定 loadbalancer.openstack.org/floating-network-id

floating-subnet-id

可选。用于为负载均衡器 VIP 创建浮动 IP 地址的外部网络子网。可以被服务注解 loadbalancer.openstack.org/floating-subnet-id 覆盖。

floating-subnet

可选。一个名称特征(如果以 ~ 开始为 glob 或正则表达式),用于为负载均衡器 VIP 创建浮动 IP 地址的外部网络子网。可以被服务注解 loadbalancer.openstack.org/floating-subnet 覆盖。如果多个子网与模式匹配,则使用第一个具有可用 IP 地址的子网。

floating-subnet-tags

可选。用于为负载均衡器 VIP 创建浮动 IP 地址的外部网络子网的标签。可以被服务注解 loadbalancer.openstack.org/floating-subnet-tags 覆盖。如果多个子网与这些标签匹配,则使用第一个具有可用 IP 地址的子网。

如果 RHOSP 网络被配置为禁用共享,例如,创建过程中使用的 --no-share 标志,则不支持这个选项。将网络设置为共享来使用这个选项。

lb-method

用于创建负载均衡器池的负载平衡算法。对于 Amphora 供应商,值可以是 ROUND_ROBINLEAST_CONNECTIONSSOURCE_IP。默认值为 ROUND_ROBIN

对于 OVN 提供程序,只支持 SOURCE_IP_PORT 算法。

对于 Amphora 供应商,如果使用 LEAST_CONNECTIONSSOURCE_IP 方法,在 openshift-config 命名空间的 cloud-provider-config 配置映射中将 create-monitor 选项配置为 true,以便在负载均衡器类型服务上的 ETP:Local 以允许客户端中的平衡算法强制进行服务端点连接。

lb-provider

可选。用于指定负载均衡器的供应商,如 amphoraoctavia。仅支持 Amphora 和 Octavia 供应商。

lb-version

可选。负载均衡器 API 版本。仅支持 "v2"

subnet-id

创建负载均衡器 VIP 的网络服务子网的 ID。

network-id

创建负载均衡器 VIP 的网络服务网络的 ID。如果设置了 subnet-id,则不需要。

create-monitor

是否为服务负载均衡器创建运行状况监控器。声明 externalTrafficPolicy: Local 的服务需要健康监控器。默认值为 false

如果您使用早于 ovn 供应商的版本 17 的 RHOSP,则不支持这个选项。

monitor-delay

将探测发送到负载均衡器成员的时间间隔(以秒为单位)。默认值为 5

monitor-max-retries

将负载均衡器成员的操作状态更改为 ONLINE 所需的成功检查数量。有效范围为 110,默认值为 1

monitor-timeout

监控器在超时前等待连接到后端的时间(以秒为单位)。默认值为 3

internal-lb

是否在没有浮动 IP 地址的情况下创建内部负载均衡器。默认值为 false

LoadBalancerClass "ClassName"

这是一个 config 部分,其中包含一组选项:

  • floating-network-id
  • floating-subnet-id
  • floating-subnet
  • floating-subnet-tags
  • network-id
  • subnet-id

这些选项的行为与 CCM 配置文件的负载均衡器部分相同的命名选项的行为相同。

您可以通过指定服务注解 loadbalancer.openstack.org/class 来设置 ClassName 值。

max-shared-lb

可以共享负载均衡器的最大服务数。默认值为 2

9.2.2. Operator 覆盖的选项

CCM Operator 覆盖以下选项,您可以识别其配置 RHOSP。不要自行配置它们。本文档中包含它们仅用于信息。

Expand
选项描述

auth-url

RHOSP Identity 服务 URL。例如: http://128.110.154.166/identity

os-endpoint-type

从服务目录使用的端点类型。

username

Identity 服务用户名。

password

Identity 服务用户密码。

domain-id

Identity 服务用户域 ID。

domain-name

Identity 服务用户域名。

tenant-id

Identity 服务项目 ID。如果您使用 Identity 服务应用程序凭证,请保留这个选项。

在 Identity API 的版本 3 中,其标识符 tenant 改为 projecttenant-id 的值会自动映射到 API 中的项目结构。

tenant-name

Identity 服务项目名称。

tenant-domain-id

Identity service 项目域 ID。

tenant-domain-name

Identity service 项目域名。

user-domain-id

Identity 服务用户域 ID。

user-domain-name

Identity 服务用户域名。

use-clouds

是否在 clouds.yaml 文件中获取授权凭证。本节中设置的选项优先于 clouds.yaml 文件中读取的值。

CCM 在以下位置搜索文件:

  1. clouds-file 选项的值。
  2. 存储在环境变量 OS_CLIENT_CONFIG_FILE 中的文件路径。
  3. pkg/openstack 目录。
  4. ~/.config/openstack 目录。
  5. /etc/openstack 目录。

clouds-file

clouds.yaml 文件的文件路径。如果将 use-clouds 选项设置为 true,则会使用它。

cloud

要使用的 clouds.yaml 文件中命名的云。如果将 use-clouds 选项设置为 true,则会使用它。

第 10 章 在 OpenStack 上卸载集群

您可以删除部署到 Red Hat OpenStack Platform(RHOSP)中的集群。

您可以从云中删除使用安装程序置备的基础架构的集群。

注意

如果将集群部署到 AWS C2S Secret 区域,安装程序不支持销毁集群;您需要手动删除集群资源。

注意

卸载后,检查云供应商是否有未正确删除的资源,特别是在用户置备基础架构(UPI)集群中。可能存在安装程序未创建或安装程序无法访问的资源。例如,一些 Google Cloud 资源需要在共享 VPC 主机项目中具有 IAM 权限,或者可能有未使用的 健康检查必须被删除

先决条件

  • 有用于部署集群的安装程序副本。
  • 有创建集群时安装程序生成的文件。

流程

  1. 在用来安装集群的计算机中包含安装程序的目录中,运行以下命令:

    $ ./openshift-install destroy cluster \
    --dir <installation_directory> --log-level info 
    1
     
    2
    Copy to Clipboard Toggle word wrap
    1
    对于 <installation_directory>,请指定安装文件保存到的目录的路径。
    2
    要查看不同的详情,请指定 warndebugerror,而不是 info
    注意

    您必须为集群指定包含集群定义文件的目录。安装程序需要此目录中的 metadata.json 文件来删除集群。

  2. 可选:删除 <installation_directory> 目录和 OpenShift Container Platform 安装程序。

您可以删除在用户置备的基础架构上部署到 Red Hat OpenStack Platform(RHOSP)中的集群。

11.1. 下载 playbook 依赖项

用于简化用户置备的基础架构删除过程的 Ansible playbook 需要几个 Python 模块。在您要运行该过程的机器上,添加模块的存储库,然后下载它们。

注意

这些说明假设您使用 Red Hat Enterprise Linux(RHEL)8。

先决条件

  • Python 3 已安装在您的机器上。

流程

  1. 在命令行中添加软件仓库:

    1. 使用 Red Hat Subscription Manager 注册:

      $ sudo subscription-manager register # If not done already
      Copy to Clipboard Toggle word wrap
    2. 获取最新的订阅数据:

      $ sudo subscription-manager attach --pool=$YOUR_POOLID # If not done already
      Copy to Clipboard Toggle word wrap
    3. 禁用当前的软件仓库:

      $ sudo subscription-manager repos --disable=* # If not done already
      Copy to Clipboard Toggle word wrap
    4. 添加所需的软件仓库:

      $ sudo subscription-manager repos \
        --enable=rhel-8-for-x86_64-baseos-rpms \
        --enable=openstack-16-tools-for-rhel-8-x86_64-rpms \
        --enable=ansible-2.9-for-rhel-8-x86_64-rpms \
        --enable=rhel-8-for-x86_64-appstream-rpms
      Copy to Clipboard Toggle word wrap
  2. 安装模块:

    $ sudo yum install python3-openstackclient ansible python3-openstacksdk
    Copy to Clipboard Toggle word wrap
  3. 确保 python 命令指向 python 3:

    $ sudo alternatives --set python /usr/bin/python3
    Copy to Clipboard Toggle word wrap

您可以在使用您自己的基础架构的 Red Hat OpenStack Platform(RHOSP)上删除 OpenShift Container Platform 集群。要快速完成移除过程,请运行多个 Ansible playbook。

先决条件

  • Python 3 已安装在您的机器上。
  • 下载了"下载 playbook 依赖项"中的模块。
  • 您有用于安装集群的 playbook。
  • 您修改了前缀为 down- 的 playbook,以反映您对相应安装 playbook 所做的任何更改。例如,对 bootstrap.yaml 文件的更改会反映在 down-bootstrap.yaml 文件中。
  • 所有 playbook 都位于一个通用目录中。

流程

  1. 在命令行中运行您下载的 playbook:

    $ ansible-playbook -i inventory.yaml  \
    	down-bootstrap.yaml      \
    	down-control-plane.yaml  \
    	down-compute-nodes.yaml  \
    	down-load-balancers.yaml \
    	down-network.yaml        \
    	down-security-groups.yaml
    Copy to Clipboard Toggle word wrap
  2. 删除您为 OpenShift Container Platform 安装所做的任何 DNS 记录更改。

OpenShift Container Platform 被从您的基础架构中删除。

Legal Notice

Copyright © 2025 Red Hat

OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).

Modified versions must remove all Red Hat trademarks.

Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.

Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.

Linux® is the registered trademark of Linus Torvalds in the United States and other countries.

Java® is a registered trademark of Oracle and/or its affiliates.

XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.

MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.

Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.

The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.

All other trademarks are the property of their respective owners.

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat