$ sudo subscription-manager register # If not done already
在 OpenShift Container Platform 4.17 版本中,您可以安装在运行在用户预配基础设施上的 Red Hat OpenStack Platform (RHOSP) 上的集群。
使用您自己的基础设施允许您将集群与现有基础设施和修改集成。此过程比安装程序预配的安装需要更多的人工操作,因为您必须创建所有 RHOSP 资源,例如 Nova 服务器、Neutron 端口和安全组。但是,Red Hat 提供 Ansible playbook 来帮助您完成部署过程。
您已查看有关OpenShift Container Platform 安装和更新过程的详细信息。
您已阅读有关选择集群安装方法并为用户准备它的文档。
您已使用OpenShift 集群支持的平台部分验证 OpenShift Container Platform 4.17 是否与您的 RHOSP 版本兼容。您还可以通过查看RHOSP 上的 OpenShift Container Platform 支持矩阵来比较不同版本之间的平台支持。
您拥有一个要在其中安装 OpenShift Container Platform 的 RHOSP 帐户。
您了解集群扩展、控制平面大小和 etcd 的性能和可扩展性实践。有关更多信息,请参阅集群扩展的推荐实践。
在您运行安装程序的机器上,您拥有:
一个可以存储您在安装过程中创建的文件的单个目录
Python 3
在 OpenShift Container Platform 4.17 中,您需要访问互联网才能安装集群。
您必须具有互联网访问权限才能:
访问OpenShift 集群管理器以下载安装程序并执行订阅管理。如果集群具有互联网访问权限并且您没有禁用遥测,则该服务会自动授权您的集群。
访问Quay.io以获取安装集群所需的软件包。
获取执行集群更新所需的软件包。
如果您的集群无法直接访问互联网,则可以在您预配的某些类型的基础设施上执行受限网络安装。在此过程中,您将下载所需的内容并将其用于使用安装包填充镜像注册表。对于某些安装类型,您安装集群的环境将不需要互联网访问。在更新集群之前,请更新镜像注册表的内容。 |
为了支持 OpenShift Container Platform 安装,您的 Red Hat OpenStack Platform (RHOSP) 配额必须满足以下要求:
资源 | 值 |
---|---|
浮动 IP 地址 |
3 |
端口 |
15 |
路由器 |
1 |
子网 |
1 |
RAM |
88 GB |
vCPU |
22 |
卷存储 |
275 GB |
实例 |
7 |
安全组 |
3 |
安全组规则 |
60 |
服务器组 |
2 个,每个机器池中每增加一个可用区则增加 1 个 |
集群可能在资源少于推荐资源的情况下运行,但其性能无法保证。
如果 RHOSP 对象存储 (Swift) 可用,并且由具有 `swiftoperator` 角色的用户帐户操作,则它将用作 OpenShift Container Platform 镜像注册表的默认后端。在这种情况下,卷存储需求为 175 GB。Swift 存储空间需求会根据镜像注册表的大小而变化。 |
默认情况下,您的安全组和安全组规则配额可能较低。如果遇到问题,请以管理员身份运行 `openstack quota set --secgroups 3 --secgroup-rules 60 |
OpenShift Container Platform 部署包含控制平面机器、计算机器和引导机器。
默认情况下,OpenShift Container Platform 安装过程会创建三个控制平面机器。
每台机器需要:
一个来自 RHOSP 配额的实例
一个来自 RHOSP 配额的端口
至少具有 16 GB 内存和 4 个 vCPU 的规格
至少 100 GB 来自 RHOSP 配额的存储空间
简化用户配置基础架构上安装过程的 Ansible playbook 需要几个 Python 模块。在您将运行安装程序的机器上,添加模块的存储库,然后下载它们。
这些说明假设您使用的是 Red Hat Enterprise Linux (RHEL) 8。 |
您的机器上已安装 Python 3。
在命令行上,添加存储库
注册 Red Hat Subscription Manager
$ sudo subscription-manager register # If not done already
提取最新的订阅数据
$ sudo subscription-manager attach --pool=$YOUR_POOLID # If not done already
禁用当前存储库
$ sudo subscription-manager repos --disable=* # If not done already
添加所需的存储库
$ 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
安装模块
$ sudo yum install python3-openstackclient ansible python3-openstacksdk python3-netaddr ansible-collections-openstack
确保 `python` 命令指向 `python3`
$ sudo alternatives --set python /usr/bin/python3
下载 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.17/upi/openstack/bootstrap.yaml
https://raw.githubusercontent.com/openshift/installer/release-4.17/upi/openstack/common.yaml
https://raw.githubusercontent.com/openshift/installer/release-4.17/upi/openstack/compute-nodes.yaml
https://raw.githubusercontent.com/openshift/installer/release-4.17/upi/openstack/control-plane.yaml
https://raw.githubusercontent.com/openshift/installer/release-4.17/upi/openstack/down-bootstrap.yaml
https://raw.githubusercontent.com/openshift/installer/release-4.17/upi/openstack/down-compute-nodes.yaml
https://raw.githubusercontent.com/openshift/installer/release-4.17/upi/openstack/down-control-plane.yaml
https://raw.githubusercontent.com/openshift/installer/release-4.17/upi/openstack/down-network.yaml
https://raw.githubusercontent.com/openshift/installer/release-4.17/upi/openstack/down-security-groups.yaml
https://raw.githubusercontent.com/openshift/installer/release-4.17/upi/openstack/down-containers.yaml
https://raw.githubusercontent.com/openshift/installer/release-4.17/upi/openstack/inventory.yaml
https://raw.githubusercontent.com/openshift/installer/release-4.17/upi/openstack/network.yaml
https://raw.githubusercontent.com/openshift/installer/release-4.17/upi/openstack/security-groups.yaml
https://raw.githubusercontent.com/openshift/installer/release-4.17/upi/openstack/update-network-resources.yaml'
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` 文件中。如果您没有编辑这两个文件,则受支持的集群删除过程将失败。 |
在安装 OpenShift Container Platform 之前,请在您用于安装的主机上下载安装文件。
您有一台运行 Linux 或 macOS 的计算机,具有 500 MB 的本地磁盘空间。
转到 Red Hat Hybrid Cloud Console 上的 集群类型 页面。如果您有 Red Hat 帐户,请使用您的凭据登录。如果没有,请创建一个帐户。
从页面“自己运行”部分选择您的基础架构提供商。
从“OpenShift 安装程序”下的下拉菜单中选择您的主机操作系统和架构,然后单击“下载安装程序”。
将下载的文件放在您想要存储安装配置文件的目录中。
|
解压安装程序。例如,在使用 Linux 操作系统的计算机上,运行以下命令
$ tar -xvf openshift-install-linux.tar.gz
从 Red Hat OpenShift 集群管理器下载您的安装 pull secret。此 pull secret 允许您向包含的授权机构提供的服务进行身份验证,包括 Quay.io(提供 OpenShift Container Platform 组件的容器镜像)。
或者,您可以从 Red Hat 客户门户 检索安装程序,您可以在其中指定要下载的安装程序版本。但是,您必须拥有有效的订阅才能访问此页面。 |
在 OpenShift Container Platform 安装期间,您可以向安装程序提供 SSH 公钥。该密钥通过其 Ignition 配置文件传递到 Red Hat Enterprise Linux CoreOS (RHCOS) 节点,并用于验证对节点的 SSH 访问。该密钥将添加到每个节点上 `core` 用户的 `~/.ssh/authorized_keys` 列表中,从而实现无密码身份验证。
密钥传递到节点后,您可以使用密钥对以 `core` 用户身份通过 SSH 登录到 RHCOS 节点。要通过 SSH 访问节点,私钥标识必须由您本地用户的 SSH 管理。
如果您想通过 SSH 登录到集群节点以执行安装调试或灾难恢复,则必须在安装过程中提供 SSH 公钥。`./openshift-install gather` 命令也需要 SSH 公钥位于集群节点上。
在需要灾难恢复和调试的生产环境中,不要跳过此过程。 |
您必须使用本地密钥,而不是使用平台特定方法(例如 AWS 密钥对)配置的密钥。 |
如果您的本地机器上没有现有的 SSH 密钥对可用于对集群节点进行身份验证,请创建一个。例如,在使用 Linux 操作系统的计算机上,运行以下命令
$ ssh-keygen -t ed25519 -N '' -f <path>/<file_name> (1)
1 | 指定新 SSH 密钥的路径和文件名,例如~/.ssh/id_ed25519 。如果您已经有现有的密钥对,请确保您的公钥位于您的~/.ssh 目录中。 |
如果您计划安装一个使用已提交给 NIST 以进行 FIPS 140-2/140-3 验证的 RHEL 加密库的 OpenShift Container Platform 集群(仅限于 |
查看公钥 SSH 密钥
$ cat <path>/<file_name>.pub
例如,运行以下命令查看~/.ssh/id_ed25519.pub
公钥
$ cat ~/.ssh/id_ed25519.pub
如果尚未添加,请将 SSH 私钥身份添加到本地用户的 SSH 代理。对于无密码 SSH 身份验证到集群节点,或者如果您想使用./openshift-install gather
命令,都需要 SSH 代理管理密钥。
在某些发行版中,默认的 SSH 私钥身份(例如 |
如果本地用户的ssh-agent
进程尚未运行,请将其作为后台任务启动。
$ eval "$(ssh-agent -s)"
Agent pid 31874
如果您的集群处于 FIPS 模式,则只能使用符合 FIPS 的算法来生成 SSH 密钥。密钥必须是 RSA 或 ECDSA。 |
将您的 SSH 私钥添加到ssh-agent
$ ssh-add <path>/<file_name> (1)
1 | 指定 SSH 私钥的路径和文件名,例如~/.ssh/id_ed25519 |
Identity added: /home/<you>/<path>/<file_name> (<computer_name>)
安装 OpenShift Container Platform 时,请向安装程序提供 SSH 公钥。
OpenShift Container Platform 安装程序要求 Red Hat OpenStack Platform (RHOSP) 集群中存在 Red Hat Enterprise Linux CoreOS (RHCOS) 镜像。检索最新的 RHCOS 镜像,然后使用 RHOSP CLI 上传它。
RHOSP CLI 已安装。
登录 Red Hat 客户门户的产品下载页面。
在**版本**下,选择适用于 Red Hat Enterprise Linux (RHEL) 8 的最新版本的 OpenShift Container Platform 4.17。
RHCOS 镜像可能不会随着每次 OpenShift Container Platform 版本的发布而更改。您必须下载版本号小于或等于您安装的 OpenShift Container Platform 版本的镜像。如果可用,请使用与您的 OpenShift Container Platform 版本匹配的镜像版本。 |
下载Red Hat Enterprise Linux CoreOS (RHCOS) - OpenStack 镜像 (QCOW)。
解压缩镜像。
集群使用镜像之前,必须先解压缩 RHOSP 镜像。下载的文件名可能不包含压缩扩展名,例如
|
使用 RHOSP CLI 从您下载的镜像创建一个名为rhcos
的集群镜像
$ openstack image create --container-format=bare --disk-format=qcow2 --file rhcos-${RHCOS_VERSION}-openstack.qcow2 rhcos
根据您的 RHOSP 环境,您可能能够以.raw 或.qcow2 格式上传镜像。如果您使用 Ceph,则必须使用.raw 格式。 |
如果安装程序找到多个同名的镜像,它会随机选择其中一个。为避免此行为,请为 RHOSP 中的资源创建唯一名称。 |
将镜像上传到 RHOSP 后,即可在安装过程中使用它。
OpenShift Container Platform 安装过程需要外部网络访问。您必须向其提供外部网络值,否则部署将失败。在开始此过程之前,请验证 Red Hat OpenStack Platform (RHOSP) 中是否存在具有外部路由器类型的网络。
使用 RHOSP CLI 验证“外部”网络的名称和 ID
$ openstack network list --long -c ID -c Name -c "Router Type"
+--------------------------------------+----------------+-------------+
| ID | Name | Router Type |
+--------------------------------------+----------------+-------------+
| 148a8023-62a7-4672-b018-003462f8d7dc | public_network | External |
+--------------------------------------+----------------+-------------+
网络列表中显示具有外部路由器类型的网络。如果至少有一个不存在,请参见创建默认浮动 IP 网络和创建默认提供商网络。
如果启用了 Neutron trunk 服务插件,则默认情况下会创建一个 trunk 端口。有关更多信息,请参见Neutron trunk 端口。 |
在部署过程中,所有 OpenShift Container Platform 机器都创建在 Red Hat OpenStack Platform (RHOSP) 租户网络中。因此,在大多数 RHOSP 部署中,无法直接访问它们。
您可以在安装过程中使用浮动 IP 地址 (FIP) 配置 OpenShift Container Platform API 和应用程序访问。您也可以在不配置 FIP 的情况下完成安装,但安装程序不会配置外部访问 API 或应用程序的方法。
创建浮动 IP (FIP) 地址,用于外部访问 OpenShift Container Platform API、集群应用程序和引导过程。
使用 Red Hat OpenStack Platform (RHOSP) CLI 创建 API FIP
$ openstack floating ip create --description "API <cluster_name>.<base_domain>" <external_network>
使用 Red Hat OpenStack Platform (RHOSP) CLI 创建应用程序或 Ingress FIP
$ openstack floating ip create --description "Ingress <cluster_name>.<base_domain>" <external_network>
使用 Red Hat OpenStack Platform (RHOSP) CLI 创建引导 FIP
$ openstack floating ip create --description "bootstrap machine" <external_network>
将遵循以下模式的记录添加到您的 DNS 服务器中,用于 API 和 Ingress FIP
api.<cluster_name>.<base_domain>. IN A <API_FIP>
*.apps.<cluster_name>.<base_domain>. IN A <apps_FIP>
如果您不控制 DNS 服务器,您可以通过将以下集群域名添加到您的
|
将 FIP 添加到inventory.yaml
文件中,作为以下变量的值
os_api_fip
os_bootstrap_fip
os_ingress_fip
如果您使用这些值,还必须在inventory.yaml
文件中将外部网络输入为os_external_network
变量的值。
您可以通过分配浮动 IP 地址并更新防火墙配置,使 OpenShift Container Platform 资源在集群外部可用。 |
您可以在 Red Hat OpenStack Platform (RHOSP) 上安装 OpenShift Container Platform,无需提供浮动 IP 地址。
在 inventory.yaml
文件中,请不要定义以下变量
os_api_fip
os_bootstrap_fip
os_ingress_fip
如果您无法提供外部网络,也可以将 os_external_network
留空。如果您未为 os_external_network
提供值,则不会为您创建路由器,并且在没有其他操作的情况下,安装程序将无法从 Glance 获取镜像。在安装过程的后期,当您创建网络资源时,必须自行配置外部连接。
如果您使用无法访问集群 API 的系统(由于缺少浮动 IP 地址或名称解析)运行带有 wait-for
命令的安装程序,则安装将失败。为了防止在这些情况下安装失败,您可以使用代理网络或从与您的机器位于同一网络的系统运行安装程序。
您可以通过为 API 和 Ingress 端口创建 DNS 记录来启用名称解析。例如
如果您无法控制 DNS 服务器,则可以将记录添加到您的 |
OpenShift Container Platform 安装程序依赖于一个名为 clouds.yaml
的文件。该文件描述了 Red Hat OpenStack Platform (RHOSP) 配置参数,包括项目名称、登录信息和授权服务 URL。
创建 clouds.yaml
文件
如果您的 RHOSP 发行版包含 Horizon Web UI,请在其中生成 clouds.yaml
文件。
请记住向 |
如果您的 RHOSP 发行版不包含 Horizon Web UI,或者您不想使用 Horizon,请自行创建该文件。有关 clouds.yaml
的详细信息,请参阅 RHOSP 文档中的配置 文件。
clouds:
shiftstack:
auth:
auth_url: http://10.10.14.42:5000/v3
project_name: shiftstack
username: <username>
password: <password>
user_domain_name: Default
project_domain_name: Default
dev-env:
region_name: RegionOne
auth:
username: <username>
password: <password>
project_name: 'devonly'
auth_url: 'https://10.10.14.22:5001/v2.0'
如果您的 RHOSP 安装使用自签名证书颁发机构 (CA) 证书进行端点身份验证
将证书颁发机构文件复制到您的机器。
将 cacerts
密钥添加到 clouds.yaml
文件中。该值必须是 CA 证书的绝对路径,且非 root 可访问。
clouds:
shiftstack:
...
cacert: "/etc/pki/ca-trust/source/anchors/ca.crt.pem"
使用自定义 CA 证书运行安装程序后,您可以通过编辑
|
将 clouds.yaml
文件放置在以下位置之一:
OS_CLIENT_CONFIG_FILE
环境变量的值
当前目录
Unix 特定的用户配置目录,例如 ~/.config/openstack/clouds.yaml
Unix 特定的站点配置目录,例如 /etc/openstack/clouds.yaml
安装程序将按照此顺序搜索 clouds.yaml
。
创建在您自己的基础架构上安装的 Red Hat OpenStack Platform (RHOSP) 上的 OpenShift Container Platform 所需的网络资源。为了节省时间,请运行提供的 Ansible playbook,这些 playbook 会生成安全组、网络、子网、路由器和端口。
您已在“下载 playbook 依赖项”中下载了模块。
您已在“下载安装 playbook”中下载了 playbook。
对于双栈集群部署,请编辑 inventory.yaml
文件并取消注释 os_subnet6
属性。
在命令行上,通过运行以下命令来创建网络资源:
$ ansible-playbook -i inventory.yaml network.yaml
API 和 Ingress VIP 字段将在 |
|
您可以自定义在 Red Hat OpenStack Platform (RHOSP) 上安装的 OpenShift Container Platform 集群。
您拥有 OpenShift Container Platform 安装程序和集群的 pull 密钥。
创建 install-config.yaml
文件。
更改到包含安装程序的目录,然后运行以下命令:
$ ./openshift-install create install-config --dir <installation_directory> (1)
1 | 对于 <installation_directory> ,请指定存储安装程序创建的文件的目录名称。 |
指定目录时
验证该目录是否具有执行权限。此权限是必需的,用于在安装目录下运行 Terraform 二进制文件。
使用空目录。某些安装资源(例如 bootstrap X.509 证书)的有效期很短,因此您不能重复使用安装目录。如果您想从另一个集群安装中重复使用单个文件,您可以将它们复制到您的目录中。但是,安装资源的文件名可能会在不同版本之间发生变化。从早期 OpenShift Container Platform 版本复制安装文件时,请谨慎操作。
在提示符下,提供云的配置详细信息。
可选:选择要用于访问集群机器的 SSH 密钥。
对于您想要在其上执行安装调试或灾难恢复的生产 OpenShift Container Platform 集群,请指定您的 |
选择 **openstack** 作为目标平台。
指定要用于安装集群的 Red Hat OpenStack Platform (RHOSP) 外部网络名称。
指定要用于外部访问 OpenShift API 的浮动 IP 地址。
指定至少具有 16 GB RAM 的 RHOSP 实例类型,用于控制平面节点,以及具有 8 GB RAM 的实例类型,用于计算节点。
选择要将集群部署到的基础域。所有 DNS 记录都将是此基础域的子域,并且还将包括集群名称。
输入集群的名称。名称必须为 14 个字符或更少。
修改 install-config.yaml
文件。您可以在“安装配置参数”部分找到有关可用参数的更多信息。
备份 install-config.yaml
文件,以便您可以使用它来安装多个集群。
|
您现在已在您指定的目录中拥有 install-config.yaml
文件。
可选地,您可以在您选择的 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 从网络的 CIDR 块中获取 x.x.x.5,而 Ingress VIP 获取 x.x.x.7。要覆盖这些默认值,请设置 |
网络的 CIDR 范围在集群安装后不可调整。Red Hat 不提供关于在集群安装期间确定范围的直接指导,因为它需要仔细考虑每个命名空间中创建的 Pod 数量。 |
以下install-config.yaml
文件示例演示了所有可能的 Red Hat OpenStack Platform (RHOSP) 自定义选项。
此示例文件仅供参考。您必须使用安装程序获取您的install-config.yaml 文件。 |
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...
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
- cidr: fd01::/48
hostPrefix: 64
machineNetwork:
- cidr: 192.168.25.0/24
- cidr: fd2e:6f44:5dd8:c956::/64
serviceNetwork:
- 172.30.0.0/16
- fd02::/112
networkType: OVNKubernetes
platform:
openstack:
cloud: mycloud
externalNetwork: external
computeFlavor: m1.xlarge
apiVIPs:
- 192.168.25.10
- fd2e:6f44:5dd8:c956:f816:3eff:fec3:5955
ingressVIPs:
- 192.168.25.132
- fd2e:6f44:5dd8:c956:f816:3eff:fe40:aecb
controlPlanePort:
fixedIPs:
- subnet:
name: openshift-dual4
- subnet:
name: openshift-dual6
network:
name: openshift-dual
fips: false
pullSecret: '{"auths": ...}'
sshKey: ssh-ed25519 AAAA...
安装程序默认使用的 IP 范围可能与您安装 OpenShift Container Platform 时创建的 Neutron 子网不匹配。如有必要,请通过编辑安装配置文件来更新新机器的 CIDR 值。
您拥有由 OpenShift Container Platform 安装程序生成的install-config.yaml
文件。
您已安装 Python 3。
在命令行中,浏览到包含install-config.yaml
和inventory.yaml
文件的目录。
从该目录中,运行脚本编辑install-config.yaml
文件或手动更新文件。
要使用脚本设置值,请运行以下命令:
$ python -c 'import yaml
path = "install-config.yaml"
data = yaml.safe_load(open(path))
inventory = yaml.safe_load(open("inventory.yaml"))["all"]["hosts"]["localhost"]
machine_net = [{"cidr": inventory["os_subnet_range"]}]
api_vips = [inventory["os_apiVIP"]]
ingress_vips = [inventory["os_ingressVIP"]]
ctrl_plane_port = {"network": {"name": inventory["os_network"]}, "fixedIPs": [{"subnet": {"name": inventory["os_subnet"]}}]}
if inventory.get("os_subnet6"): (1)
machine_net.append({"cidr": inventory["os_subnet6_range"]})
api_vips.append(inventory["os_apiVIP6"])
ingress_vips.append(inventory["os_ingressVIP6"])
data["networking"]["networkType"] = "OVNKubernetes"
data["networking"]["clusterNetwork"].append({"cidr": inventory["cluster_network6_cidr"], "hostPrefix": inventory["cluster_network6_prefix"]})
data["networking"]["serviceNetwork"].append(inventory["service_subnet6_range"])
ctrl_plane_port["fixedIPs"].append({"subnet": {"name": inventory["os_subnet6"]}})
data["networking"]["machineNetwork"] = machine_net
data["platform"]["openstack"]["apiVIPs"] = api_vips
data["platform"]["openstack"]["ingressVIPs"] = ingress_vips
data["platform"]["openstack"]["controlPlanePort"] = ctrl_plane_port
del data["platform"]["openstack"]["externalDNS"]
open(path, "w").write(yaml.dump(data, default_flow_style=False))'
1 | 适用于双栈 (IPv4/IPv6) 环境。 |
要继续使用您自己的基础设施进行安装,请将安装配置文件中的计算机器数量设置为零。稍后,您将手动创建这些机器。
您拥有由 OpenShift Container Platform 安装程序生成的install-config.yaml
文件。
在命令行中,浏览到包含install-config.yaml
的目录。
从该目录中,运行脚本编辑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))'
要手动设置值,请打开文件并将compute.<first entry>.replicas
的值设置为0
。
您可以在 Red Hat OpenStack Platform (RHOSP) 上部署 OpenShift Container Platform 集群,其主网络接口位于提供商网络上。提供商网络通常用于使项目直接访问可用于访问互联网的公共网络。您还可以将提供商网络作为网络创建过程的一部分在项目之间共享。
RHOSP 提供商网络直接映射到数据中心中现有的物理网络。RHOSP 管理员必须创建它们。
在以下示例中,OpenShift Container Platform 工作负载使用提供商网络连接到数据中心。
安装在提供商网络上的 OpenShift Container Platform 集群不需要租户网络或浮动 IP 地址。安装程序在安装过程中不会创建这些资源。
提供商网络类型的示例包括平面(未标记)和 VLAN(802.1Q 标记)。
集群可以支持与网络类型允许的连接一样多的提供商网络连接。例如,VLAN 网络通常支持最多 4096 个连接。 |
您可以在RHOSP 文档中了解更多关于提供商和租户网络的信息。
在安装 OpenShift Container Platform 集群之前,您的 Red Hat OpenStack Platform (RHOSP) 部署和提供商网络必须满足许多条件:
RHOSP 网络服务 (Neutron) 已启用 并可通过 RHOSP 网络 API 访问。
提供商网络可以与其他租户共享。
使用带有 |
您用于安装集群的 RHOSP 项目必须拥有提供商网络以及相应的子网。
要了解有关在 RHOSP 上创建网络的更多信息,请阅读提供商网络文档。 |
如果集群由admin
用户拥有,则必须以该用户身份运行安装程序才能在网络上创建端口。
提供商网络必须由用于创建集群的 RHOSP 项目拥有。如果没有,RHOSP 计算服务 (Nova) 无法从此网络请求端口。 |
验证提供商网络是否可以访问 RHOSP 元数据服务 IP 地址,默认为169.254.169.254
。
根据您的 RHOSP SDN 和网络服务配置,您可能需要在创建子网时提供路由。例如:
$ openstack subnet create --dhcp --host-route destination=169.254.169.254/32,gateway=192.0.2.2 ...
可选:要保护网络,请创建基于角色的访问控制 (RBAC)规则,以将网络访问限制为单个项目。
您可以部署一个 OpenShift Container Platform 集群,其主网络接口位于 Red Hat OpenStack Platform (RHOSP) 提供商网络上。
您的 Red Hat OpenStack Platform (RHOSP) 部署已按照“RHOSP 集群安装的提供商网络要求”中所述进行配置。
在文本编辑器中,打开install-config.yaml
文件。
将platform.openstack.apiVIPs
属性的值设置为 API VIP 的 IP 地址。
将platform.openstack.ingressVIPs
属性的值设置为 Ingress VIP 的 IP 地址。
将platform.openstack.machinesSubnet
属性的值设置为提供商网络子网的 UUID。
将networking.machineNetwork.cidr
属性的值设置为提供商网络子网的 CIDR 块。
|
...
platform:
openstack:
apiVIPs: (1)
- 192.0.2.13
ingressVIPs: (1)
- 192.0.2.23
machinesSubnet: fa806b2f-ac49-4bce-b9db-124bc64209bf
# ...
networking:
machineNetwork:
- cidr: 192.0.2.0/24
1 | 在 OpenShift Container Platform 4.12 及更高版本中,apiVIP 和ingressVIP 配置设置已弃用。请改用列表格式在apiVIPs 和ingressVIPs 配置设置中输入值。 |
使用提供商网络作为主网络接口时,不能设置 |
部署集群时,安装程序将使用install-config.yaml
文件在提供商网络上部署集群。
您可以将其他网络(包括提供商网络)添加到 部署集群后,可以将 Pod 附加到其他网络。有关更多信息,请参见理解多个网络。 |
由于您必须修改一些集群定义文件并手动启动集群机器,因此您必须生成集群配置机器所需的 Kubernetes 清单文件和 Ignition 配置文件。
安装配置文件将转换为 Kubernetes 清单文件。清单文件将打包到 Ignition 配置文件中,稍后将使用这些文件来配置集群机器。
|
您已获得 OpenShift Container Platform 安装程序。
您已创建install-config.yaml
安装配置文件。
切换到包含 OpenShift Container Platform 安装程序的目录,并为集群生成 Kubernetes 清单文件。
$ ./openshift-install create manifests --dir <installation_directory> (1)
1 | 对于<installation_directory> ,请指定包含您创建的install-config.yaml 文件的安装目录。 |
删除定义控制平面机器、计算机器集和控制平面机器集的 Kubernetes 清单文件。
$ rm -f openshift/99_openshift-cluster-api_master-machines-*.yaml openshift/99_openshift-cluster-api_worker-machineset-*.yaml openshift/99_openshift-machine-api_master-control-plane-machine-set.yaml
由于您自己创建和管理这些资源,因此无需初始化它们。
您可以保留计算机器集文件以使用机器 API 创建计算机器,但是您必须更新对它们的引用以匹配您的环境。
检查<installation_directory>/manifests/cluster-scheduler-02-config.yml
Kubernetes 清单文件中mastersSchedulable
参数是否设置为false
。此设置可防止将 Pod 调度到控制平面机器上。
打开<installation_directory>/manifests/cluster-scheduler-02-config.yml
文件。
找到mastersSchedulable
参数并确保将其设置为false
。
保存并退出文件。
要创建 Ignition 配置文件,请从包含安装程序的目录运行以下命令。
$ ./openshift-install create ignition-configs --dir <installation_directory> (1)
1 | 对于<installation_directory> ,请指定相同的安装目录。 |
在安装目录中为引导程序、控制平面和计算节点创建 Ignition 配置文件。kubeadmin-password
和kubeconfig
文件创建在./<installation_directory>/auth
目录中。
. ├── auth │ ├── kubeadmin-password │ └── kubeconfig ├── bootstrap.ign ├── master.ign ├── metadata.json └── worker.ign
将元数据文件的infraID
键导出为环境变量。
$ export INFRA_ID=$(jq -r .infraID metadata.json)
从metadata.json 中提取infraID 键,并将其用作您创建的所有 RHOSP 资源的前缀。这样做可以避免在同一项目中进行多次部署时发生名称冲突。 |
OpenShift Container Platform 安装过程依赖于从引导程序 Ignition 配置文件创建的引导程序机器。
编辑文件并上传它。然后,创建一个 Red Hat OpenStack Platform (RHOSP) 用于下载主文件的辅助引导程序 Ignition 配置文件。
您拥有安装程序生成的引导程序 Ignition 文件bootstrap.ign
。
安装程序的元数据文件中的基础架构 ID 设置为环境变量 ($INFRA_ID
)。
如果未设置该变量,请参见**创建 Kubernetes 清单文件和 Ignition 配置文件**。
您可以使用 HTTP(S) 可访问的方式来存储引导程序 Ignition 文件。
此文档过程使用 RHOSP 镜像服务 (Glance),但您也可以使用 RHOSP 存储服务 (Swift)、Amazon S3、内部 HTTP 服务器或临时 Nova 服务器。
运行以下 Python 脚本。该脚本修改引导程序 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)
使用 RHOSP CLI 创建使用引导程序 Ignition 文件的镜像。
$ openstack image create --disk-format=raw --container-format=bare --file bootstrap.ign <image_name>
获取镜像的详细信息。
$ openstack image show <image_name>
记下file
的值;它遵循模式v2/images/<image_ID>/file
。
验证您创建的镜像是否处于活动状态。 |
检索镜像服务的公共地址。
$ openstack catalog show image
将公共地址与镜像file
值组合,并将结果保存为存储位置。该位置遵循模式<image_service_public_URL>/v2/images/<image_ID>/file
。
生成身份验证令牌并保存令牌 ID。
$ openstack token issue -c id -f value
将以下内容插入名为$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"
}
}
1 | 将ignition.config.merge.source 的值替换为引导程序 Ignition 文件存储 URL。 |
2 | 将httpHeaders 中的name 设置为"X-Auth-Token" 。 |
3 | 将httpHeaders 中的value 设置为您的令牌 ID。 |
4 | 如果引导程序 Ignition 文件服务器使用自签名证书,请包含 base64 编码的证书。 |
保存辅助 Ignition 配置文件。
引导程序 Ignition 数据将在安装过程中传递给 RHOSP。
引导程序 Ignition 文件包含敏感信息,例如clouds.yaml 凭据。确保将其存储在安全的地方,并在完成安装过程后将其删除。 |
在您自己的基础架构上 Red Hat OpenStack Platform (RHOSP) 上安装 OpenShift Container Platform 需要控制平面 Ignition 配置文件。您必须创建多个配置文件。
与引导 Ignition 配置一样,您必须为每台控制平面机器显式定义主机名。 |
安装程序元数据文件中的基础设施 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
您现在拥有三个控制平面 Ignition 文件:<INFRA_ID>-master-0-ignition.json
、<INFRA_ID>-master-1-ignition.json
和 <INFRA_ID>-master-2-ignition.json
。
更新您自己的基础架构上 Red Hat OpenStack Platform (RHOSP) 上的 OpenShift Container Platform 安装所需的网络资源。
您的机器上已安装 Python 3。
您已在“下载 playbook 依赖项”中下载了模块。
您已在“下载安装 playbook”中下载了 playbook。
可选:将外部网络值添加到 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'
...
如果您未在 |
可选:将外部网络和浮动 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'
如果您未定义 如果您未定义 有关更多信息,请参阅“启用对环境的访问”。 |
在命令行上,通过运行 security-groups.yaml
playbook 创建安全组
$ ansible-playbook -i inventory.yaml security-groups.yaml
在命令行上,通过运行 update-network-resources.yaml
playbook 更新网络资源
$ ansible-playbook -i inventory.yaml update-network-resources.yaml (1)
1 | 此 playbook 将向网络、子网、端口和路由器添加标签。它还将浮动 IP 地址附加到 API 和入口端口,并为这些端口设置安全组。 |
可选:如果要控制 Nova 服务器使用的默认解析器,请运行 RHOSP CLI 命令
$ openstack subnet set --dns-nameserver <server_1> --dns-nameserver <server_2> "$INFRA_ID-nodes"
可选:您可以使用创建的 inventory.yaml
文件来自定义安装。例如,您可以部署使用裸机机器的集群。
如果希望集群使用裸机机器,请修改 inventory.yaml
文件。您的集群可以同时拥有在裸机上运行的控制平面机器和计算机器,或者仅拥有计算机器。
请确保您的 |
RHOSP 裸机服务 (Ironic) 已启用,可通过 RHOSP 计算 API 访问。
裸机可作为 RHOSP 规格 使用。
如果您的集群运行在高于 16.1.6 且低于 16.2.4 的 RHOSP 版本上,则裸机工作节点将无法工作,这是由于 已知问题 导致元数据服务对于 OpenShift Container Platform 节点上的服务不可用。
RHOSP 网络支持虚拟机和裸机服务器连接。
如果要在预先存在的网络上部署机器,则会预配 RHOSP 子网。
如果要在安装程序预配的网络上部署机器,则 RHOSP 裸机服务 (Ironic) 能够侦听并与在租户网络上运行的预启动执行环境 (PXE) 启动机器交互。
您在 OpenShift Container Platform 安装过程中创建了 inventory.yaml
文件。
在 inventory.yaml
文件中,编辑机器的规格
如果要使用裸机控制平面机器,请将 os_flavor_master
的值更改为裸机规格。
将 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'
...
1 | 如果要使用裸机控制平面机器,请将此值更改为裸机规格。 |
2 | 将此值更改为用于计算机的裸机规格。 |
使用更新的 inventory.yaml
文件完成安装过程。部署期间创建的机器将使用您添加到文件中的规格。
安装程序在等待裸机机器启动时可能会超时。 如果安装程序超时,请重新启动,然后使用安装程序的
|
创建一个引导机器,并为其提供在 Red Hat OpenStack Platform (RHOSP) 上运行所需的网络访问权限。Red Hat 提供一个 Ansible playbook,您可以运行它来简化此过程。
您已在“下载 playbook 依赖项”中下载了模块。
您已在“下载安装 playbook”中下载了 playbook。
inventory.yaml
、common.yaml
和 bootstrap.yaml
Ansible playbook 位于公共目录中。
安装程序创建的 metadata.json
文件与 Ansible playbook 位于同一目录中。
在命令行上,将工作目录更改为 playbook 的位置。
在命令行上,运行 bootstrap.yaml
playbook
$ ansible-playbook -i inventory.yaml bootstrap.yaml
引导服务器激活后,查看日志以验证是否已接收 Ignition 文件
$ openstack console log show "$INFRA_ID-bootstrap"
使用生成的 Ignition 配置文件创建三台控制平面机器。Red Hat 提供一个 Ansible playbook,您可以运行它来简化此过程。
您已在“下载 playbook 依赖项”中下载了模块。
您已在“下载安装 playbook”中下载了 playbook。
安装程序元数据文件中的基础设施 ID 作为环境变量 ($INFRA_ID
) 设置。
inventory.yaml
、common.yaml
和 control-plane.yaml
Ansible playbook 位于公共目录中。
您拥有在“创建控制平面 Ignition 配置文件”中创建的三个 Ignition 文件。
在命令行上,将工作目录更改为 playbook 的位置。
如果控制平面 Ignition 配置文件尚未位于您的工作目录中,请将其复制到其中。
在命令行上,运行 control-plane.yaml
playbook
$ ansible-playbook -i inventory.yaml control-plane.yaml
运行以下命令来监控引导过程
$ openshift-install wait-for bootstrap-complete
您将看到确认控制平面机器正在运行并已加入集群的消息
INFO API v1.30.3 up
INFO Waiting up to 30m0s for bootstrapping to complete...
...
INFO It is now safe to remove the bootstrap resources
您可以通过导出集群 kubeconfig
文件以默认系统用户身份登录到您的集群。kubeconfig
文件包含集群信息,CLI 使用这些信息将客户端连接到正确的集群和 API 服务器。该文件特定于一个集群,并在 OpenShift Container Platform 安装期间创建。
您已部署 OpenShift Container Platform 集群。
您已安装 oc
CLI。
导出 kubeadmin
凭据
$ export KUBECONFIG=<installation_directory>/auth/kubeconfig (1)
1 | 对于 <installation_directory> ,请指定存储安装文件的目录的路径。 |
验证您可以使用导出的配置成功运行 oc
命令
$ oc whoami
system:admin
删除不再需要的引导资源。
您已在“下载 playbook 依赖项”中下载了模块。
您已在“下载安装 playbook”中下载了 playbook。
inventory.yaml
、common.yaml
和down-bootstrap.yaml
Ansible 剧本位于同一个目录下。
控制平面机器正在运行。
如果您不知道机器的状态,请参见“验证集群状态”。
在命令行上,将工作目录更改为 playbook 的位置。
在命令行上运行down-bootstrap.yaml
剧本。
$ ansible-playbook -i inventory.yaml down-bootstrap.yaml
引导端口、服务器和浮动IP地址已删除。
如果您之前没有禁用引导Ignition文件URL,请现在禁用。 |
搭建控制平面后,创建计算机器。Red Hat 提供一个 Ansible 剧本,您可以运行它来简化此过程。
您已在“下载 playbook 依赖项”中下载了模块。
您已在“下载安装 playbook”中下载了 playbook。
inventory.yaml
、common.yaml
和compute-nodes.yaml
Ansible 剧本位于同一个目录下。
安装程序创建的 metadata.json
文件与 Ansible playbook 位于同一目录中。
控制平面处于活动状态。
在命令行上,将工作目录更改为 playbook 的位置。
在命令行上运行剧本。
$ ansible-playbook -i inventory.yaml compute-nodes.yaml
批准机器的证书签名请求。
当您向集群添加机器时,会为每个添加的机器生成两个待处理的证书签名请求 (CSR)。您必须确认这些 CSR 已获批准,或者如有必要,自行批准它们。必须先批准客户端请求,然后批准服务器请求。
您已向集群添加机器。
确认集群是否识别这些机器。
$ oc get nodes
NAME STATUS ROLES AGE VERSION
master-0 Ready master 63m v1.30.3
master-1 Ready master 63m v1.30.3
master-2 Ready master 64m v1.30.3
输出列出了您创建的所有机器。
在批准一些 CSR 之前,上述输出可能不包括计算节点(也称为工作节点)。 |
查看待处理的 CSR,并确保您看到为添加到集群的每台机器的客户端请求显示“待处理”或“已批准”状态。
$ oc get csr
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
...
在此示例中,两台机器正在加入集群。您可能会在列表中看到更多已批准的 CSR。
如果 CSR 未获批准,在您添加的所有机器的待处理 CSR 都处于“待处理”状态后,批准集群机器的 CSR。
由于 CSR 会自动轮换,因此在将机器添加到集群后一小时内批准您的 CSR。如果您在一小时内未批准它们,证书将轮换,每个节点将存在两个以上的证书。您必须批准所有这些证书。批准客户端 CSR 后,Kubelet 会为服务证书创建辅助 CSR,这需要手动批准。然后,如果 Kubelet 请求具有相同参数的新证书,则 |
对于在未启用机器 API 的平台(例如裸机和其他用户预配的基础架构)上运行的集群,您必须实现一种自动批准 kubelet 服务证书请求 (CSR) 的方法。如果未批准请求,则 |
要分别批准它们,请对每个有效的 CSR 运行以下命令:
$ oc adm certificate approve <csr_name> (1)
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
在批准一些 CSR 之前,某些 Operators 可能会不可用。 |
现在您的客户端请求已获批准,您必须查看添加到集群的每台机器的服务器请求。
$ oc get csr
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
...
如果剩余的 CSR 未获批准且处于“待处理”状态,请批准集群机器的 CSR。
要分别批准它们,请对每个有效的 CSR 运行以下命令:
$ oc adm certificate approve <csr_name> (1)
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
批准所有客户端和服务器 CSR 后,机器将具有“就绪”状态。通过运行以下命令进行验证:
$ oc get nodes
NAME STATUS ROLES AGE VERSION
master-0 Ready master 73m v1.30.3
master-1 Ready master 73m v1.30.3
master-2 Ready master 74m v1.30.3
worker-0 Ready worker 11m v1.30.3
worker-1 Ready worker 11m v1.30.3
批准服务器 CSR 后,机器可能需要几分钟才能过渡到“就绪”状态。 |
验证 OpenShift Container Platform 安装是否完成。
您拥有安装程序 (openshift-install
)
在命令行中输入:
$ openshift-install --log-level debug wait-for install-complete
程序将输出控制台 URL 以及管理员的登录信息。
在 OpenShift Container Platform 4.17 中,默认运行的遥测服务用于提供有关集群运行状况和更新成功情况的指标,需要互联网访问。如果您的集群已连接到互联网,则遥测会自动运行,并且您的集群会注册到OpenShift 集群管理器。
确认您的OpenShift 集群管理器清单正确无误后(由遥测自动维护或使用 OpenShift 集群管理器手动维护),使用订阅监控在帐户或多集群级别跟踪您的 OpenShift Container Platform 订阅。
有关遥测服务的更多信息,请参见关于远程运行状况监控
如有必要,您可以选择不参与远程运行状况报告。
如果您需要启用对节点端口的外部访问,请使用节点端口配置入口集群流量。
如果您未配置 RHOSP 以通过浮动 IP 地址接受应用程序流量,请使用浮动 IP 地址配置 RHOSP 访问。