在 Azure Stack Hub 上安装
在 Azure Stack Hub 上安装 OpenShift Container Platform
摘要
第 1 章 安装方法
您可以在安装程序置备或用户置备的基础架构上安装 OpenShift Container Platform。默认安装类型使用安装程序置备的基础架构,安装程序会在其中为集群置备底层基础架构。您还可以在您置备的基础架构上安装 OpenShift Container Platform。如果不使用安装程序置备的基础架构,您必须自己管理和维护集群资源。
如需有关安装程序置备和用户置备的安装过程的更多信息,请参阅 安装过程。
1.1. 在安装程序置备的基础架构上安装集群
您可以使用以下方法在 OpenShift Container Platform 安装程序置备的 Azure Stack Hub 基础架构上安装集群:
- 安装集群 :您可以在 OpenShift Container Platform 安装程序置备的 Azure Stack Hub 基础架构上安装 OpenShift Container Platform。
1.2. 在用户置备的基础架构上安装集群
您可以使用以下方法在您置备的 Azure Stack Hub 基础架构上安装集群:
- 使用 ARM 模板在 Azure Stack Hub 上安装集群:您可以使用您提供的基础架构在 Azure Stack Hub 上安装 OpenShift Container Platform。您可以使用提供的 Azure Resource Manager(ARM)模板来协助安装。
1.3. 其他资源
第 2 章 配置 Azure Stack Hub 帐户
在安装 OpenShift Container Platform 之前,您必须配置 Microsoft Azure 帐户。
所有通过公共端点提供的 Azure 资源均存在资源名称的限制,您无法创建使用某些名称的资源。如需 Azure 限制词语列表,请参阅 Azure 文档中的解决保留资源名称错误。
2.1. Azure Stack Hub 帐户限制
OpenShift Container Platform 集群使用多个 Microsoft Azure Stack Hub 组件,Azure Stack Hub 中的默认配额类型会影响您安装 OpenShift Container Platform 集群的能力。
下表总结了 Azure Stack Hub 组件,它们的限值会影响您安装和运行 OpenShift Container Platform 集群的能力。
组件 | 默认所需的组件数 | 描述 | ||||||
---|---|---|---|---|---|---|---|---|
vCPU | 56 | 默认集群需要 56 个 vCPU,因此您必须提高帐户限值。 默认情况下,每个集群创建以下实例:
因为 bootstrap、control plane 和 worker 机器使用 若要部署更多 worker 节点、启用自动扩展、部署大型工作负载或使用不同的实例类型,您必须进一步提高帐户的 vCPU 限值,以确保集群可以部署您需要的机器。 | ||||||
VNet | 1 | 每个默认集群都需要一个虚拟网络 (VNet),此网络包括两个子网。 | ||||||
网络接口 | 7 | 每个默认集群都需要 7 个网络接口。如果您要创建更多机器或者您部署的工作负载要创建负载均衡器,则集群会使用更多的网络接口。 | ||||||
网络安全组 | 2 | 每个集群为 VNet 中的每个子网创建网络安全组。默认集群为 control plane 和计算节点子网创建网络安全组:
| ||||||
网络负载均衡器 | 3 | 每个集群都会创建以下负载均衡器:
如果您的应用程序创建了更多的 Kubernetes | ||||||
公共 IP 地址 | 2 | 公共负载均衡器使用一个公共 IP 地址。bootstrap 机器也使用一个公共 IP 地址,以便您可以在安装期间通过 SSH 连接到该机器来进行故障排除。bootstrap 节点的 IP 地址仅在安装过程中使用。 | ||||||
专用 IP 地址 | 7 | 内部负载均衡器、三台 control plane 机器中的每一台以及三台 worker 机器中的每一台各自使用一个专用 IP 地址。 |
其他资源
2.2. 在 Azure Stack Hub 中配置 DNS 区域
要在 Azure Stack Hub 上成功安装 OpenShift Container Platform,您必须在 Azure Stack Hub DNS 区域中创建 DNS 记录。DNS 区域必须对域具有权威。要将注册商的 DNS 区域委派给 Azure Stack Hub,请参阅 Microsoft 有关 Azure Stack Hub 数据中心 DNS 集成的文档。
2.3. 所需的 Azure Stack Hub 角色
Microsoft Azure Stack Hub 帐户必须具有您使用的订阅的以下角色:
-
所有者
要在 Azure 门户上设置角色,请参阅 Microsoft 文档中的通过基于角色的访问控制管理对 Azure Stack Hub 中资源的管理访问权限。
2.4. 创建服务主体
由于 OpenShift Container Platform 及其安装程序使用 Azure Resource Manager 创建 Microsoft Azure 资源,因此您必须创建一个服务主体来代表它。
先决条件
- 安装或更新 Azure CLI。
- 您的 Azure 帐户具有您所用订阅所需的角色。
流程
注册您的环境:
$ az cloud register -n AzureStackCloud --endpoint-resource-manager <endpoint> 1
- 1
- 指定 Azure Resource Manager 端点 'https://management.<region>.<fqdn>/'。
详情请查看 Microsoft 文档。
设置活跃环境:
$ az cloud set -n AzureStackCloud
更新您的环境配置,以使用 Azure Stack Hub 的特定 API 版本:
$ az cloud update --profile 2019-03-01-hybrid
登录 Azure CLI:
$ az login
如果您在多租户环境中,还必须提供租户 ID。
如果您的 Azure 帐户使用订阅,请确定您使用正确的订阅:
查看可用帐户列表并记录您要用于集群的订阅的
tenantId
值:$ az account list --refresh
输出示例
[ { "cloudName": AzureStackCloud", "id": "9bab1460-96d5-40b3-a78e-17b15e978a80", "isDefault": true, "name": "Subscription Name", "state": "Enabled", "tenantId": "6057c7e9-b3ae-489d-a54e-de3f6bf6a8ee", "user": { "name": "you@example.com", "type": "user" } } ]
查看您的活跃帐户详情,确认
tenantId
值与您要使用的订阅匹配:$ az account show
输出示例
{ "environmentName": AzureStackCloud", "id": "9bab1460-96d5-40b3-a78e-17b15e978a80", "isDefault": true, "name": "Subscription Name", "state": "Enabled", "tenantId": "6057c7e9-b3ae-489d-a54e-de3f6bf6a8ee", 1 "user": { "name": "you@example.com", "type": "user" } }
- 1
- 确保
tenantId
参数的值是正确的订阅 ID。
如果您使用的订阅不正确,请更改活跃的订阅:
$ az account set -s <subscription_id> 1
- 1
- 指定订阅 ID。
验证订阅 ID 更新:
$ az account show
输出示例
{ "environmentName": AzureStackCloud", "id": "33212d16-bdf6-45cb-b038-f6565b61edda", "isDefault": true, "name": "Subscription Name", "state": "Enabled", "tenantId": "8049c7e9-c3de-762d-a54e-dc3f6be6a7ee", "user": { "name": "you@example.com", "type": "user" } }
-
记录输出中的
tenantId
和id
参数值。OpenShift Container Platform 安装过程中需要这些值。 为您的帐户创建服务主体:
$ az ad sp create-for-rbac --role Contributor --name <service_principal> \ 1 --scopes /subscriptions/<subscription_id> 2 --years <years> 3
输出示例
Creating 'Contributor' role assignment under scope '/subscriptions/<subscription_id>' The output includes credentials that you must protect. Be sure that you do not include these credentials in your code or check the credentials into your source control. For more information, see https://aka.ms/azadsp-cli { "appId": "ac461d78-bf4b-4387-ad16-7e32e328aec6", "displayName": <service_principal>", "password": "00000000-0000-0000-0000-000000000000", "tenantId": "8049c7e9-c3de-762d-a54e-dc3f6be6a7ee" }
-
记录前面输出中
appId
和password
参数的值。OpenShift Container Platform 安装过程中需要这些值。
2.5. 后续步骤
安装 OpenShift Container Platform 集群:
- 使用自定义在 Azure Stack Hub 上安装集群
- 按照使用 ARM 模板在 Azure Stack Hub 上安装集群,使用用户置备的基础架构在 Azure Stack Hub 上安装 OpenShift Container Platform 集群。
第 3 章 安装程序置备的基础架构
3.1. 准备在 Azure Stack Hub 上安装集群
您可以通过完成以下步骤,准备在 Azure Stack Hub 上安装 OpenShift Container Platform 集群:
- 为集群验证互联网连接。
- 配置 Azure Stack Hub 帐户。
- 生成 SSH 密钥对。您可以在部署后使用此密钥对在 OpenShift Container Platform 集群的节点上进行身份验证。
- 下载安装程序。
-
安装 OpenShift CLI (
oc
)。 - Cloud Credential Operator(CCO)只支持手动模式的云供应商。因此,您必须通过为您的云供应商指定身份和访问管理(IAM) secret 来手动管理云凭证。
3.1.1. OpenShift Container Platform 互联网访问
在 OpenShift Container Platform 4.17 中,您需要访问互联网来安装集群。
您必须具有以下互联网访问权限:
- 访问 OpenShift Cluster Manager 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
- 访问 Quay.io,以获取安装集群所需的软件包。
- 获取执行集群更新所需的软件包。
如果您的集群无法直接访问互联网,则可以在置备的某些类型的基础架构上执行受限网络安装。在此过程中,您可以下载所需的内容,并使用它为镜像 registry 填充安装软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群前,您要更新镜像 registry 的内容。
3.1.2. 为集群节点 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 密钥对。
流程
如果您在本地计算机上没有可用于在集群节点上进行身份验证的现有 SSH 密钥对,请创建一个。例如,在使用 Linux 操作系统的计算机上运行以下命令:
$ ssh-keygen -t ed25519 -N '' -f <path>/<file_name> 1
- 1
- 指定新 SSH 密钥的路径和文件名,如
~/.ssh/id_ed25519
。如果您已有密钥对,请确保您的公钥位于~/.ssh
目录中。
注意如果您计划在
x86_64
、ppc64le
和s390x
架构上安装使用 RHEL 加密库(这些加密库已提交给 NIST 用于 FIPS 140-2/140-3 验证)的 OpenShift Container Platform 集群,则不要创建使用ed25519
算法的密钥。相反,创建一个使用rsa
或ecdsa
算法的密钥。查看公共 SSH 密钥:
$ cat <path>/<file_name>.pub
例如,运行以下命令来查看
~/.ssh/id_ed25519.pub
公钥:$ cat ~/.ssh/id_ed25519.pub
将 SSH 私钥身份添加到本地用户的 SSH 代理(如果尚未添加)。在集群节点上,或者要使用
./openshift-install gather
命令,需要对该密钥进行 SSH 代理管理,才能在集群节点上进行免密码 SSH 身份验证。注意在某些发行版中,自动管理默认 SSH 私钥身份,如
~/.ssh/id_rsa
和~/.ssh/id_dsa
。如果
ssh-agent
进程尚未为您的本地用户运行,请将其作为后台任务启动:$ eval "$(ssh-agent -s)"
输出示例
Agent pid 31874
注意如果集群处于 FIPS 模式,则只使用 FIPS 兼容算法来生成 SSH 密钥。密钥必须是 RSA 或 ECDSA。
将 SSH 私钥添加到
ssh-agent
:$ ssh-add <path>/<file_name> 1
- 1
- 指定 SSH 私钥的路径和文件名,如
~/.ssh/id_ed25519.pub
输出示例
Identity added: /home/<you>/<path>/<file_name> (<computer_name>)
后续步骤
- 安装 OpenShift Container Platform 时,为安装程序提供 SSH 公钥。
3.1.3. 获取安装程序
在安装 OpenShift Container Platform 前,将安装文件下载到您用于安装的主机上。
先决条件
- 您有一台运行 Linux 或 macOS 的计算机,至少有 1.2 GB 本地磁盘空间。
流程
- 进入 Red Hat Hybrid Cloud Console 上的 Cluster Type 页。如果您有红帽帐户,请使用您的凭证登录。如果没有,请创建一个帐户。
- 在页的 Run it yourself 部分中选择您的基础架构供应商。
- 从 OpenShift 安装程序下的下拉菜单中选择您的主机操作系统和架构,然后点下载安装程序。
将下载的文件保存在要存储安装配置文件的目录中。
重要- 安装程序会在用来安装集群的计算机上创建几个文件。在完成集群安装后,您必须保留安装程序和安装程序所创建的文件。删除集群需要这两个文件。
- 删除安装程序创建的文件不会删除您的集群,即使集群在安装过程中失败也是如此。要删除集群,请为特定云供应商完成 OpenShift Container Platform 卸载流程。
提取安装程序。例如,在使用 Linux 操作系统的计算机上运行以下命令:
$ tar -xvf openshift-install-linux.tar.gz
- 从 Red Hat OpenShift Cluster Manager 下载安装 pull secret。此 pull secret 允许您与所含授权机构提供的服务进行身份验证,这些服务包括为 OpenShift Container Platform 组件提供容器镜像的 Quay.io。
另外,您还可以从红帽客户门户网站检索安装程序,您可以在其中指定要下载的安装程序版本。但是,您需要有一个有效的订阅才能访问此页。
3.1.4. 安装 OpenShift CLI
您可以安装 OpenShift CLI(oc
)来使用命令行界面与 OpenShift Container Platform 进行交互。您可以在 Linux、Windows 或 macOS 上安装 oc
。
如果安装了旧版本的 oc
,则可能无法使用 OpenShift Container Platform 4.17 中的所有命令。下载并安装新版本的 oc
。
在 Linux 上安装 OpenShift CLI
您可以按照以下流程在 Linux 上安装 OpenShift CLI(oc
)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 产品变体 下拉列表中选择架构。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.17 Linux Clients 条目旁的 Download Now 来保存文件。
解包存档:
$ tar xvf <file>
将
oc
二进制文件放到PATH 中的目录中
。要查看您的
PATH
,请执行以下命令:$ echo $PATH
验证
安装 OpenShift CLI 后,可以使用
oc
命令:$ oc <command>
在 Windows 上安装 OpenShift CLI
您可以按照以下流程在 Windows 上安装 OpenShift CLI(oc
)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.17 Windows Client 条目旁的 Download Now 来保存文件。
- 使用 ZIP 程序解压存档。
将
oc
二进制文件移到PATH 中的目录中
。要查看您的
PATH
,请打开命令提示并执行以下命令:C:\> path
验证
安装 OpenShift CLI 后,可以使用
oc
命令:C:\> oc <command>
在 macOS 上安装 OpenShift CLI
您可以按照以下流程在 macOS 上安装 OpenShift CLI(oc
)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 版本 下拉列表中选择适当的版本。
点 OpenShift v4.17 macOS Clients 条目旁的 Download Now 来保存文件。
注意对于 macOS arm64,请选择 OpenShift v4.17 macOS arm64 Client 条目。
- 解包和解压存档。
将
oc
二进制文件移到 PATH 的目录中。要查看您的
PATH
,请打开终端并执行以下命令:$ echo $PATH
验证
使用
oc
命令验证安装:$ oc <command>
3.1.5. OpenShift Container Platform 的 Telemetry 访问
在 OpenShift Container Platform 4.17 中,默认运行的 Telemetry 服务提供有关集群健康状况和成功更新的指标,需要访问互联网。如果您的集群连接到互联网,Telemetry 会自动运行,而且集群会注册到 OpenShift Cluster Manager。
确认 OpenShift Cluster Manager 清单正确后,可以由 Telemetry 自动维护,也可以使用 OpenShift Cluster Manager 手动维护,使用订阅监控来跟踪帐户或多集群级别的 OpenShift Container Platform 订阅。
其他资源
3.2. 使用自定义在 Azure Stack Hub 上安装集群
在 OpenShift Container Platform 版本 4.17 中,您可以使用安装程序置备的基础架构在 Microsoft Azure Stack Hub 上安装集群。但是,您必须手动配置 install-config.yaml
文件,以指定特定于 Azure Stack Hub 的值。
虽然您可以在使用安装程序使用安装程序置备的基础架构部署集群时选择 azure
,但这个选项只支持 Azure Public Cloud。
3.2.1. 先决条件
- 您可以参阅有关 OpenShift Container Platform 安装和更新 流程的详细信息。
- 您可以阅读选择集群安装方法并为用户准备它的文档。
- 已将 Azure Stack Hub 帐户配置为托管集群。
- 如果使用防火墙,则会 将其配置为允许集群需要访问的站点。
- 您确认有大约 16 GB 的本地磁盘空间。安装集群要求您下载 RHCOS 虚拟硬盘(VHD)集群镜像,并将其上传到 Azure Stack Hub 环境,以便在部署过程中访问它。解压缩 VHD 文件需要这个数量的本地磁盘空间。
3.2.2. 上传 RHCOS 集群镜像
您必须下载 RHCOS 虚拟硬盘(VHD)集群镜像,并将其上传到 Azure Stack Hub 环境,以便在部署过程中访问它。
先决条件
- 为集群生成 Ignition 配置文件。
流程
获取 RHCOS VHD 集群镜像:
将 RHCOS VHD 的 URL 导出为环境变量。
$ export COMPRESSED_VHD_URL=$(openshift-install coreos print-stream-json | jq -r '.architectures.x86_64.artifacts.azurestack.formats."vhd.gz".disk.location')
本地下载压缩的 RHCOS VHD 文件。
$ curl -O -L ${COMPRESSED_VHD_URL}
解压缩 VHD 文件。
注意解压缩的 VHD 文件大约为 16 GB,因此请确保您的主机系统有 16 GB 的可用空间。上传后,可以删除 VHD 文件。
-
将本地 VHD 上传到 Azure Stack Hub 环境,确保 blob 已公开可用。例如,您可以使用
az
cli 或 web 门户将 VHD 上传到 blob。
3.2.3. 手动创建安装配置文件
安装集群要求您手动创建安装配置文件。
先决条件
- 您在本地机器上有一个 SSH 公钥来提供给安装程序。该密钥将用于在集群节点上进行 SSH 身份验证,以进行调试和灾难恢复。
- 已获取 OpenShift Container Platform 安装程序和集群的 pull secret。
流程
创建一个安装目录来存储所需的安装资产:
$ mkdir <installation_directory>
重要您必须创建一个目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。
自定义提供的
install-config.yaml
文件模板示例,并将其保存在<installation_directory>
中。注意此配置文件必须命名为
install-config.yaml
。进行以下修改:
- 指定所需的安装参数。
-
更新
platform.azure
部分,以指定特定于 Azure Stack Hub 的参数。 可选:更新一个或多个默认配置参数以自定义安装。
有关参数的更多信息,请参阅"安装配置参数"。
备份
install-config.yaml
文件,以便您可以使用它安装多个集群。重要install-config.yaml
文件会在安装过程的下一步中使用。现在必须备份它。
3.2.3.1. Azure Stack Hub 的自定义 install-config.yaml 文件示例
您可以自定义 install-config.yaml
文件,以指定有关 OpenShift Container Platform 集群平台的更多详情,或修改所需参数的值。
此示例 YAML 文件仅供参考。使用它作为资源,在您手动创建的安装配置文件中输入参数值。
apiVersion: v1 baseDomain: example.com 1 credentialsMode: Manual controlPlane: 2 3 name: master platform: azure: osDisk: diskSizeGB: 1024 4 diskType: premium_LRS replicas: 3 compute: 5 - name: worker platform: azure: osDisk: diskSizeGB: 512 6 diskType: premium_LRS replicas: 3 metadata: name: test-cluster 7 8 networking: clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 machineNetwork: - cidr: 10.0.0.0/16 networkType: OVNKubernetes 9 serviceNetwork: - 172.30.0.0/16 platform: azure: armEndpoint: azurestack_arm_endpoint 10 11 baseDomainResourceGroupName: resource_group 12 13 region: azure_stack_local_region 14 15 resourceGroupName: existing_resource_group 16 outboundType: Loadbalancer cloudName: AzureStackCloud 17 clusterOSimage: https://vhdsa.blob.example.example.com/vhd/rhcos-410.84.202112040202-0-azurestack.x86_64.vhd 18 19 pullSecret: '{"auths": ...}' 20 21 fips: false 22 sshKey: ssh-ed25519 AAAA... 23 additionalTrustBundle: | 24 -----BEGIN CERTIFICATE----- <MY_TRUSTED_CA_CERT> -----END CERTIFICATE-----
- 1 7 10 12 14 17 18 20
- 必需。
- 2 5
- 如果没有提供这些参数和值,安装程序会提供默认值。
- 3
controlPlane
部分是一个单个映射,但compute
部分是一系列映射。为满足不同数据结构的要求,compute
部分的第一行必须以连字符-
开头,controlPlane部分
的第一行则不以连字符开头。虽然这两个部分目前都定义了单一机器池,但未来的 OpenShift Container Platform 版本可能在安装过程中支持定义多个计算池。仅使用一个 control plane 池。- 4 6
- 您可以指定要使用的磁盘大小(以 GB 为单位)。control plane 节点的最低推荐值为 1024 GB。
- 8
- 集群的名称。
- 9
- 要安装的集群网络插件。默认值
OVNKubernetes
是唯一支持的值。 - 11
- Azure Stack Hub Operator 提供的 Azure Resource Manager 端点。
- 13
- 包含基域的 DNS 区的资源组的名称。
- 15
- Azure Stack Hub 本地区域的名称。
- 16
- 安装集群的现有资源组的名称。如果未定义,则会为集群创建新的资源组。
- 19
- Azure Stack 环境中包含 RHCOS VHD 存储 blob 的 URL。
- 21
- 对集群进行身份验证所需的 pull secret。
- 22
- 是否启用或禁用 FIPS 模式。默认情况下不启用 FIPS 模式。如果启用了 FIPS 模式,运行 OpenShift Container Platform 的 Red Hat Enterprise Linux CoreOS(RHCOS)机器会绕过默认的 Kubernetes 加密套件,并使用由 RHCOS 提供的加密模块。重要
当以 FIPS 模式运行 Red Hat Enterprise Linux (RHEL) 或 Red Hat Enterprise Linux CoreOS (RHCOS)时,OpenShift Container Platform 核心组件使用 RHEL 加密库,在 x86_64、ppc64le 和 s390x 架构上提交到 NIST FIPS 140-2/140-3 Validation。
- 23
- 您可以选择提供您用来访问集群中机器的
sshKey
值。注意对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定
ssh-agent
进程使用的 SSH 密钥。 - 24
- 如果 Azure Stack Hub 环境使用内部证书颁发机构(CA),则需要添加 CA 证书。
3.2.4. 手动管理云凭证
Cloud Credential Operator(CCO)只支持手动模式的云供应商。因此,您必须为云供应商指定身份和访问管理(IAM)secret。
流程
如果您之前还没有创建安装清单文件,请运行以下命令:
$ openshift-install create manifests --dir <installation_directory>
其中
<installation_directory>
是安装程序在其中创建文件的目录。运行以下命令,使用安装文件中的发行镜像设置
$RELEASE_IMAGE
变量:$ RELEASE_IMAGE=$(./openshift-install version | awk '/release image/ {print $3}')
运行以下命令,从 OpenShift Container Platform 发行镜像中提取
CredentialsRequest
自定义资源 (CR) 列表:$ oc adm release extract \ --from=$RELEASE_IMAGE \ --credentials-requests \ --included \1 --install-config=<path_to_directory_with_installation_configuration>/install-config.yaml \2 --to=<path_to_directory_for_credentials_requests> 3
此命令为每个
CredentialsRequest
对象创建一个 YAML 文件。CredentialsRequest
对象示例apiVersion: cloudcredential.openshift.io/v1 kind: CredentialsRequest metadata: name: <component_credentials_request> namespace: openshift-cloud-credential-operator ... spec: providerSpec: apiVersion: cloudcredential.openshift.io/v1 kind: AzureProviderSpec roleBindings: - role: Contributor ...
在之前生成的
openshift-install
清单目录中为 secret 创建 YAML 文件。secret 必须使用在spec.secretRef
中为每个CredentialsRequest
定义的命名空间和 secret 名称存储。带有 secret 的
CredentialsRequest
对象示例apiVersion: cloudcredential.openshift.io/v1 kind: CredentialsRequest metadata: name: <component_credentials_request> namespace: openshift-cloud-credential-operator ... spec: providerSpec: apiVersion: cloudcredential.openshift.io/v1 kind: AzureProviderSpec roleBindings: - role: Contributor ... secretRef: name: <component_secret> namespace: <component_namespace> ...
Secret
对象示例apiVersion: v1 kind: Secret metadata: name: <component_secret> namespace: <component_namespace> data: azure_subscription_id: <base64_encoded_azure_subscription_id> azure_client_id: <base64_encoded_azure_client_id> azure_client_secret: <base64_encoded_azure_client_secret> azure_tenant_id: <base64_encoded_azure_tenant_id> azure_resource_prefix: <base64_encoded_azure_resource_prefix> azure_resourcegroup: <base64_encoded_azure_resourcegroup> azure_region: <base64_encoded_azure_region>
在升级使用手动维护凭证的集群前,您必须确保 CCO 处于可升级状态。
其他资源
3.2.5. 配置集群以使用内部 CA
如果 Azure Stack Hub 环境使用内部证书颁发机构(CA),请更新 cluster-proxy-01-config.yaml 文件
将集群配置为使用内部 CA。
先决条件
-
创建
install-config.yaml
文件,并以.pem
格式指定证书信任捆绑包。 - 创建集群清单。
流程
-
从安装程序创建文件的目录中,前往
manifests
目录。 将
user-ca-bundle
添加到spec.trustedCA.name
字段中。cluster-proxy-01-config.yaml
文件示例apiVersion: config.openshift.io/v1 kind: Proxy metadata: creationTimestamp: null name: cluster spec: trustedCA: name: user-ca-bundle status: {}
-
可选:备份
manifests/ cluster-proxy-01-config.yaml
文件。在部署集群时,安装程序会消耗manifests/
目录。
3.2.6. 部署集群
您可以在兼容云平台上安装 OpenShift Container Platform。
在初始安装过程中,您只能运行安装程序的 create cluster
命令一次。
先决条件
- 您已使用托管集群的云平台配置了帐户。
- 您有 OpenShift Container Platform 安装程序和集群的 pull secret。
- 已确认主机上的云供应商帐户具有部署集群的正确权限。权限不正确的帐户会导致安装过程失败,并显示包括缺失权限的错误消息。
流程
进入包含安装程序的目录并初始化集群部署:
$ ./openshift-install create cluster --dir <installation_directory> \ 1 --log-level=info 2
验证
当集群部署成功完成时:
-
终端会显示用于访问集群的说明,包括指向 Web 控制台和
kubeadmin
用户的凭证的链接。 -
凭证信息还会输出到
<installation_directory>/.openshift_install.log
.
不要删除安装程序或安装程序所创建的文件。需要这两者才能删除集群。
输出示例
... INFO Install complete! INFO To access the cluster as the system:admin user when using 'oc', run 'export KUBECONFIG=/home/myuser/install_dir/auth/kubeconfig' INFO Access the OpenShift web-console here: https://console-openshift-console.apps.mycluster.example.com INFO Login to the console with user: "kubeadmin", and password: "password" INFO Time elapsed: 36m22s
-
安装程序生成的 Ignition 配置文件包含在 24 小时后过期的证书,然后在过期时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的
node-bootstrapper
证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。 - 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。
3.2.7. 使用 CLI 登录集群
您可以通过导出集群 kubeconfig
文件,以默认系统用户身份登录集群。kubeconfig
文件包含有关集群的信息,供 CLI 用于将客户端连接到正确的集群和 API 服务器。该文件特定于集群,在 OpenShift Container Platform 安装过程中创建。
先决条件
- 已部署 OpenShift Container Platform 集群。
-
已安装
oc
CLI。
流程
导出
kubeadmin
凭证:$ export KUBECONFIG=<installation_directory>/auth/kubeconfig 1
- 1
- 对于
<installation_directory>
,请指定安装文件保存到的目录的路径。
验证您可以使用导出的配置成功运行
oc
命令:$ oc whoami
输出示例
system:admin
3.2.8. 使用 Web 控制台登录到集群
kubeadmin
用户默认在 OpenShift Container Platform 安装后存在。您可以使用 OpenShift Container Platform Web 控制台以 kubeadmin
用户身份登录集群。
先决条件
- 有访问安装主机的访问权限。
- 您完成了集群安装,所有集群 Operator 都可用。
流程
从安装主机上的
kubeadmin
-password
文件中获取 kubeadmin 用户的密码:$ cat <installation_directory>/auth/kubeadmin-password
注意另外,您还可以从安装主机上的
<installation_directory>/.openshift_install.log
日志文件获取kubeadmin
密码。列出 OpenShift Container Platform Web 控制台路由:
$ oc get routes -n openshift-console | grep 'console-openshift'
注意另外,您还可以从安装主机上的
<installation_directory>/.openshift_install.log 日志
文件获取 OpenShift Container Platform 路由。输出示例
console console-openshift-console.apps.<cluster_name>.<base_domain> console https reencrypt/Redirect None
-
在 Web 浏览器中导航到上一命令输出中包括的路由,以
kubeadmin
用户身份登录。
其他资源
3.2.9. 后续步骤
- 验证安装
- 自定义集群
- 可选: 选择不使用远程健康报告。
- 可选: 删除云供应商凭证
3.3. 使用网络自定义在 Azure Stack Hub 上安装集群
在 OpenShift Container Platform 版本 4.17 中,您可以使用自定义的网络配置在安装程序在 Azure Stack Hub 上置备的基础架构上安装集群。通过自定义网络配置,您的集群可以与环境中现有的 IP 地址分配共存,并与现有的 MTU 和 VXLAN 配置集成。
虽然您可以在使用安装程序使用安装程序置备的基础架构部署集群时选择 azure
,但这个选项只支持 Azure Public Cloud。
3.3.1. 先决条件
- 您可以参阅有关 OpenShift Container Platform 安装和更新 流程的详细信息。
- 您可以阅读选择集群安装方法并为用户准备它的文档。
- 已将 Azure Stack Hub 帐户配置为托管集群。
- 如果使用防火墙,则会 将其配置为允许集群需要访问的站点。
- 您确认有大约 16 GB 的本地磁盘空间。安装集群要求您下载 RHCOS 虚拟硬盘(VHD)集群镜像,并将其上传到 Azure Stack Hub 环境,以便在部署过程中访问它。解压缩 VHD 文件需要这个数量的本地磁盘空间。
3.3.2. 上传 RHCOS 集群镜像
您必须下载 RHCOS 虚拟硬盘(VHD)集群镜像,并将其上传到 Azure Stack Hub 环境,以便在部署过程中访问它。
先决条件
- 为集群生成 Ignition 配置文件。
流程
获取 RHCOS VHD 集群镜像:
将 RHCOS VHD 的 URL 导出为环境变量。
$ export COMPRESSED_VHD_URL=$(openshift-install coreos print-stream-json | jq -r '.architectures.x86_64.artifacts.azurestack.formats."vhd.gz".disk.location')
本地下载压缩的 RHCOS VHD 文件。
$ curl -O -L ${COMPRESSED_VHD_URL}
解压缩 VHD 文件。
注意解压缩的 VHD 文件大约为 16 GB,因此请确保您的主机系统有 16 GB 的可用空间。上传后,可以删除 VHD 文件。
-
将本地 VHD 上传到 Azure Stack Hub 环境,确保 blob 已公开可用。例如,您可以使用
az
cli 或 web 门户将 VHD 上传到 blob。
3.3.3. 手动创建安装配置文件
安装集群要求您手动创建安装配置文件。
先决条件
- 您在本地机器上有一个 SSH 公钥来提供给安装程序。该密钥将用于在集群节点上进行 SSH 身份验证,以进行调试和灾难恢复。
- 已获取 OpenShift Container Platform 安装程序和集群的 pull secret。
流程
创建一个安装目录来存储所需的安装资产:
$ mkdir <installation_directory>
重要您必须创建一个目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。
自定义提供的
install-config.yaml
文件模板示例,并将其保存在<installation_directory>
中。注意此配置文件必须命名为
install-config.yaml
。进行以下修改:
- 指定所需的安装参数。
-
更新
platform.azure
部分,以指定特定于 Azure Stack Hub 的参数。 可选:更新一个或多个默认配置参数以自定义安装。
有关参数的更多信息,请参阅"安装配置参数"。
备份
install-config.yaml
文件,以便您可以使用它安装多个集群。重要install-config.yaml
文件会在安装过程的下一步中使用。现在必须备份它。
3.3.3.1. Azure Stack Hub 的自定义 install-config.yaml 文件示例
您可以自定义 install-config.yaml
文件,以指定有关 OpenShift Container Platform 集群平台的更多详情,或修改所需参数的值。
此示例 YAML 文件仅供参考。使用它作为资源,在您手动创建的安装配置文件中输入参数值。
apiVersion: v1 baseDomain: example.com 1 credentialsMode: Manual controlPlane: 2 3 name: master platform: azure: osDisk: diskSizeGB: 1024 4 diskType: premium_LRS replicas: 3 compute: 5 - name: worker platform: azure: osDisk: diskSizeGB: 512 6 diskType: premium_LRS replicas: 3 metadata: name: test-cluster 7 8 networking: clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 machineNetwork: - cidr: 10.0.0.0/16 networkType: OVNKubernetes 9 serviceNetwork: - 172.30.0.0/16 platform: azure: armEndpoint: azurestack_arm_endpoint 10 11 baseDomainResourceGroupName: resource_group 12 13 region: azure_stack_local_region 14 15 resourceGroupName: existing_resource_group 16 outboundType: Loadbalancer cloudName: AzureStackCloud 17 clusterOSimage: https://vhdsa.blob.example.example.com/vhd/rhcos-410.84.202112040202-0-azurestack.x86_64.vhd 18 19 pullSecret: '{"auths": ...}' 20 21 fips: false 22 sshKey: ssh-ed25519 AAAA... 23 additionalTrustBundle: | 24 -----BEGIN CERTIFICATE----- <MY_TRUSTED_CA_CERT> -----END CERTIFICATE-----
- 1 7 10 12 14 17 18 20
- 必需。
- 2 5
- 如果没有提供这些参数和值,安装程序会提供默认值。
- 3
controlPlane
部分是一个单个映射,但compute
部分是一系列映射。为满足不同数据结构的要求,compute
部分的第一行必须以连字符-
开头,controlPlane部分
的第一行则不以连字符开头。虽然这两个部分目前都定义了单一机器池,但未来的 OpenShift Container Platform 版本可能在安装过程中支持定义多个计算池。仅使用一个 control plane 池。- 4 6
- 您可以指定要使用的磁盘大小(以 GB 为单位)。control plane 节点的最低推荐值为 1024 GB。
- 8
- 集群的名称。
- 9
- 要安装的集群网络插件。默认值
OVNKubernetes
是唯一支持的值。 - 11
- Azure Stack Hub Operator 提供的 Azure Resource Manager 端点。
- 13
- 包含基域的 DNS 区的资源组的名称。
- 15
- Azure Stack Hub 本地区域的名称。
- 16
- 安装集群的现有资源组的名称。如果未定义,则会为集群创建新的资源组。
- 19
- Azure Stack 环境中包含 RHCOS VHD 存储 blob 的 URL。
- 21
- 对集群进行身份验证所需的 pull secret。
- 22
- 是否启用或禁用 FIPS 模式。默认情况下不启用 FIPS 模式。如果启用了 FIPS 模式,运行 OpenShift Container Platform 的 Red Hat Enterprise Linux CoreOS(RHCOS)机器会绕过默认的 Kubernetes 加密套件,并使用由 RHCOS 提供的加密模块。重要
当以 FIPS 模式运行 Red Hat Enterprise Linux (RHEL) 或 Red Hat Enterprise Linux CoreOS (RHCOS)时,OpenShift Container Platform 核心组件使用 RHEL 加密库,在 x86_64、ppc64le 和 s390x 架构上提交到 NIST FIPS 140-2/140-3 Validation。
- 23
- 您可以选择提供您用来访问集群中机器的
sshKey
值。注意对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定
ssh-agent
进程使用的 SSH 密钥。 - 24
- 如果 Azure Stack Hub 环境使用内部证书颁发机构(CA),则需要添加 CA 证书。
3.3.4. 手动管理云凭证
Cloud Credential Operator(CCO)只支持手动模式的云供应商。因此,您必须为云供应商指定身份和访问管理(IAM)secret。
流程
如果您之前还没有创建安装清单文件,请运行以下命令:
$ openshift-install create manifests --dir <installation_directory>
其中
<installation_directory>
是安装程序在其中创建文件的目录。运行以下命令,使用安装文件中的发行镜像设置
$RELEASE_IMAGE
变量:$ RELEASE_IMAGE=$(./openshift-install version | awk '/release image/ {print $3}')
运行以下命令,从 OpenShift Container Platform 发行镜像中提取
CredentialsRequest
自定义资源 (CR) 列表:$ oc adm release extract \ --from=$RELEASE_IMAGE \ --credentials-requests \ --included \1 --install-config=<path_to_directory_with_installation_configuration>/install-config.yaml \2 --to=<path_to_directory_for_credentials_requests> 3
此命令为每个
CredentialsRequest
对象创建一个 YAML 文件。CredentialsRequest
对象示例apiVersion: cloudcredential.openshift.io/v1 kind: CredentialsRequest metadata: name: <component_credentials_request> namespace: openshift-cloud-credential-operator ... spec: providerSpec: apiVersion: cloudcredential.openshift.io/v1 kind: AzureProviderSpec roleBindings: - role: Contributor ...
在之前生成的
openshift-install
清单目录中为 secret 创建 YAML 文件。secret 必须使用在spec.secretRef
中为每个CredentialsRequest
定义的命名空间和 secret 名称存储。带有 secret 的
CredentialsRequest
对象示例apiVersion: cloudcredential.openshift.io/v1 kind: CredentialsRequest metadata: name: <component_credentials_request> namespace: openshift-cloud-credential-operator ... spec: providerSpec: apiVersion: cloudcredential.openshift.io/v1 kind: AzureProviderSpec roleBindings: - role: Contributor ... secretRef: name: <component_secret> namespace: <component_namespace> ...
Secret
对象示例apiVersion: v1 kind: Secret metadata: name: <component_secret> namespace: <component_namespace> data: azure_subscription_id: <base64_encoded_azure_subscription_id> azure_client_id: <base64_encoded_azure_client_id> azure_client_secret: <base64_encoded_azure_client_secret> azure_tenant_id: <base64_encoded_azure_tenant_id> azure_resource_prefix: <base64_encoded_azure_resource_prefix> azure_resourcegroup: <base64_encoded_azure_resourcegroup> azure_region: <base64_encoded_azure_region>
在升级使用手动维护凭证的集群前,您必须确保 CCO 处于可升级状态。
3.3.5. 配置集群以使用内部 CA
如果 Azure Stack Hub 环境使用内部证书颁发机构(CA),请更新 cluster-proxy-01-config.yaml 文件
将集群配置为使用内部 CA。
先决条件
-
创建
install-config.yaml
文件,并以.pem
格式指定证书信任捆绑包。 - 创建集群清单。
流程
-
从安装程序创建文件的目录中,前往
manifests
目录。 将
user-ca-bundle
添加到spec.trustedCA.name
字段中。cluster-proxy-01-config.yaml
文件示例apiVersion: config.openshift.io/v1 kind: Proxy metadata: creationTimestamp: null name: cluster spec: trustedCA: name: user-ca-bundle status: {}
-
可选:备份
manifests/ cluster-proxy-01-config.yaml
文件。在部署集群时,安装程序会消耗manifests/
目录。
3.3.6. 网络配置阶段
OpenShift Container Platform 安装前有两个阶段,您可以在其中自定义网络配置。
- 第 1 阶段
在创建清单文件前,您可以自定义
install-config.yaml
文件中的以下与网络相关的字段:-
networking.networkType
-
networking.clusterNetwork
-
networking.serviceNetwork
networking.machineNetwork
如需更多信息,请参阅"安装配置参数"。
注意将
networking.machineNetwork
设置为与首选子网所在的无类别域间路由 (CIDR) 匹配。重要CIDR 范围
172.17.0.0/16
由libVirt
保留。对于集群中的网络,您无法使用与172.17.0.0/16
CIDR 范围重叠的任何其他 CIDR 范围。
-
- 第 2 阶段
-
运行
openshift-install create 清单创建
清单文件后,您可以只使用您要修改的字段定义自定义 Cluster Network Operator 清单。您可以使用 清单指定高级网络配置。
在阶段 2 中,您无法覆盖 install-config.yaml
文件中在第 1 阶段指定的值。但是,您可以在第 2 阶段自定义网络插件。
3.3.7. 指定高级网络配置
您可以使用网络插件的高级网络配置将集群集成到现有网络环境中。
您只能在安装集群前指定高级网络配置。
不支持通过修改安装程序创建的 OpenShift Container Platform 清单文件来自定义网络配置。支持应用您创建的清单文件,如以下流程中所示。
先决条件
-
您已创建
install-config.yaml
文件并完成对其所做的任何修改。
流程
进入包含安装程序的目录并创建清单:
$ ./openshift-install create manifests --dir <installation_directory> 1
- 1
<installation_directory>
指定包含集群的install-config.yaml
文件的目录名称。
在
<installation_directory>/manifests/
目录中为高级网络配置创建一个名为 cluster-network-03-config.yml
的 stub 清单文件:apiVersion: operator.openshift.io/v1 kind: Network metadata: name: cluster spec:
在
cluster-network-03-config.yml
文件中指定集群的高级网络配置,如下例所示:为 OVN-Kubernetes 网络供应商启用 IPsec
apiVersion: operator.openshift.io/v1 kind: Network metadata: name: cluster spec: defaultNetwork: ovnKubernetesConfig: ipsecConfig: mode: Full
-
可选:备份
manifests/cluster-network-03-config.yml
文件。创建 Ignition 配置文件时,安装程序会使用manifests/
目录。
3.3.8. Cluster Network Operator 配置
集群网络的配置作为 Cluster Network Operator(CNO)配置的一部分指定,并存储在名为 cluster
的自定义资源(CR)对象中。CR 指定 operator.openshift.io
API 组中的 Network
API 的字段。
CNO 配置在集群安装过程中从 Network.config.openshift.io
API 组中的 Network
API 继承以下字段:
clusterNetwork
- 从中分配 Pod IP 地址的 IP 地址池。
serviceNetwork
- 服务的 IP 地址池.
defaultNetwork.type
-
集群网络插件。
OVNKubernetes
是安装期间唯一支持的插件。
您可以通过在名为 cluster
的 CNO 对象中设置 defaultNetwork
对象的字段来为集群指定集群网络插件配置。
3.3.8.1. Cluster Network Operator 配置对象
下表中描述了 Cluster Network Operator(CNO)的字段:
字段 | 类型 | 描述 |
---|---|---|
|
|
CNO 对象的名称。这个名称始终是 |
|
| 用于指定从哪些 IP 地址块分配 Pod IP 地址以及集群中每个节点的子网前缀长度的列表。例如: spec: clusterNetwork: - cidr: 10.128.0.0/19 hostPrefix: 23 - cidr: 10.128.32.0/19 hostPrefix: 23 |
|
| 服务的 IP 地址块。OVN-Kubernetes 网络插件只支持服务网络的一个 IP 地址块。例如: spec: serviceNetwork: - 172.30.0.0/14
您只能在创建清单前在 |
|
| 为集群网络配置网络插件。 |
|
| 此对象的字段指定 kube-proxy 配置。如果使用 OVN-Kubernetes 集群网络供应商,则 kube-proxy 配置不会起作用。 |
defaultNetwork 对象配置
下表列出了 defaultNetwork
对象的值:
字段 | 类型 | 描述 |
---|---|---|
|
|
注意 OpenShift Container Platform 默认使用 OVN-Kubernetes 网络插件。OpenShift SDN 不再作为新集群的安装选择提供。 |
|
| 此对象仅对 OVN-Kubernetes 网络插件有效。 |
配置 OVN-Kubernetes 网络插件
下表描述了 OVN-Kubernetes 网络插件的配置字段:
字段 | 类型 | 描述 |
---|---|---|
|
| Geneve(通用网络虚拟化封装)覆盖网络的最大传输单元(MTU)。这根据主网络接口的 MTU 自动探测。您通常不需要覆盖检测到的 MTU。 如果自动探测的值不是您期望的值,请确认节点上主网络接口上的 MTU 是否正确。您不能使用这个选项更改节点上主网络接口的 MTU 值。
如果集群中不同节点需要不同的 MTU 值,则必须将此值设置为 |
|
|
用于所有 Geneve 数据包的端口。默认值为 |
|
| 指定用于自定义 IPsec 配置的配置对象。 |
|
| 为 IPv4 设置指定配置对象。 |
|
| 为 IPv6 设置指定配置对象。 |
|
| 指定用于自定义网络策略审计日志的配置对象。如果未设置,则使用默认的审计日志设置。 |
|
| 可选:指定一个配置对象来自定义如何将出口流量发送到节点网关。 注意 在迁移出口流量时,工作负载和服务流量会受到一定影响,直到 Cluster Network Operator (CNO) 成功推出更改。 |
字段 | 类型 | 描述 |
---|---|---|
| 字符串 |
如果您的现有网络基础架构与
默认值为 |
| 字符串 |
如果您的现有网络基础架构与
默认值为 |
字段 | 类型 | 描述 |
---|---|---|
| 字符串 |
如果您的现有网络基础架构与
默认值为 |
| 字符串 |
如果您的现有网络基础架构与
默认值为 |
字段 | 类型 | 描述 |
---|---|---|
| 整数 |
每个节点每秒生成一次的消息数量上限。默认值为每秒 |
| 整数 |
审计日志的最大大小,以字节为单位。默认值为 |
| 整数 | 保留的日志文件的最大数量。 |
| 字符串 | 以下附加审计日志目标之一:
|
| 字符串 |
syslog 工具,如 as |
字段 | 类型 | 描述 |
---|---|---|
|
|
将此字段设置为
此字段与 Open vSwitch 硬件卸载功能有交互。如果将此字段设置为 |
|
|
您可以使用 |
|
| 可选:指定一个对象来为主机配置内部 OVN-Kubernetes 伪装地址,以服务 IPv4 地址的流量。 |
|
| 可选:指定一个对象来为主机配置内部 OVN-Kubernetes 伪装地址,以服务 IPv6 地址的流量。 |
字段 | 类型 | 描述 |
---|---|---|
|
|
内部使用的伪装 IPv4 地址,以启用主机服务流量。主机配置了这些 IP 地址和共享网关网桥接口。默认值为 重要
对于 OpenShift Container Platform 4.17 及更新的版本,集群使用 |
字段 | 类型 | 描述 |
---|---|---|
|
|
内部使用的伪装 IPv6 地址,以启用主机服务流量。主机配置了这些 IP 地址和共享网关网桥接口。默认值为 重要
对于 OpenShift Container Platform 4.17 及更新的版本,集群使用 |
字段 | 类型 | 描述 |
---|---|---|
|
| 指定 IPsec 实现的行为。必须是以下值之一:
|
启用 IPSec 的 OVN-Kubernetes 配置示例
defaultNetwork: type: OVNKubernetes ovnKubernetesConfig: mtu: 1400 genevePort: 6081 ipsecConfig: mode: Full
3.3.9. 使用 OVN-Kubernetes 配置混合网络
您可以将集群配置为使用 OVN-Kubernetes 网络插件的混合网络。这允许支持不同节点网络配置的混合集群。
此配置是在同一集群中同时运行 Linux 和 Windows 节点所必需的。
先决条件
-
您在
install-config.yaml
文件中为networking.networkType
参数定义了OVNKubernetes
。如需更多信息,请参阅有关在所选云供应商上配置 OpenShift Container Platform 网络自定义的安装文档。
流程
进入包含安装程序的目录并创建清单:
$ ./openshift-install create manifests --dir <installation_directory>
其中:
<installation_directory>
-
指定包含集群的
install-config.yaml
文件的目录名称。
在
<installation_directory>/manifests/
目录中为高级网络配置创建一个名为 cluster-network-03-config.yml
的 stub 清单文件:$ cat <<EOF > <installation_directory>/manifests/cluster-network-03-config.yml apiVersion: operator.openshift.io/v1 kind: Network metadata: name: cluster spec: EOF
其中:
<installation_directory>
-
指定包含集群的
manifests/
目录的目录名称。
在编辑器中打开
cluster-network-03-config.yml
文件,并使用混合网络配置 OVN-Kubernetes,如下例所示:指定混合网络配置
apiVersion: operator.openshift.io/v1 kind: Network metadata: name: cluster spec: defaultNetwork: ovnKubernetesConfig: hybridOverlayConfig: hybridClusterNetwork: 1 - cidr: 10.132.0.0/14 hostPrefix: 23 hybridOverlayVXLANPort: 9898 2
- 1
- 指定用于额外覆盖网络上节点的 CIDR 配置。
hybridClusterNetwork
CIDR 不能与clusterNetwork
CIDR 重叠。 - 2
- 为额外覆盖网络指定自定义 VXLAN 端口。这是在 vSphere 上安装的集群中运行 Windows 节点所需要的,且不得为任何其他云供应商配置。自定义端口可以是除默认
4789
端口外的任何打开的端口。有关此要求的更多信息,请参阅 Microsoft 文档中的 Pod 到主机间的 pod 连接性。
注意Windows Server Long-Term Servicing Channel(LTSC):Windows Server 2019 在带有自定义
hybridOverlayVXLANPort
值的集群中不被支持,因为这个 Windows server 版本不支持选择使用自定义的 VXLAN 端口。-
保存
cluster-network-03-config.yml
文件,再退出文本编辑器。 -
可选:备份
manifests/cluster-network-03-config.yml
文件。创建集群时,安装程序会删除manifests/
目录。
有关在同一集群中使用 Linux 和 Windows 节点的更多信息,请参阅了解 Windows 容器工作负载。
3.3.10. 部署集群
您可以在兼容云平台上安装 OpenShift Container Platform。
在初始安装过程中,您只能运行安装程序的 create cluster
命令一次。
先决条件
- 您已使用托管集群的云平台配置了帐户。
- 您有 OpenShift Container Platform 安装程序和集群的 pull secret。
- 已确认主机上的云供应商帐户具有部署集群的正确权限。权限不正确的帐户会导致安装过程失败,并显示包括缺失权限的错误消息。
流程
进入包含安装程序的目录并初始化集群部署:
$ ./openshift-install create cluster --dir <installation_directory> \ 1 --log-level=info 2
验证
当集群部署成功完成时:
-
终端会显示用于访问集群的说明,包括指向 Web 控制台和
kubeadmin
用户的凭证的链接。 -
凭证信息还会输出到
<installation_directory>/.openshift_install.log
.
不要删除安装程序或安装程序所创建的文件。需要这两者才能删除集群。
输出示例
... INFO Install complete! INFO To access the cluster as the system:admin user when using 'oc', run 'export KUBECONFIG=/home/myuser/install_dir/auth/kubeconfig' INFO Access the OpenShift web-console here: https://console-openshift-console.apps.mycluster.example.com INFO Login to the console with user: "kubeadmin", and password: "password" INFO Time elapsed: 36m22s
-
安装程序生成的 Ignition 配置文件包含在 24 小时后过期的证书,然后在过期时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的
node-bootstrapper
证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。 - 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。
3.3.11. 使用 CLI 登录集群
您可以通过导出集群 kubeconfig
文件,以默认系统用户身份登录集群。kubeconfig
文件包含有关集群的信息,供 CLI 用于将客户端连接到正确的集群和 API 服务器。该文件特定于集群,在 OpenShift Container Platform 安装过程中创建。
先决条件
- 已部署 OpenShift Container Platform 集群。
-
已安装
oc
CLI。
流程
导出
kubeadmin
凭证:$ export KUBECONFIG=<installation_directory>/auth/kubeconfig 1
- 1
- 对于
<installation_directory>
,请指定安装文件保存到的目录的路径。
验证您可以使用导出的配置成功运行
oc
命令:$ oc whoami
输出示例
system:admin
3.3.12. 使用 Web 控制台登录到集群
kubeadmin
用户默认在 OpenShift Container Platform 安装后存在。您可以使用 OpenShift Container Platform Web 控制台以 kubeadmin
用户身份登录集群。
先决条件
- 有访问安装主机的访问权限。
- 您完成了集群安装,所有集群 Operator 都可用。
流程
从安装主机上的
kubeadmin
-password
文件中获取 kubeadmin 用户的密码:$ cat <installation_directory>/auth/kubeadmin-password
注意另外,您还可以从安装主机上的
<installation_directory>/.openshift_install.log
日志文件获取kubeadmin
密码。列出 OpenShift Container Platform Web 控制台路由:
$ oc get routes -n openshift-console | grep 'console-openshift'
注意另外,您还可以从安装主机上的
<installation_directory>/.openshift_install.log 日志
文件获取 OpenShift Container Platform 路由。输出示例
console console-openshift-console.apps.<cluster_name>.<base_domain> console https reencrypt/Redirect None
-
在 Web 浏览器中导航到上一命令输出中包括的路由,以
kubeadmin
用户身份登录。
其他资源
3.3.13. 后续步骤
- 验证安装
- 自定义集群
- 可选: 选择不使用远程健康报告。
- 可选: 删除云供应商凭证
第 4 章 用户置备的基础架构
4.1. 准备在 Azure Stack Hub 上安装集群
您可以通过完成以下步骤,准备在 Azure Stack Hub 上安装 OpenShift Container Platform 集群:
- 为集群验证互联网连接。
- 配置 Azure Stack Hub 帐户。
- 生成 SSH 密钥对。您可以在部署后使用此密钥对在 OpenShift Container Platform 集群的节点上进行身份验证。
- 下载安装程序。
-
安装 OpenShift CLI (
oc
)。
4.1.1. OpenShift Container Platform 互联网访问
在 OpenShift Container Platform 4.17 中,您需要访问互联网来安装集群。
您必须具有以下互联网访问权限:
- 访问 OpenShift Cluster Manager 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
- 访问 Quay.io,以获取安装集群所需的软件包。
- 获取执行集群更新所需的软件包。
如果您的集群无法直接访问互联网,则可以在置备的某些类型的基础架构上执行受限网络安装。在此过程中,您可以下载所需的内容,并使用它为镜像 registry 填充安装软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群前,您要更新镜像 registry 的内容。
4.1.2. 为集群节点 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 密钥对。
流程
如果您在本地计算机上没有可用于在集群节点上进行身份验证的现有 SSH 密钥对,请创建一个。例如,在使用 Linux 操作系统的计算机上运行以下命令:
$ ssh-keygen -t ed25519 -N '' -f <path>/<file_name> 1
- 1
- 指定新 SSH 密钥的路径和文件名,如
~/.ssh/id_ed25519
。如果您已有密钥对,请确保您的公钥位于~/.ssh
目录中。
注意如果您计划在
x86_64
、ppc64le
和s390x
架构上安装使用 RHEL 加密库(这些加密库已提交给 NIST 用于 FIPS 140-2/140-3 验证)的 OpenShift Container Platform 集群,则不要创建使用ed25519
算法的密钥。相反,创建一个使用rsa
或ecdsa
算法的密钥。查看公共 SSH 密钥:
$ cat <path>/<file_name>.pub
例如,运行以下命令来查看
~/.ssh/id_ed25519.pub
公钥:$ cat ~/.ssh/id_ed25519.pub
将 SSH 私钥身份添加到本地用户的 SSH 代理(如果尚未添加)。在集群节点上,或者要使用
./openshift-install gather
命令,需要对该密钥进行 SSH 代理管理,才能在集群节点上进行免密码 SSH 身份验证。注意在某些发行版中,自动管理默认 SSH 私钥身份,如
~/.ssh/id_rsa
和~/.ssh/id_dsa
。如果
ssh-agent
进程尚未为您的本地用户运行,请将其作为后台任务启动:$ eval "$(ssh-agent -s)"
输出示例
Agent pid 31874
注意如果集群处于 FIPS 模式,则只使用 FIPS 兼容算法来生成 SSH 密钥。密钥必须是 RSA 或 ECDSA。
将 SSH 私钥添加到
ssh-agent
:$ ssh-add <path>/<file_name> 1
- 1
- 指定 SSH 私钥的路径和文件名,如
~/.ssh/id_ed25519.pub
输出示例
Identity added: /home/<you>/<path>/<file_name> (<computer_name>)
后续步骤
- 安装 OpenShift Container Platform 时,为安装程序提供 SSH 公钥。
4.1.3. 获取安装程序
在安装 OpenShift Container Platform 前,将安装文件下载到您用于安装的主机上。
先决条件
- 您有一台运行 Linux 或 macOS 的计算机,至少有 1.2 GB 本地磁盘空间。
流程
- 进入 Red Hat Hybrid Cloud Console 上的 Cluster Type 页。如果您有红帽帐户,请使用您的凭证登录。如果没有,请创建一个帐户。
- 在页的 Run it yourself 部分中选择您的基础架构供应商。
- 从 OpenShift 安装程序下的下拉菜单中选择您的主机操作系统和架构,然后点下载安装程序。
将下载的文件保存在要存储安装配置文件的目录中。
重要- 安装程序会在用来安装集群的计算机上创建几个文件。在完成集群安装后,您必须保留安装程序和安装程序所创建的文件。删除集群需要这两个文件。
- 删除安装程序创建的文件不会删除您的集群,即使集群在安装过程中失败也是如此。要删除集群,请为特定云供应商完成 OpenShift Container Platform 卸载流程。
提取安装程序。例如,在使用 Linux 操作系统的计算机上运行以下命令:
$ tar -xvf openshift-install-linux.tar.gz
- 从 Red Hat OpenShift Cluster Manager 下载安装 pull secret。此 pull secret 允许您与所含授权机构提供的服务进行身份验证,这些服务包括为 OpenShift Container Platform 组件提供容器镜像的 Quay.io。
另外,您还可以从红帽客户门户网站检索安装程序,您可以在其中指定要下载的安装程序版本。但是,您需要有一个有效的订阅才能访问此页。
4.1.4. 安装 OpenShift CLI
您可以安装 OpenShift CLI(oc
)来使用命令行界面与 OpenShift Container Platform 进行交互。您可以在 Linux、Windows 或 macOS 上安装 oc
。
如果安装了旧版本的 oc
,则可能无法使用 OpenShift Container Platform 4.17 中的所有命令。下载并安装新版本的 oc
。
在 Linux 上安装 OpenShift CLI
您可以按照以下流程在 Linux 上安装 OpenShift CLI(oc
)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 产品变体 下拉列表中选择架构。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.17 Linux Clients 条目旁的 Download Now 来保存文件。
解包存档:
$ tar xvf <file>
将
oc
二进制文件放到PATH 中的目录中
。要查看您的
PATH
,请执行以下命令:$ echo $PATH
验证
安装 OpenShift CLI 后,可以使用
oc
命令:$ oc <command>
在 Windows 上安装 OpenShift CLI
您可以按照以下流程在 Windows 上安装 OpenShift CLI(oc
)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.17 Windows Client 条目旁的 Download Now 来保存文件。
- 使用 ZIP 程序解压存档。
将
oc
二进制文件移到PATH 中的目录中
。要查看您的
PATH
,请打开命令提示并执行以下命令:C:\> path
验证
安装 OpenShift CLI 后,可以使用
oc
命令:C:\> oc <command>
在 macOS 上安装 OpenShift CLI
您可以按照以下流程在 macOS 上安装 OpenShift CLI(oc
)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 版本 下拉列表中选择适当的版本。
点 OpenShift v4.17 macOS Clients 条目旁的 Download Now 来保存文件。
注意对于 macOS arm64,请选择 OpenShift v4.17 macOS arm64 Client 条目。
- 解包和解压存档。
将
oc
二进制文件移到 PATH 的目录中。要查看您的
PATH
,请打开终端并执行以下命令:$ echo $PATH
验证
使用
oc
命令验证安装:$ oc <command>
4.2. 使用 ARM 模板在 Azure Stack Hub 上安装集群
在 OpenShift Container Platform 版本 4.17 中,您可以使用您提供的基础架构在 Microsoft Azure Stack Hub 上安装集群。
提供的几个 Azure Resource Manager(ARM) 模板可协助完成这些步骤,也可帮助您自行建模。
进行用户置备的基础架构安装的步骤仅作为示例。使用您提供的基础架构安装集群需要了解云供应商和 OpenShift Container Platform 安装过程。提供的几个 ARM 模板可帮助完成这些步骤,或帮助您自行建模。您也可以自由选择通过其他方法创建所需的资源;模板仅作示例之用。
4.2.1. 先决条件
- 您可以参阅有关 OpenShift Container Platform 安装和更新 流程的详细信息。
- 您可以阅读选择集群安装方法并为用户准备它的文档。
- 已将 Azure Stack Hub 帐户配置为托管集群。
-
您下载了 Azure CLI 并安装到您的计算机上。请参阅 Azure 文档中的安装 Azure CLI。以下文档使用 Azure CLI 的版本
2.28.0
测试。Azure CLI 命令可能会根据您使用的版本的不同而不同。 如果使用防火墙并计划使用 Telemetry 服务,需要将防火墙配置为允许集群需要访问的站点。
注意如果要配置代理,请务必查看此站点列表。
4.2.2. 配置 Azure Stack Hub 项目
在安装 OpenShift Container Platform 之前,您必须配置 Azure 项目来托管它。
所有通过公共端点提供的 Azure Stack Hub 资源都受到资源名称的限制,您无法创建使用某些术语的资源。如需 Azure Stack Hub 限制词语列表,请参阅 Azure 文档中的解决保留资源名称错误。
4.2.2.1. Azure Stack Hub 帐户限制
OpenShift Container Platform 集群使用多个 Microsoft Azure Stack Hub 组件,Azure Stack Hub 中的默认配额类型会影响您安装 OpenShift Container Platform 集群的能力。
下表总结了 Azure Stack Hub 组件,它们的限值会影响您安装和运行 OpenShift Container Platform 集群的能力。
组件 | 默认所需的组件数 | 描述 | ||||||
---|---|---|---|---|---|---|---|---|
vCPU | 56 | 默认集群需要 56 个 vCPU,因此您必须提高帐户限值。 默认情况下,每个集群创建以下实例:
因为 bootstrap、control plane 和 worker 机器使用 若要部署更多 worker 节点、启用自动扩展、部署大型工作负载或使用不同的实例类型,您必须进一步提高帐户的 vCPU 限值,以确保集群可以部署您需要的机器。 | ||||||
VNet | 1 | 每个默认集群都需要一个虚拟网络 (VNet),此网络包括两个子网。 | ||||||
网络接口 | 7 | 每个默认集群都需要 7 个网络接口。如果您要创建更多机器或者您部署的工作负载要创建负载均衡器,则集群会使用更多的网络接口。 | ||||||
网络安全组 | 2 | 每个集群为 VNet 中的每个子网创建网络安全组。默认集群为 control plane 和计算节点子网创建网络安全组:
| ||||||
网络负载均衡器 | 3 | 每个集群都会创建以下负载均衡器:
如果您的应用程序创建了更多的 Kubernetes | ||||||
公共 IP 地址 | 2 | 公共负载均衡器使用一个公共 IP 地址。bootstrap 机器也使用一个公共 IP 地址,以便您可以在安装期间通过 SSH 连接到该机器来进行故障排除。bootstrap 节点的 IP 地址仅在安装过程中使用。 | ||||||
专用 IP 地址 | 7 | 内部负载均衡器、三台 control plane 机器中的每一台以及三台 worker 机器中的每一台各自使用一个专用 IP 地址。 |
其他资源
4.2.2.2. 在 Azure Stack Hub 中配置 DNS 区域
要在 Azure Stack Hub 上成功安装 OpenShift Container Platform,您必须在 Azure Stack Hub DNS 区域中创建 DNS 记录。DNS 区域必须对域具有权威。要将注册商的 DNS 区域委派给 Azure Stack Hub,请参阅 Microsoft 有关 Azure Stack Hub 数据中心 DNS 集成的文档。
您可以通过访问此创建 DNS 区域示例来查看 Azure 的 DNS 解决方案。
4.2.2.3. 证书签名请求管理
在使用您置备的基础架构时,集群只能有限地访问自动机器管理,因此您必须提供一种在安装后批准集群证书签名请求 (CSR) 的机制。kube-controller-manager
只能批准 kubelet 客户端 CSR。machine-approver
无法保证使用 kubelet 凭证请求的提供证书的有效性,因为它不能确认是正确的机器发出了该请求。您必须决定并实施一种方法,以验证 kubelet 提供证书请求的有效性并进行批准。
4.2.2.4. 所需的 Azure Stack Hub 角色
Microsoft Azure Stack Hub 帐户必须具有您使用的订阅的以下角色:
-
所有者
要在 Azure 门户上设置角色,请参阅 Microsoft 文档中的通过基于角色的访问控制管理对 Azure Stack Hub 中资源的管理访问权限。
4.2.2.5. 创建服务主体
由于 OpenShift Container Platform 及其安装程序使用 Azure Resource Manager 创建 Microsoft Azure 资源,因此您必须创建一个服务主体来代表它。
先决条件
- 安装或更新 Azure CLI。
- 您的 Azure 帐户具有您所用订阅所需的角色。
流程
注册您的环境:
$ az cloud register -n AzureStackCloud --endpoint-resource-manager <endpoint> 1
- 1
- 指定 Azure Resource Manager 端点 'https://management.<region>.<fqdn>/'。
详情请查看 Microsoft 文档。
设置活跃环境:
$ az cloud set -n AzureStackCloud
更新您的环境配置,以使用 Azure Stack Hub 的特定 API 版本:
$ az cloud update --profile 2019-03-01-hybrid
登录 Azure CLI:
$ az login
如果您在多租户环境中,还必须提供租户 ID。
如果您的 Azure 帐户使用订阅,请确定您使用正确的订阅:
查看可用帐户列表并记录您要用于集群的订阅的
tenantId
值:$ az account list --refresh
输出示例
[ { "cloudName": AzureStackCloud", "id": "9bab1460-96d5-40b3-a78e-17b15e978a80", "isDefault": true, "name": "Subscription Name", "state": "Enabled", "tenantId": "6057c7e9-b3ae-489d-a54e-de3f6bf6a8ee", "user": { "name": "you@example.com", "type": "user" } } ]
查看您的活跃帐户详情,确认
tenantId
值与您要使用的订阅匹配:$ az account show
输出示例
{ "environmentName": AzureStackCloud", "id": "9bab1460-96d5-40b3-a78e-17b15e978a80", "isDefault": true, "name": "Subscription Name", "state": "Enabled", "tenantId": "6057c7e9-b3ae-489d-a54e-de3f6bf6a8ee", 1 "user": { "name": "you@example.com", "type": "user" } }
- 1
- 确保
tenantId
参数的值是正确的订阅 ID。
如果您使用的订阅不正确,请更改活跃的订阅:
$ az account set -s <subscription_id> 1
- 1
- 指定订阅 ID。
验证订阅 ID 更新:
$ az account show
输出示例
{ "environmentName": AzureStackCloud", "id": "33212d16-bdf6-45cb-b038-f6565b61edda", "isDefault": true, "name": "Subscription Name", "state": "Enabled", "tenantId": "8049c7e9-c3de-762d-a54e-dc3f6be6a7ee", "user": { "name": "you@example.com", "type": "user" } }
-
记录输出中的
tenantId
和id
参数值。OpenShift Container Platform 安装过程中需要这些值。 为您的帐户创建服务主体:
$ az ad sp create-for-rbac --role Contributor --name <service_principal> \ 1 --scopes /subscriptions/<subscription_id> 2 --years <years> 3
输出示例
Creating 'Contributor' role assignment under scope '/subscriptions/<subscription_id>' The output includes credentials that you must protect. Be sure that you do not include these credentials in your code or check the credentials into your source control. For more information, see https://aka.ms/azadsp-cli { "appId": "ac461d78-bf4b-4387-ad16-7e32e328aec6", "displayName": <service_principal>", "password": "00000000-0000-0000-0000-000000000000", "tenantId": "8049c7e9-c3de-762d-a54e-dc3f6be6a7ee" }
-
记录前面输出中
appId
和password
参数的值。OpenShift Container Platform 安装过程中需要这些值。
4.2.3. 为 Azure Stack Hub 创建安装文件
要使用用户置备的基础架构在 Microsoft Azure Stack Hub 上安装 OpenShift Container Platform,您必须生成安装程序部署集群所需的文件,并进行修改,以便集群只创建要使用的机器。您可以手动创建 install-config.yaml
文件,然后生成并自定义 Kubernetes 清单和 Ignition 配置文件。您也可以选择在安装准备阶段首先设置独立的 var
分区。
4.2.3.1. 手动创建安装配置文件
安装集群要求您手动创建安装配置文件。
先决条件
- 您在本地机器上有一个 SSH 公钥来提供给安装程序。该密钥将用于在集群节点上进行 SSH 身份验证,以进行调试和灾难恢复。
- 已获取 OpenShift Container Platform 安装程序和集群的 pull secret。
流程
创建一个安装目录来存储所需的安装资产:
$ mkdir <installation_directory>
重要您必须创建一个目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。
自定义提供的
install-config.yaml
文件模板示例,并将其保存在<installation_directory>
中。注意此配置文件必须命名为
install-config.yaml
。对 Azure Stack Hub 进行以下修改:
将
compute
池的replicas
参数设置为0
:compute: - hyperthreading: Enabled name: worker platform: {} replicas: 0 1
- 1
- 设置为
0
。
计算机器将在以后手动调配。
更新
install-config.yaml
文件的platform.azure
部分,以配置 Azure Stack Hub 配置:platform: azure: armEndpoint: <azurestack_arm_endpoint> 1 baseDomainResourceGroupName: <resource_group> 2 cloudName: AzureStackCloud 3 region: <azurestack_region> 4
备份
install-config.yaml
文件,以便用于安装多个集群。重要install-config.yaml
文件会在安装过程的下一步中使用。现在必须备份它。
4.2.3.2. Azure Stack Hub 的自定义 install-config.yaml 文件示例
您可以自定义 install-config.yaml
文件,以指定有关 OpenShift Container Platform 集群平台的更多详情,或修改所需参数的值。
此示例 YAML 文件仅供参考。使用它作为资源,在您手动创建的安装配置文件中输入参数值。
apiVersion: v1 baseDomain: example.com controlPlane: 1 name: master platform: azure: osDisk: diskSizeGB: 1024 2 diskType: premium_LRS replicas: 3 compute: 3 - name: worker platform: azure: osDisk: diskSizeGB: 512 4 diskType: premium_LRS replicas: 0 metadata: name: test-cluster 5 networking: clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 machineNetwork: - cidr: 10.0.0.0/16 networkType: OVNKubernetes 6 serviceNetwork: - 172.30.0.0/16 platform: azure: armEndpoint: azurestack_arm_endpoint 7 baseDomainResourceGroupName: resource_group 8 region: azure_stack_local_region 9 resourceGroupName: existing_resource_group 10 outboundType: Loadbalancer cloudName: AzureStackCloud 11 pullSecret: '{"auths": ...}' 12 fips: false 13 additionalTrustBundle: | 14 -----BEGIN CERTIFICATE----- <MY_TRUSTED_CA_CERT> -----END CERTIFICATE----- sshKey: ssh-ed25519 AAAA... 15
- 1 3
controlPlane
部分是一个单个映射,但compute
部分是一系列映射。为满足不同数据结构的要求,compute
部分的第一行必须以连字符-
开头,controlPlane部分
的第一行则不以连字符开头。仅使用一个 control plane 池。- 2 4
- 您可以指定要使用的磁盘大小(以 GB 为单位)。control plane 节点的最低推荐值为 1024 GB。
- 5
- 指定集群的名称。
- 6
- 要安装的集群网络插件。默认值
OVNKubernetes
是唯一支持的值。 - 7
- 指定 Azure Stack Hub operator 提供的 Azure Resource Manager 端点。
- 8
- 指定包含基域的 DNS 区的资源组的名称。
- 9
- 指定 Azure Stack Hub 本地区域的名称。
- 10
- 指定要安装集群的现有资源组的名称。如果未定义,则会为集群创建新的资源组。
- 11
- 将 Azure Stack Hub 环境指定为目标平台。
- 12
- 指定验证集群所需的 pull secret。
- 13
- 是否启用或禁用 FIPS 模式。默认情况下不启用 FIPS 模式。如果启用了 FIPS 模式,运行 OpenShift Container Platform 的 Red Hat Enterprise Linux CoreOS(RHCOS)机器会绕过默认的 Kubernetes 加密套件,并使用由 RHCOS 提供的加密模块。重要
要为集群启用 FIPS 模式,您必须从配置为以 FIPS 模式操作的 Red Hat Enterprise Linux (RHEL) 计算机运行安装程序。有关在 RHEL 中配置 FIPS 模式的更多信息,请参阅在 FIPS 模式中安装该系统。
当以 FIPS 模式运行 Red Hat Enterprise Linux (RHEL) 或 Red Hat Enterprise Linux CoreOS (RHCOS)时,OpenShift Container Platform 核心组件使用 RHEL 加密库,在 x86_64、ppc64le 和 s390x 架构上提交到 NIST FIPS 140-2/140-3 Validation。
- 14
- 如果您的 Azure Stack Hub 环境使用内部证书颁发机构(CA),以
.pem
格式添加所需的证书捆绑包。 - 15
- 您可以选择提供您用来访问集群中机器的
sshKey
值。注意对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定
ssh-agent
进程使用的 SSH 密钥。
4.2.3.3. 在安装过程中配置集群范围的代理
生产环境可能会拒绝直接访问互联网,而是提供 HTTP 或 HTTPS 代理。您可以通过在 install-config.yaml
文件中配置代理设置,将新的 OpenShift Container Platform 集群配置为使用代理。
先决条件
-
您有一个现有的
install-config.yaml
文件。 您检查了集群需要访问的站点,并确定它们中的任何站点是否需要绕过代理。默认情况下,所有集群出口流量都经过代理,包括对托管云供应商 API 的调用。如果需要,您将在
Proxy 对象的
spec.noProxy
字段中添加站点来绕过代理。注意Proxy
对象status.noProxy
字段使用安装配置中的networking.machineNetwork[].cidr
、networking.clusterNetwork[].cidr
和networking.serviceNetwork[]
字段的值填充。对于在 Amazon Web Services(AWS)、Google Cloud Platform(GCP)、Microsoft Azure 和 Red Hat OpenStack Platform(RHOSP)上安装,
Proxy
对象status.noProxy
字段也会使用实例元数据端点填充(169.254.169.254
)。
流程
编辑
install-config.yaml
文件并添加代理设置。例如:apiVersion: v1 baseDomain: my.domain.com proxy: httpProxy: http://<username>:<pswd>@<ip>:<port> 1 httpsProxy: https://<username>:<pswd>@<ip>:<port> 2 noProxy: example.com 3 additionalTrustBundle: | 4 -----BEGIN CERTIFICATE----- <MY_TRUSTED_CA_CERT> -----END CERTIFICATE----- additionalTrustBundlePolicy: <policy_to_add_additionalTrustBundle> 5
- 1
- 用于创建集群外 HTTP 连接的代理 URL。URL 方案必须是
http
。 - 2
- 用于创建集群外 HTTPS 连接的代理 URL。
- 3
- 要从代理中排除的目标域名、IP 地址或其他网络 CIDR 的逗号分隔列表。在域前面加上
.
以仅匹配子域。例如,.y.com
匹配x.y.com
,但不匹配y.com
。使用*
绕过所有目的地的代理。 - 4
- 如果提供,安装程序会在
openshift-config
命名空间中生成名为user-ca-bundle
的配置映射,其包含代理 HTTPS 连接所需的一个或多个额外 CA 证书。然后,Cluster Network Operator 会创建trusted-ca-bundle
配置映射,将这些内容与 Red Hat Enterprise Linux CoreOS(RHCOS)信任捆绑包合并,Proxy
对象的trustedCA
字段中也会引用此配置映射。additionalTrustBundle
字段是必需的,除非代理的身份证书由来自 RHCOS 信任捆绑包的颁发机构签名。 - 5
- 可选:决定
Proxy
对象的配置以引用trustedCA
字段中user-ca-bundle
配置映射的策略。允许的值是Proxyonly
和Always
。仅在配置了http/https
代理时,使用Proxyonly
引用user-ca-bundle
配置映射。使用Always
始终引用user-ca-bundle
配置映射。默认值为Proxyonly
。
注意安装程序不支持代理的
readinessEndpoints
字段。注意如果安装程序超时,重启并使用安装程序的
wait-for
命令完成部署。例如:$ ./openshift-install wait-for install-complete --log-level debug
- 保存该文件并在安装 OpenShift Container Platform 时引用。
安装程序会创建一个名为 cluster 的集群范围代理,该代理 使用
提供的 install-config.yaml
文件中的代理设置。如果没有提供代理设置,仍然会创建一个 cluster
Proxy
对象,但它会有一个空 spec
。
只支持名为 cluster
的 Proxy
对象,且无法创建额外的代理。
4.2.3.4. 为 ARM 模板导出常用变量
您必须导出与提供的 Azure Resource Manager (ARM) 模板搭配使用的一组常用变量,它们有助于在 Microsoft Azure Stack Hub 上完成用户提供的基础架构安装。
特定的 ARM 模板可能还需要其他导出变量,这些变量在相关的程序中详细介绍。
先决条件
- 获取 OpenShift Container Platform 安装程序和集群的 pull secret。
流程
导出
install-config.yaml
中由提供的 ARM 模板使用的通用变量:$ export CLUSTER_NAME=<cluster_name>1 $ export AZURE_REGION=<azure_region>2 $ export SSH_KEY=<ssh_key>3 $ export BASE_DOMAIN=<base_domain>4 $ export BASE_DOMAIN_RESOURCE_GROUP=<base_domain_resource_group>5
- 1
install-config.yaml
文件中的.metadata.name
属性的值。- 2
- 集群要部署到的区域。这是来自
install-config.yaml
文件中的.platform.azure.region
属性的值。 - 3
- 作为字符串的 SSH RSA 公钥文件。您必须使用引号包括 SSH 密钥,因为它包含空格。这是来自
install-config.yaml
文件中的.sshKey
属性的值。 - 4
- 集群要部署到的基域。基域与您为集群创建的 DNS 区域对应。这是来自
install-config.yaml
文件中的.baseDomain
属性的值。 - 5
- 存在 DNS 区的资源组。这是来自
install-config.yaml
文件中的.platform.azure.baseDomainResourceGroupName
属性的值。
例如:
$ export CLUSTER_NAME=test-cluster $ export AZURE_REGION=centralus $ export SSH_KEY="ssh-rsa xxx/xxx/xxx= user@email.com" $ export BASE_DOMAIN=example.com $ export BASE_DOMAIN_RESOURCE_GROUP=ocp-cluster
导出 kubeadmin 凭证:
$ export KUBECONFIG=<installation_directory>/auth/kubeconfig 1
- 1
- 对于
<installation_directory>
,请指定安装文件保存到的目录的路径。
4.2.3.5. 创建 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
安装配置文件。
流程
进入包含 OpenShift Container Platform 安装程序的目录,并为集群生成 Kubernetes 清单:
$ ./openshift-install create manifests --dir <installation_directory> 1
- 1
- 对于
<installation_directory>
,请指定包含您创建的install-config.yaml
文件的安装目录。
删除定义 control plane 机器的 Kubernetes 清单文件:
$ rm -f <installation_directory>/openshift/99_openshift-cluster-api_master-machines-*.yaml
通过删除这些文件,您可以防止集群自动生成 control plane 机器。
删除定义 control plane 机器集的 Kubernetes 清单文件:
$ rm -f <installation_directory>/openshift/99_openshift-machine-api_master-control-plane-machine-set.yaml
删除定义 worker 机器的 Kubernetes 清单文件:
$ rm -f <installation_directory>/openshift/99_openshift-cluster-api_worker-machineset-*.yaml
重要如果在用户置备的基础架构上安装集群时禁用了
MachineAPI
功能,则必须删除定义 worker 机器的 Kubernetes 清单文件。否则,集群将无法安装。由于您要自行创建和管理 worker 机器,因此不需要初始化这些机器。
检查
<installation_directory>/manifests/cluster-scheduler-02-config.yml Kubernetes 清单文件中的
mastersSchedulable
参数是否已设置为false
。此设置可防止在 control plane 机器上调度 pod:-
打开
<installation_directory>/manifests/cluster-scheduler-02-config.yml
文件。 -
找到
mastersSchedulable
参数,并确保它被设置为false
。 - 保存并退出 文件。
-
打开
可选:如果您不希望 Ingress Operator 代表您创建 DNS 记录,请删除
<installation_directory>/manifests/cluster-dns-02-config.yml
DNS 配置文件中的privateZone
和 publicZone
部分:apiVersion: config.openshift.io/v1 kind: DNS metadata: creationTimestamp: null name: cluster spec: baseDomain: example.openshift.com privateZone: 1 id: mycluster-100419-private-zone publicZone: 2 id: example.openshift.com status: {}
如果您这样做,后续步骤中必须手动添加入口 DNS 记录。
可选: 如果您的 Azure Stack Hub 环境使用内部证书颁发机构(CA),您必须更新
<installation_directory>/manifests/cluster-proxy-01-config.yaml
文件中的.spec.trustedCA.name
字段来使用user-ca-bundle
:... spec: trustedCA: name: user-ca-bundle ...
之后,您必须更新 bootstrap ignition 使其包含 CA。
在用户置备的基础架构上配置 Azure 时,您必须导出清单文件中定义的一些常见变量,以备稍后在 Azure Resource Manager(ARM)模板中使用:
使用以下命令导出基础架构 ID:
$ export INFRA_ID=<infra_id> 1
- 1
- OpenShift Container Platform 集群被分配了一个标识符(
INFRA_ID
),其格式为<cluster_name>-<random_string>
。这将作为使用提供的 ARM 模板创建的大部分资源的基本名称。这是来自manifests/cluster-infrastructure-02-config.yml
文件中的.status.infrastructureName
属性的值。
使用以下命令导出资源组:
$ export RESOURCE_GROUP=<resource_group> 1
手动创建云凭证。
从包含安装程序的目录中,获取
openshift-install
二进制文件要使用的 OpenShift Container Platform 发行镜像详情:$ openshift-install version
输出示例
release image quay.io/openshift-release-dev/ocp-release:4.y.z-x86_64
运行以下命令,使用安装文件中的发行镜像设置
$RELEASE_IMAGE
变量:$ RELEASE_IMAGE=$(./openshift-install version | awk '/release image/ {print $3}')
运行以下命令,从 OpenShift Container Platform 发行镜像中提取
CredentialsRequest
自定义资源 (CR) 列表:$ oc adm release extract \ --from=$RELEASE_IMAGE \ --credentials-requests \ --included \1 --install-config=<path_to_directory_with_installation_configuration>/install-config.yaml \2 --to=<path_to_directory_for_credentials_requests> 3
此命令为每个
CredentialsRequest
对象创建一个 YAML 文件。CredentialsRequest
对象示例apiVersion: cloudcredential.openshift.io/v1 kind: CredentialsRequest metadata: labels: controller-tools.k8s.io: "1.0" name: openshift-image-registry-azure namespace: openshift-cloud-credential-operator spec: secretRef: name: installer-cloud-credentials namespace: openshift-image-registry providerSpec: apiVersion: cloudcredential.openshift.io/v1 kind: AzureProviderSpec roleBindings: - role: Contributor
在之前生成的
openshift-install
清单目录中为 secret 创建 YAML 文件。secret 必须使用在spec.secretRef
中为每个CredentialsRequest
定义的命名空间和 secret 名称存储。secret 数据的格式因云供应商而异。secrets.yaml
文件示例apiVersion: v1 kind: Secret metadata: name: ${secret_name} namespace: ${secret_namespace} stringData: azure_subscription_id: ${subscription_id} azure_client_id: ${app_id} azure_client_secret: ${client_secret} azure_tenant_id: ${tenant_id} azure_resource_prefix: ${cluster_name} azure_resourcegroup: ${resource_group} azure_region: ${azure_region}
在 manifests 目录中创建一个
cco-configmap.yaml
文件,并禁用 Cloud Credential Operator (CCO):ConfigMap
对象示例apiVersion: v1 kind: ConfigMap metadata: name: cloud-credential-operator-config namespace: openshift-cloud-credential-operator annotations: release.openshift.io/create-only: "true" data: disabled: "true"
要创建 Ignition 配置文件,从包含安装程序的目录运行以下命令:
$ ./openshift-install create ignition-configs --dir <installation_directory> 1
- 1
- 对于
<installation_directory>
,请指定相同的安装目录。
为安装目录中的 bootstrap、control plane 和计算节点创建 Ignition 配置文件。
kubeadmin-password
和kubeconfig
文件在./<installation_directory>/auth
目录中创建:. ├── auth │ ├── kubeadmin-password │ └── kubeconfig ├── bootstrap.ign ├── master.ign ├── metadata.json └── worker.ign
其他资源
4.2.3.6. 可选:创建独立 /var
分区
建议安装程序将 OpenShift Container Platform 的磁盘分区保留给安装程序。然而,在有些情况下您可能需要在文件系统的一部分中创建独立分区。
OpenShift Container Platform 支持添加单个分区来将存储附加到 /var
分区或 /var
的子目录中。例如:
-
/var/lib/containers
:保存随着系统中添加更多镜像和容器而增长的容器相关内容。 -
/var/lib/etcd
:保存您可能希望独立保留的数据,比如 etcd 存储的性能优化。 -
/var
:保存您可能希望独立保留的数据,以满足审计等目的。
通过单独存储 /var
目录的内容,可以更轻松地根据需要为区域扩展存储,并在以后重新安装 OpenShift Container Platform,并保持该数据的完整性。使用这个方法,您不必再次拉取所有容器,在更新系统时也不必复制大量日志文件。
因为 /var
在进行一个全新的 Red Hat Enterprise Linux CoreOS(RHCOS)安装前必需存在,所以这个流程会在 OpenShift Container Platform 安装过程的 openshift-install
准备阶段插入一个创建的机器配置清单的机器配置来设置独立的 /var
分区。
如果按照以下步骤在此流程中创建独立 /var
分区,则不需要再次创建 Kubernetes 清单和 Ignition 配置文件,如本节所述。
流程
创建存放 OpenShift Container Platform 安装文件的目录:
$ mkdir $HOME/clusterconfig
运行
openshift-install
,以在manifest
和openshift
子目录中创建一组文件。在系统提示时回答系统问题:$ openshift-install create manifests --dir $HOME/clusterconfig
输出示例
? SSH Public Key ... INFO Credentials loaded from the "myprofile" profile in file "/home/myuser/.aws/credentials" INFO Consuming Install Config from target directory INFO Manifests created in: $HOME/clusterconfig/manifests and $HOME/clusterconfig/openshift
可选:确认安装程序在
clusterconfig/openshift
目录中创建了清单:$ ls $HOME/clusterconfig/openshift/
输出示例
99_kubeadmin-password-secret.yaml 99_openshift-cluster-api_master-machines-0.yaml 99_openshift-cluster-api_master-machines-1.yaml 99_openshift-cluster-api_master-machines-2.yaml ...
创建用于配置额外分区的 Butane 配置。例如,将文件命名为
$HOME/clusterconfig/98-var-partition.bu
,将磁盘设备名称改为worker
系统上存储设备的名称,并根据情况设置存储大小。这个示例将/var
目录放在一个单独的分区中:variant: openshift version: 4.17.0 metadata: labels: machineconfiguration.openshift.io/role: worker name: 98-var-partition storage: disks: - device: /dev/disk/by-id/<device_name> 1 partitions: - label: var start_mib: <partition_start_offset> 2 size_mib: <partition_size> 3 number: 5 filesystems: - device: /dev/disk/by-partlabel/var path: /var format: xfs mount_options: [defaults, prjquota] 4 with_mount_unit: true
注意当创建单独的
/var
分区时,如果不同的实例类型没有相同的设备名称,则无法为 worker 节点使用不同的实例类型。从 Butane 配置创建一个清单,并将它保存到
clusterconfig/openshift
目录中。例如,运行以下命令:$ butane $HOME/clusterconfig/98-var-partition.bu -o $HOME/clusterconfig/openshift/98-var-partition.yaml
再次运行
openshift-install
,从manifest
和openshift
子目录中的一组文件创建 Ignition 配置:$ openshift-install create ignition-configs --dir $HOME/clusterconfig $ ls $HOME/clusterconfig/ auth bootstrap.ign master.ign metadata.json worker.ign
现在,您可以使用 Ignition 配置文件作为安装程序的输入来安装 Red Hat Enterprise Linux CoreOS(RHCOS)系统。
4.2.4. 创建 Azure 资源组
您必须创建一个 Microsoft Azure 资源组。这用于在 Azure Stack Hub 上安装 OpenShift Container Platform 集群。
流程
在受支持的 Azure 区域中创建资源组:
$ az group create --name ${RESOURCE_GROUP} --location ${AZURE_REGION}
4.2.5. 上传 RHCOS 集群镜像和 bootstrap Ignition 配置文件
Azure 客户端不支持基于本地现有文件进行部署。您必须复制 RHCOS 虚拟硬盘(VHD)集群镜像,并将 bootstrap Ignition 配置文件存储在存储容器中,以便在部署过程中访问它们。
先决条件
- 为集群生成 Ignition 配置文件。
流程
创建 Azure 存储帐户以存储 VHD 集群镜像:
$ az storage account create -g ${RESOURCE_GROUP} --location ${AZURE_REGION} --name ${CLUSTER_NAME}sa --kind Storage --sku Standard_LRS
警告Azure 存储帐户名称的长度必须在 3 到 24 个字符之,且只使用数字和小写字母。如果您的
CLUSTER_NAME
变量没有遵循这些限制,您必须手动定义 Azure 存储帐户名称。如需有关 Azure 存储帐户名称限制的更多信息,请参阅 Azure 文档中的解决存储帐户名称的错误。将存储帐户密钥导出为环境变量:
$ export ACCOUNT_KEY=`az storage account keys list -g ${RESOURCE_GROUP} --account-name ${CLUSTER_NAME}sa --query "[0].value" -o tsv`
将 RHCOS VHD 的 URL 导出为环境变量:
$ export COMPRESSED_VHD_URL=$(openshift-install coreos print-stream-json | jq -r '.architectures.x86_64.artifacts.azurestack.formats."vhd.gz".disk.location')
重要RHCOS 镜像可能不会随着 OpenShift Container Platform 的每个发行版本而改变。您必须指定一个最高版本的镜像,其版本号应小于或等于您安装的 OpenShift Container Platform 版本。如果可用,请使用与 OpenShift Container Platform 版本匹配的镜像版本。
为 VHD 创建存储容器:
$ az storage container create --name vhd --account-name ${CLUSTER_NAME}sa --account-key ${ACCOUNT_KEY}
在本地下载压缩的 RHCOS VHD 文件:
$ curl -O -L ${COMPRESSED_VHD_URL}
解压缩 VHD 文件。
注意解压缩的 VHD 文件大约为 16 GB,因此请确保您的主机系统有 16 GB 的可用空间。您可以在上传 VHD 文件后删除该文件。
将本地 VHD 复制为一个 blob:
$ az storage blob upload --account-name ${CLUSTER_NAME}sa --account-key ${ACCOUNT_KEY} -c vhd -n "rhcos.vhd" -f rhcos-<rhcos_version>-azurestack.x86_64.vhd
创建 blob 存储容器并上传生成的
bootstrap.ign
文件:$ az storage container create --name files --account-name ${CLUSTER_NAME}sa --account-key ${ACCOUNT_KEY}
$ az storage blob upload --account-name ${CLUSTER_NAME}sa --account-key ${ACCOUNT_KEY} -c "files" -f "<installation_directory>/bootstrap.ign" -n "bootstrap.ign"
4.2.6. 创建 DNS 区示例
使用用户置备的基础架构的集群需要 DNS 记录。您应该选择适合您的场景的 DNS 策略。
本例中使用了 Azure Stack Hub 的数据中心 DNS 集成,因此您将创建一个 DNS 区。
DNS 区域不需要与集群部署位于同一个资源组中,且可能已在您的机构中为所需基域存在。如果情况如此,您可以跳过创建 DNS 区域 ; 请确定您之前生成的安装配置反映了这种情况。
流程
在
BASE_DOMAIN_RESOURCE_GROUP
环境变量中导出的资源组中创建新的 DNS 区域:$ az network dns zone create -g ${BASE_DOMAIN_RESOURCE_GROUP} -n ${CLUSTER_NAME}.${BASE_DOMAIN}
如果您使用的是已存在的 DNS 区域,您可以跳过这一步。
您可以访问该部分来了解更多有关 在 Azure Stack Hub 中配置 DNS 区 的信息。
4.2.7. 在 Azure Stack Hub 中创建 VNet
您必须在 Microsoft Azure Stack Hub 中创建虚拟网络 (VNet),供您的 OpenShift Container Platform 集群使用。您可以对 VNet 进行定制来满足您的要求。创建 VNet 的一种方法是修改提供的 Azure Resource Manager(ARM)模板。
如果不使用提供的 ARM 模板来创建 Azure Stack Hub 基础架构,您必须检查提供的信息并手动创建基础架构。如果集群没有正确初始化,您可能需要联系红帽支持并提供您的安装日志。
流程
-
复制 VNet 的 ARM 模板 一节中的模板,并将它以
01_vnet.json
保存到集群的安装目录中。此模板描述了集群所需的 VNet。 使用
az
CLI 创建部署:$ az deployment group create -g ${RESOURCE_GROUP} \ --template-file "<installation_directory>/01_vnet.json" \ --parameters baseName="${INFRA_ID}"1
- 1
- 资源名称使用的基本名称 ; 这通常是集群的基础架构 ID。
4.2.7.1. VNet 的 ARM 模板
您可以使用以下 Azure Resource Manager(ARM)模板来部署 OpenShift Container Platform 集群所需的 VPC:
例 4.1. 01_vnet.json
ARM 模板
link:https://raw.githubusercontent.com/openshift/installer/release-4.17/upi/azurestack/01_vnet.json[]
4.2.8. 为 Azure Stack Hub 基础架构部署 RHCOS 集群镜像
您必须对 OpenShift Container Platform 节点的 Microsoft Azure Stack Hub 使用有效的 Red Hat Enterprise Linux CoreOS (RHCOS) 镜像。
先决条件
- 将 RHCOS 虚拟硬盘(VHD)集群镜像存储在 Azure 存储容器中。
- 在 Azure 存储容器中存储 bootstrap Ignition 配置文件。
流程
-
复制镜像存储的 ARM 模板 部分中的模板,并将它以
02_storage.json
保存到集群的安装目录中。此模板描述了集群所需的镜像存储。 以一个变量的形式将 RHCOS VHD blob URL 导出:
$ export VHD_BLOB_URL=`az storage blob url --account-name ${CLUSTER_NAME}sa --account-key ${ACCOUNT_KEY} -c vhd -n "rhcos.vhd" -o tsv`
部署集群镜像
$ az deployment group create -g ${RESOURCE_GROUP} \ --template-file "<installation_directory>/02_storage.json" \ --parameters vhdBlobURL="${VHD_BLOB_URL}" \ 1 --parameters baseName="${INFRA_ID}" \ 2 --parameters storageAccount="${CLUSTER_NAME}sa" \ 3 --parameters architecture="<architecture>" 4
4.2.8.1. 镜像存储的 ARM 模板
您可以使用以下 Azure Resource Manager(ARM)模板来部署 OpenShift Container Platform 集群所需的存储的 Red Hat Enterprise Linux CoreOS(RHCOS)镜像:
例 4.2. 02_storage.json
ARM 模板
link:https://raw.githubusercontent.com/openshift/installer/release-4.17/upi/azurestack/02_storage.json[]
4.2.9. 用户置备的基础架构对网络的要求
所有 Red Hat Enterprise Linux CoreOS(RHCOS)机器需要在启动过程中在 initramfs
中配置网络,以获取其 Ignition 配置文件。
4.2.9.1. 网络连接要求
您必须配置机器之间的网络连接,以允许 OpenShift Container Platform 集群组件进行通信。每台机器都必须能够解析集群中所有其他机器的主机名。
本节详细介绍了所需的端口。
在连接的 OpenShift Container Platform 环境中,所有节点都需要访问互联网才能为平台容器拉取镜像,并向红帽提供遥测数据。
协议 | port | 描述 |
---|---|---|
ICMP | N/A | 网络可访问性测试 |
TCP |
| 指标 |
|
主机级别的服务,包括端口 9 | |
| Kubernetes 保留的默认端口 | |
UDP |
| VXLAN |
| Geneve | |
|
主机级别的服务,包括端口 | |
| IPsec IKE 数据包 | |
| IPsec NAT-T 数据包 | |
|
UDP 端口
如果配置了外部 NTP 时间服务器,需要打开 UDP 端口 | |
TCP/UDP |
| Kubernetes 节点端口 |
ESP | N/A | IPsec Encapsulating Security Payload(ESP) |
协议 | port | 描述 |
---|---|---|
TCP |
| Kubernetes API |
协议 | port | 描述 |
---|---|---|
TCP |
| etcd 服务器和对等端口 |
4.2.10. 在 Azure Stack Hub 中创建网络和负载均衡组件
您必须在 Microsoft Azure Stack Hub 中配置网络和负载均衡,供您的 OpenShift Container Platform 集群使用。创建这些组件的一种方法是修改提供的 Azure Resource Manager(ARM)模板。
负载平衡需要以下 DNS 记录:
-
DNS 区域中的 API 公共负载均衡器的
api
DNS 记录。 -
DNS 区域中 API 内部负载均衡器的
api-int
DNS 记录。
如果不使用提供的 ARM 模板来创建 Azure Stack Hub 基础架构,您必须检查提供的信息并手动创建基础架构。如果集群没有正确初始化,您可能需要联系红帽支持并提供您的安装日志。
先决条件
- 在 Azure Stack Hub 中创建和配置 VNet 及相关子网。
流程
-
复制 网络和负载均衡器的 ARM 模板 一节中的模板,并将它以
03_infra.json
保存到集群的安装目录中。此模板描述了集群所需的网络和负载均衡对象。 使用
az
CLI 创建部署:$ az deployment group create -g ${RESOURCE_GROUP} \ --template-file "<installation_directory>/03_infra.json" \ --parameters baseName="${INFRA_ID}"1
- 1
- 资源名称使用的基本名称 ; 这通常是集群的基础架构 ID。
创建
api
DNS 记录和api-int
DNS 记录。在创建 API DNS 记录时,${BASE_DOMAIN_RESOURCE_GROUP}
变量必须指向 DNS 区域存在的资源组。导出以下变量:
$ export PUBLIC_IP=`az network public-ip list -g ${RESOURCE_GROUP} --query "[?name=='${INFRA_ID}-master-pip'] | [0].ipAddress" -o tsv`
导出以下变量:
$ export PRIVATE_IP=`az network lb frontend-ip show -g "$RESOURCE_GROUP" --lb-name "${INFRA_ID}-internal" -n internal-lb-ip --query "privateIpAddress" -o tsv`
在新的 DNS 区域中创建
api
DNS 记录:$ az network dns record-set a add-record -g ${BASE_DOMAIN_RESOURCE_GROUP} -z ${CLUSTER_NAME}.${BASE_DOMAIN} -n api -a ${PUBLIC_IP} --ttl 60
如果要将集群添加到现有 DNS 区域中,您可以在其中创建
api
DNS 记录:$ az network dns record-set a add-record -g ${BASE_DOMAIN_RESOURCE_GROUP} -z ${BASE_DOMAIN} -n api.${CLUSTER_NAME} -a ${PUBLIC_IP} --ttl 60
在新的 DNS 区域中创建
api-int
DNS 记录:$ az network dns record-set a add-record -g ${BASE_DOMAIN_RESOURCE_GROUP} -z "${CLUSTER_NAME}.${BASE_DOMAIN}" -n api-int -a ${PRIVATE_IP} --ttl 60
如果要将集群添加到现有 DNS 区域中,您可以在其中创建
api-int
DNS 记录:$ az network dns record-set a add-record -g ${BASE_DOMAIN_RESOURCE_GROUP} -z ${BASE_DOMAIN} -n api-int.${CLUSTER_NAME} -a ${PRIVATE_IP} --ttl 60
4.2.10.1. 网络和负载均衡器的 ARM 模板
您可以使用以下 Azure Resource Manager(ARM)模板来部署 OpenShift Container Platform 集群所需的网络对象和负载均衡器:
例 4.3. 03_infra.json
ARM template
link:https://raw.githubusercontent.com/openshift/installer/release-4.17/upi/azurestack/03_infra.json[]
4.2.11. 在 Azure Stack Hub 中创建 bootstrap 机器
您必须在 Microsoft Azure Stack Hub 中创建 bootstrap 机器,以便在 OpenShift Container Platform 集群初始化过程中使用。创建此机器的一种方法是修改提供的 Azure Resource Manager(ARM)模板。
如果不使用提供的 ARM 模板来创建 bootstrap 机器,您必须检查提供的信息并手动创建基础架构。如果集群没有正确初始化,您可能需要联系红帽支持并提供您的安装日志。
先决条件
- 在 Azure Stack Hub 中创建和配置联网与负载均衡器。
流程
-
复制 bootstrap 机器的 ARM 模板一节中的模板,并将它以
04_bootstrap.json
保存到集群的安装目录中。此模板描述了集群所需的 bootstrap 机器。 导出 bootstrap URL 变量:
$ bootstrap_url_expiry=`date -u -d "10 hours" '+%Y-%m-%dT%H:%MZ'`
$ export BOOTSTRAP_URL=`az storage blob generate-sas -c 'files' -n 'bootstrap.ign' --https-only --full-uri --permissions r --expiry $bootstrap_url_expiry --account-name ${CLUSTER_NAME}sa --account-key ${ACCOUNT_KEY} -o tsv`
导出 bootstrap ignition 变量:
如果您的环境使用公共证书颁发机构(CA),请运行以下命令:
$ export BOOTSTRAP_IGNITION=`jq -rcnM --arg v "3.2.0" --arg url ${BOOTSTRAP_URL} '{ignition:{version:$v,config:{replace:{source:$url}}}}' | base64 | tr -d '\n'`
如果您的环境使用内部 CA,您必须将 PEM 编码捆绑包添加到 bootstrap ignition stub 中,以便 bootstrap 虚拟机可以从存储帐户中提取 bootstrap ignition。运行以下命令,这假设您的 CA 位于名为
CA.pem
的文件中:$ export CA="data:text/plain;charset=utf-8;base64,$(cat CA.pem |base64 |tr -d '\n')"
$ export BOOTSTRAP_IGNITION=`jq -rcnM --arg v "3.2.0" --arg url "$BOOTSTRAP_URL" --arg cert "$CA" '{ignition:{version:$v,security:{tls:{certificateAuthorities:[{source:$cert}]}},config:{replace:{source:$url}}}}' | base64 | tr -d '\n'`
使用
az
CLI 创建部署:$ az deployment group create --verbose -g ${RESOURCE_GROUP} \ --template-file "<installation_directory>/04_bootstrap.json" \ --parameters bootstrapIgnition="${BOOTSTRAP_IGNITION}" \ 1 --parameters baseName="${INFRA_ID}" \ 2 --parameters diagnosticsStorageAccountName="${CLUSTER_NAME}sa" 3
4.2.11.1. bootstrap 机器的 ARM 模板
您可以使用以下 Azure Resource Manager(ARM)模板来部署 OpenShift Container Platform 集群所需的 bootstrap 机器:
例 4.4. 04_bootstrap.json
ARM template
link:https://raw.githubusercontent.com/openshift/installer/release-4.17/upi/azurestack/04_bootstrap.json[]
4.2.12. 在 Azure Stack Hub 中创建 control plane 机器
您必须在 Microsoft Azure Stack Hub 中创建 control plane 机器,供您的集群使用。创建这些机器的一种方法是修改提供的 Azure Resource Manager(ARM)模板。
如果不使用提供的 ARM 模板来创建 control plane 机器,您必须检查提供的信息并手动创建基础架构。如果您的集群没有正确初始化,请考虑与安装日志联系红帽支持。
先决条件
- 创建 bootstrap 机器。
流程
-
复制 control plane 机器的 ARM 模板 一节中的模板,并将它以
05_masters.json
保存到集群的安装目录中。此模板描述了集群所需的 control plane 机器。 导出 control plane 机器部署所需的以下变量:
$ export MASTER_IGNITION=`cat <installation_directory>/master.ign | base64 | tr -d '\n'`
使用
az
CLI 创建部署:$ az deployment group create -g ${RESOURCE_GROUP} \ --template-file "<installation_directory>/05_masters.json" \ --parameters masterIgnition="${MASTER_IGNITION}" \ 1 --parameters baseName="${INFRA_ID}" \ 2 --parameters diagnosticsStorageAccountName="${CLUSTER_NAME}sa" 3
4.2.12.1. control plane 机器的 ARM 模板
您可以使用以下 Azure Resource Manager(ARM)模板来部署 OpenShift Container Platform 集群所需的 control plane 机器:
例 4.5. 05_masters.json
ARM template
link:https://raw.githubusercontent.com/openshift/installer/release-4.17/upi/azurestack/05_masters.json[]
4.2.13. 等待 bootstrap 完成并删除 Azure Stack Hub 中的 bootstrap 资源
在 Microsoft Azure Stack Hub 中创建所有所需的基础架构后,请等待您通过安装程序生成的 Ignition 配置文件所置备的机器上完成 bootstrap 过程。
先决条件
- 创建 control plane 机器。
流程
进入包含安装程序的目录并运行以下命令:
$ ./openshift-install wait-for bootstrap-complete --dir <installation_directory> \ 1 --log-level info 2
如果命令退出时没有
FATAL
警告,则您的生产环境 control plane 已被初始化。删除 bootstrap 资源:
$ az network nsg rule delete -g ${RESOURCE_GROUP} --nsg-name ${INFRA_ID}-nsg --name bootstrap_ssh_in $ az vm stop -g ${RESOURCE_GROUP} --name ${INFRA_ID}-bootstrap $ az vm deallocate -g ${RESOURCE_GROUP} --name ${INFRA_ID}-bootstrap $ az vm delete -g ${RESOURCE_GROUP} --name ${INFRA_ID}-bootstrap --yes $ az disk delete -g ${RESOURCE_GROUP} --name ${INFRA_ID}-bootstrap_OSDisk --no-wait --yes $ az network nic delete -g ${RESOURCE_GROUP} --name ${INFRA_ID}-bootstrap-nic --no-wait $ az storage blob delete --account-key ${ACCOUNT_KEY} --account-name ${CLUSTER_NAME}sa --container-name files --name bootstrap.ign $ az network public-ip delete -g ${RESOURCE_GROUP} --name ${INFRA_ID}-bootstrap-ssh-pip
如果没有删除 bootstrap 服务器,因为 API 流量会路由到 bootstrap 服务器,所以安装可能无法成功。
4.2.14. 在 Azure Stack Hub 中创建额外的 worker 机器
您可以通过分散启动各个实例或利用集群外自动化流程(如自动缩放组),在 Microsoft Azure Stack Hub 中为您的集群创建 worker 机器。您还可以利用 OpenShift Container Platform 中的内置集群扩展机制和机器 API。
在本例中,您要使用 Azure Resource Manager(ARM)模板手动启动一个实例。通过在 文件中包括类型为 06_workers.json
的其他资源,即可启动其他实例。
如果不使用提供的 ARM 模板来创建 control plane 机器,您必须检查提供的信息并手动创建基础架构。如果您的集群没有正确初始化,请考虑与安装日志联系红帽支持。
流程
-
复制 worker 机器的 ARM 模板一节中的模板,并将它以
06_workers.json
保存到集群的安装目录中。此模板描述了集群所需的 worker 机器。 导出 worker 机器部署所需的以下变量:
$ export WORKER_IGNITION=`cat <installation_directory>/worker.ign | base64 | tr -d '\n'`
使用
az
CLI 创建部署:$ az deployment group create -g ${RESOURCE_GROUP} \ --template-file "<installation_directory>/06_workers.json" \ --parameters workerIgnition="${WORKER_IGNITION}" \ 1 --parameters baseName="${INFRA_ID}" 2 --parameters diagnosticsStorageAccountName="${CLUSTER_NAME}sa" 3
4.2.14.1. worker 机器的 ARM 模板
您可以使用以下 Azure Resource Manager(ARM)模板来部署 OpenShift Container Platform 集群所需的 worker 机器:
例 4.6. 06_workers.json
ARM template
link:https://raw.githubusercontent.com/openshift/installer/release-4.17/upi/azurestack/06_workers.json[]
4.2.15. 使用 CLI 登录到集群
您可以通过导出集群 kubeconfig
文件,以默认系统用户身份登录集群。kubeconfig
文件包含有关集群的信息,供 CLI 用于将客户端连接到正确的集群和 API 服务器。该文件特定于集群,在 OpenShift Container Platform 安装过程中创建。
先决条件
- 已部署 OpenShift Container Platform 集群。
-
已安装
oc
CLI。
流程
导出
kubeadmin
凭证:$ export KUBECONFIG=<installation_directory>/auth/kubeconfig 1
- 1
- 对于
<installation_directory>
,请指定安装文件保存到的目录的路径。
验证您可以使用导出的配置成功运行
oc
命令:$ oc whoami
输出示例
system:admin
4.2.16. 批准机器的证书签名请求
当您将机器添加到集群时,会为您添加的每台机器生成两个待处理证书签名请求(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 被批准前,前面的输出可能不包括计算节点(也称为 worker 节点)。
检查待处理的 CSR,并确保添加到集群中的每台机器都有
Pending
或Approved
状态的客户端请求:$ 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 都处于
Pending 状态
后,请批准集群机器的 CSR:注意由于 CSR 会自动轮转,因此请在将机器添加到集群后一小时内批准您的 CSR。如果没有在一小时内批准它们,证书将会轮转,每个节点会存在多个证书。您必须批准所有这些证书。批准客户端 CSR 后,Kubelet 为服务证书创建一个二级 CSR,这需要手动批准。然后,如果 Kubelet 请求具有相同参数的新证书,则后续提供证书续订请求由
machine-approver
自动批准。注意对于在未启用机器 API 的平台上运行的集群,如裸机和其他用户置备的基础架构,您必须实施一种方法来自动批准 kubelet 提供证书请求(CSR)。如果没有批准请求,则
oc exec
、ocrsh
和oc logs
命令将无法成功,因为 API 服务器连接到 kubelet 时需要服务证书。与 Kubelet 端点联系的任何操作都需要此证书批准。该方法必须监视新的 CSR,确认 CSR 由 system:node
或system:admin
组中的node-bootstrapper
服务帐户提交,并确认节点的身份。要单独批准,请对每个有效的 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 被批准前,一些 Operator 可能无法使用。
现在,您的客户端请求已被批准,您必须查看添加到集群中的每台机器的服务器请求:
$ 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 没有被批准,且处于
Pending
状态,请批准集群机器的 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 后,机器将
处于 Ready 状态
。运行以下命令验证:$ 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 后可能需要几分钟时间让机器过渡到
Ready 状态
。
附加信息
4.2.17. 添加 Ingress DNS 记录
如果在创建 Kubernetes 清单并生成 Ignition 配置时删除了 DNS 区配置,您必须手动创建指向 Ingress 负载均衡器的 DNS 记录。您可以创建一个通配符 *.apps.{baseDomain}.
或特定的记录。您可以根据要求使用 A、CNAME 和其他记录。
先决条件
- 已使用您置备的基础架构在 Microsoft Azure Stack Hub 上部署了 OpenShift Container Platform 集群。
-
安装 OpenShift CLI(
oc
)。 - 安装或更新 Azure CLI。
流程
确认 Ingress 路由器已创建了负载均衡器并填充
EXTERNAL-IP
字段:$ oc -n openshift-ingress get service router-default
输出示例
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE router-default LoadBalancer 172.30.20.10 35.130.120.110 80:32288/TCP,443:31215/TCP 20
将 Ingress 路由器 IP 导出为变量:
$ export PUBLIC_IP_ROUTER=`oc -n openshift-ingress get service router-default --no-headers | awk '{print $4}'`
在 DNS 区域中添加
*.apps
记录。如果您要将此集群添加到新的 DNS 区,请运行:
$ az network dns record-set a add-record -g ${BASE_DOMAIN_RESOURCE_GROUP} -z ${CLUSTER_NAME}.${BASE_DOMAIN} -n *.apps -a ${PUBLIC_IP_ROUTER} --ttl 300
如果您要将此集群添加到已存在的 DNS 区中,请运行:
$ az network dns record-set a add-record -g ${BASE_DOMAIN_RESOURCE_GROUP} -z ${BASE_DOMAIN} -n *.apps.${CLUSTER_NAME} -a ${PUBLIC_IP_ROUTER} --ttl 300
如果您更喜欢添加特定域而不是使用通配符,可以为集群的每个当前路由创建条目:
$ oc get --all-namespaces -o jsonpath='{range .items[*]}{range .status.ingress[*]}{.host}{"\n"}{end}{end}' routes
输出示例
oauth-openshift.apps.cluster.basedomain.com console-openshift-console.apps.cluster.basedomain.com downloads-openshift-console.apps.cluster.basedomain.com alertmanager-main-openshift-monitoring.apps.cluster.basedomain.com prometheus-k8s-openshift-monitoring.apps.cluster.basedomain.com
4.2.18. 在用户置备的基础架构上完成 Azure Stack Hub 安装
在 Microsoft Azure Stack Hub 用户置备的基础架构上启动 OpenShift Container Platform 安装后,您可以监控集群事件,直到集群就绪。
先决条件
- 在用户置备的 Azure Stack Hub 基础架构上为 OpenShift Container Platform 集群部署 bootstrap 机器。
-
安装
oc
CLI 并登录。
流程
完成集群安装:
$ ./openshift-install --dir <installation_directory> wait-for install-complete 1
输出示例
INFO Waiting up to 30m0s for the cluster to initialize...
- 1
- 对于
<installation_directory>
,请指定安装文件保存到的目录的路径。
重要-
安装程序生成的 Ignition 配置文件包含 24 小时后过期的证书,然后在该时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的
node-bootstrapper
证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。 - 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。
其他资源
第 5 章 Azure Stack Hub 的安装配置参数
在 Azure Stack Hub 上部署 OpenShift Container Platform 集群前,您可以提供一个自定义的 install-config.yaml
安装配置文件,该文件描述了您的环境详情。
5.1. Azure Stack Hub 可用的安装配置参数
下表指定可设置为安装过程的一部分所需的、可选和 Azure Stack Hub 安装配置参数。
安装后,您无法在 install-config.yaml
文件中修改这些参数。
5.1.1. 所需的配置参数
下表描述了所需的安装配置参数:
参数 | 描述 | 值 |
---|---|---|
apiVersion: |
| 字符串 |
baseDomain: |
云供应商的基域。基域用于创建到 OpenShift Container Platform 集群组件的路由。集群的完整 DNS 名称是 |
完全限定域名或子域名,如 |
metadata: |
Kubernetes 资源 | 对象 |
metadata: name: |
集群的名称。集群的 DNS 记录是 |
小写字母、连字符( |
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" } } } |
5.1.2. 网络配置参数
您可以根据现有网络基础架构的要求自定义安装配置。例如,您可以扩展集群网络的 IP 地址块,或者提供不同于默认值的不同 IP 地址块。
仅支持 IPv4 地址。
参数 | 描述 | 值 |
---|---|---|
networking: | 集群网络的配置。 | 对象 注意
您无法在安装后修改 |
networking: networkType: | 要安装的 Red Hat OpenShift Networking 网络插件。 |
|
networking: clusterNetwork: | pod 的 IP 地址块。
默认值为 如果您指定了多个 IP 地址块,块不得重叠。 | 对象数组。例如: networking: clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 |
networking: clusterNetwork: cidr: |
使用 IPv4 网络。 |
无类别域间路由(CIDR)表示法中的 IP 地址块。IPv4 块的前缀长度介于 |
networking: clusterNetwork: hostPrefix: |
分配给每个节点的子网前缀长度。例如,如果 | 子网前缀。
默认值为 |
networking: serviceNetwork: |
服务的 IP 地址块。默认值为 OVN-Kubernetes 网络插件只支持服务网络的一个 IP 地址块。 | CIDR 格式具有 IP 地址块的数组。例如: networking: serviceNetwork: - 172.30.0.0/16 |
networking: machineNetwork: | 机器的 IP 地址块。 如果您指定了多个 IP 地址块,块不得重叠。 | 对象数组。例如: networking: machineNetwork: - cidr: 10.0.0.0/16 |
networking: machineNetwork: cidr: |
使用 | CIDR 表示法中的 IP 网络块。
例如: 注意
将 |
5.1.3. 可选的配置参数
下表描述了可选的安装配置参数:
参数 | 描述 | 值 |
---|---|---|
additionalTrustBundle: | 添加到节点可信证书存储中的 PEM 编码 X.509 证书捆绑包。配置了代理时,也可以使用此信任捆绑包。 | 字符串 |
capabilities: | 控制可选核心组件的安装。您可以通过禁用可选组件来减少 OpenShift Container Platform 集群的空间。如需更多信息,请参阅安装中的"集群功能"页面。 | 字符串数组 |
capabilities: baselineCapabilitySet: |
选择要启用的一组初始可选功能。有效值为 | 字符串 |
capabilities: additionalEnabledCapabilities: |
将可选功能集合扩展到您在 | 字符串数组 |
cpuPartitioningMode: | 启用工作负载分区,它会隔离 OpenShift Container Platform 服务、集群管理工作负载和基础架构 pod,以便在保留的一组 CPU 上运行。工作负载分区只能在安装过程中启用,且在安装后无法禁用。虽然此字段启用工作负载分区,但它不会将工作负载配置为使用特定的 CPU。如需更多信息,请参阅 Scalability and Performance 部分中的 Workload partitioning 页面。 |
|
compute: | 组成计算节点的机器的配置。 |
|
compute: architecture: |
决定池中机器的指令集合架构。目前,不支持具有不同架构的集群。所有池都必须指定相同的架构。有效值为 | 字符串 |
compute: hyperthreading: |
是否在计算机器上启用或禁用并发多 重要 如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。 |
|
compute: name: |
使用 |
|
compute: platform: |
使用 |
|
compute: replicas: | 要置备的计算机器数量,也称为 worker 机器。 |
大于或等于 |
featureSet: | 为功能集启用集群。功能集是 OpenShift Container Platform 功能的集合,默认情况下不启用。有关在安装过程中启用功能集的更多信息,请参阅"使用功能门启用功能"。 |
字符串.要启用的功能集的名称,如 |
controlPlane: | 组成 control plane 的机器的配置。 |
|
controlPlane: architecture: |
决定池中机器的指令集合架构。目前,不支持具有不同架构的集群。所有池都必须指定相同的架构。有效值为 | 字符串 |
controlPlane: hyperthreading: |
是否在 control plane 机器上启用或禁用并发多 重要 如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。 |
|
controlPlane: name: |
使用 |
|
controlPlane: platform: |
使用 |
|
controlPlane: replicas: | 要置备的 control plane 机器数量。 |
部署单节点 OpenShift 时支持的值为 |
credentialsMode: | Cloud Credential Operator(CCO)模式。如果没有指定模式,CCO 会动态尝试决定提供的凭证的功能,在支持多个模式的平台上首选 mint 模式。 注意 不是所有 CCO 模式都支持所有云供应商。有关 CCO 模式的更多信息,请参阅身份验证和授权内容中的"管理云供应商凭证"条目。 |
|
fips: |
启用或禁用 FIPS 模式。默认值为 重要 要为集群启用 FIPS 模式,您必须从配置为以 FIPS 模式操作的 Red Hat Enterprise Linux (RHEL) 计算机运行安装程序。有关在 RHEL 中配置 FIPS 模式的更多信息,请参阅将 RHEL 切换到 FIPS 模式。 当以 FIPS 模式运行 Red Hat Enterprise Linux (RHEL) 或 Red Hat Enterprise Linux CoreOS (RHCOS)时,OpenShift Container Platform 核心组件使用 RHEL 加密库,在 x86_64、ppc64le 和 s390x 架构上提交到 NIST FIPS 140-2/140-3 Validation。 注意 如果使用 Azure File 存储,则无法启用 FIPS 模式。 |
|
imageContentSources: | release-image 内容的源和存储库。 |
对象数组。包括一个 |
imageContentSources: source: |
使用 | 字符串 |
imageContentSources: mirrors: | 指定可能还包含同一镜像的一个或多个仓库。 | 字符串数组 |
publish: | 如何发布或公开集群的面向用户的端点,如 Kubernetes API、OpenShift 路由。 |
在非云平台上不支持将此字段设置为 重要
如果将字段的值设为 |
sshKey: | 用于验证对集群机器的访问的 SSH 密钥。 注意
对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定 |
例如, |
5.1.4. 其他 Azure Stack Hub 配置参数
下表描述了其他 Azure 配置参数:
参数 | 描述 | 值 |
---|---|---|
compute: platform: azure: osDisk: diskSizeGB: | 虚拟机的 Azure 磁盘大小。 |
以 GB 为单位表示磁盘大小的整数。默认值为 |
compute: platform: azure: osDisk: diskType: | 定义磁盘的类型。 |
|
compute: platform: azure: type: | 定义计算机器的 azure 实例类型。 | 字符串 |
controlPlane: platform: azure: osDisk: diskSizeGB: | 虚拟机的 Azure 磁盘大小。 |
以 GB 为单位表示磁盘大小的整数。默认值为 |
controlPlane: platform: azure: osDisk: diskType: | 定义磁盘的类型。 |
|
controlPlane: platform: azure: type: | 定义 control plane 机器的 azure 实例类型。 | 字符串 |
platform: azure: defaultMachinePlatform: osDisk: diskSizeGB: | 虚拟机的 Azure 磁盘大小。 |
以 GB 为单位表示磁盘大小的整数。默认值为 |
platform: azure: defaultMachinePlatform: osDisk: diskType: | 定义磁盘的类型。 |
|
platform: azure: defaultMachinePlatform: type: | control plane 和计算机器的 Azure 实例类型。 | Azure 实例类型。 |
platform: azure: armEndpoint: | Azure Stack Hub operator 提供的 Azure Resource Manager 端点的 URL。 | 字符串 |
platform: azure: baseDomainResourceGroupName: | 包含基域的 DNS 区的资源组的名称。 |
字符串,如 |
platform: azure: region: | Azure Stack Hub 本地区域的名称。 | 字符串 |
platform: azure: resourceGroupName: | 集群要安装到的已有资源组的名称。此资源组必须为空,并且仅用于此特定群集;群集组件假定资源组中所有资源的所有权。如果您将安装程序的服务主体范围限制到这个资源组,您必须确保您的环境中安装程序使用的所有其他资源都有必要的权限,如公共 DNS 区和虚拟网络。使用安装程序销毁集群会删除此资源组。 |
字符串,如 |
platform: azure: outboundType: | 用于将集群连接到互联网的出站路由策略。如果您使用用户定义的路由,则必须在安装集群前配置出站路由。安装程序不负责配置用户定义的路由。 |
|
platform: azure: cloudName: | 用于使用适当的 Azure API 端点配置 Azure SDK 的 Azure 云环境名称。 |
|
clusterOSImage: | Azure Stack 环境中包含 RHCOS VHD 存储 blob 的 URL。 | 字符串,例如 https://vhdsa.blob.example.example.com/vhd/rhcos-410.84.202112040202-0-azurestack.x86_64.vhd |
第 6 章 在 Azure Stack Hub 上卸载集群
您可以删除部署到 Azure Stack Hub 的集群。
6.1. 删除使用安装程序置备的基础架构的集群
您可以从云中删除使用安装程序置备的基础架构的集群。
卸载后,检查云供应商是否有未正确删除的资源,特别是在用户置备基础架构(UPI)集群中。可能存在安装程序未创建或安装程序无法访问的资源。
先决条件
- 有用于部署集群的安装程序副本。
- 有创建集群时安装程序生成的文件。
流程
在用来安装集群的计算机中包含安装程序的目录中,运行以下命令:
$ ./openshift-install destroy cluster \ --dir <installation_directory> --log-level info 1 2
注意您必须为集群指定包含集群定义文件的目录。安装程序需要此目录中的
metadata.json
文件来删除集群。-
可选:删除
<installation_directory>
目录和 OpenShift Container Platform 安装程序。
Legal Notice
Copyright © 2024 Red Hat, Inc.
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.