在 Nutanix 上安装
在 Nutanix 上安装 OpenShift Container Platform
摘要
第 1 章 准备在 Nutanix 上安装
在安装 OpenShift Container Platform 集群前,请确定您的 Nutanix 环境满足以下要求。
1.1. Nutanix 版本要求
您必须将 OpenShift Container Platform 集群安装到符合以下要求的 Nutanix 环境。
组件 | 所需的版本 |
---|---|
Nutanix AOS | 6.5.2.7 或更高版本 |
Prism Central | pc.2022.6 或更高版本 |
1.2. 环境要求
在安装 OpenShift Container Platform 集群前,请查看以下 Nutanix AOS 环境要求。
1.2.1. 所需的帐户权限
安装程序需要访问具有所需权限的 Nutanix 帐户,以部署集群并维护其每日操作。以下选项可供您使用:
- 您可以使用具有管理特权的本地 Prism Central 用户帐户。使用本地帐户是授予对具有所需权限的帐户访问权限的最快的方法。
- 如果机构的安全策略要求您使用更严格的权限集,请使用下表中列出的权限在 Prism Central 中创建自定义 Cloud Native 角色。然后,您可以将角色分配给作为 Prism Central 身份验证目录成员的用户帐户。
管理此用户帐户时请考虑以下几点:
- 在为角色分配实体时,请确保用户只能访问部署虚拟机所需的 Prism Element 和子网。
- 确保该用户是需要为其分配虚拟机的项目的成员。
如需更多信息,请参阅 Nutanix 文档中有关自定义云原生角色, 分配角色, 和为项目添加用户的内容。
例 1.1. 创建自定义云原生角色所需的权限
Nutanix 对象 | 必要时 | Nutanix API 中所需的权限 | 描述 |
---|---|---|---|
Categories | Always |
| 创建、读取和删除分配给 OpenShift Container Platform 机器的类别。 |
镜像 | Always |
| 创建、读取和删除用于 OpenShift Container Platform 机器的操作系统镜像。 |
虚拟机 | Always |
| 创建、读取和删除 OpenShift Container Platform 机器。 |
Clusters | Always |
| 查看托管 OpenShift Container Platform 机器的 Prism Element 集群。 |
子网 | Always |
| 查看托管 OpenShift Container Platform 机器的子网。 |
项目 | 如果您将项目与计算机器、control plane 机器或所有机器关联。 |
| 查看 Prism Central 中定义的项目,并允许将项目分配给 OpenShift Container Platform 机器。 |
1.2.2. 集群限制
可用资源因集群而异。Nutanix 环境中可能的集群数量主要受可用的存储空间限制,以及与集群所创建的资源相关的限制,以及部署集群所需的资源(如 IP 地址和网络)。
1.2.3. 集群资源
使用标准集群至少需要 800 GB 存储。
当您部署使用安装程序置备的基础架构的 OpenShift Container Platform 集群时,安装程序必须能够在 Nutanix 实例中创建多个资源。虽然这些资源使用 856 GB 存储,但 bootstrap 节点会作为安装过程的一部分被销毁。
标准的 OpenShift Container Platform 安装会创建以下资源:
- 1 个标签
虚拟机:
- 1 个磁盘镜像
- 1 个临时 bootstrap 节点
- 3 个 control plane 节点
- 3 个计算机器
1.2.4. 网络要求
您必须对网络使用 AHV IP 地址管理(IPAM)或动态主机配置协议(DHCP),并确保它被配置为为集群机器提供持久的 IP 地址。另外,在安装 OpenShift Container Platform 集群前创建以下网络资源:
- IP 地址
- DNS 记录
Nutanix Flow Virtual Networking 支持新的集群安装。要使用这个功能,在安装前在 AHV 集群上启用流虚拟网络。如需更多信息,请参阅 流虚拟网络概述。
建议集群中的每个 OpenShift Container Platform 节点都可以访问可通过 DHCP 发现的网络时间协议 (NTP) 服务器。没有 NTP 服务器即可安装。但是,NTP 服务器可防止错误通常与异步服务器时钟相关联。
1.2.4.1. 所需的 IP 地址
安装程序置备的安装需要两个静态虚拟 IP (VIP) 地址:
- API 的 VIP 地址是必需的。此地址用于访问集群 API。
- 需要一个 ingress 的 VIP 地址。此地址用于集群入口流量。
安装 OpenShift Container Platform 集群时,可以指定这些 IP 地址。
1.2.4.2. DNS 记录
您必须在适当的 DNS 服务器中为托管 OpenShift Container Platform 集群的 Nutanix 实例创建两个静态 IP 地址的 DNS 记录。在每个记录中,<cluster_name>
是集群名称,<base_domain> 是您
在安装集群时指定的集群基域。
如果使用自己的 DNS 或 DHCP 服务器,还必须为每个节点创建记录,包括 bootstrap、control plane 和计算节点。
完整的 DNS 记录采用以下形式: <component>.<cluster_name>.<base_domain>.
。
组件 | 记录 | 描述 |
---|---|---|
API VIP |
| 此 DNS A/AAAA 或 CNAME 记录必须指向 control plane 机器的负载均衡器。此记录必须由集群外的客户端和集群中的所有节点解析。 |
Ingress VIP |
| 通配符 DNS A/AAAA 或 CNAME 记录,指向以运行入口路由器 Pod 的机器(默认为 worker 节点)为目标的负载均衡器。此记录必须由集群外的客户端和集群中的所有节点解析。 |
1.3. 配置 Cloud Credential Operator 工具
Cloud Credential Operator(CCO)将云供应商凭证作为 Kubernetes 自定义资源定义(CRD)进行管理。要在 Nutanix 上安装集群,您必须将 CCO 设置为手动
模式,作为安装过程的一部分。
当 Cloud Credential Operator(CCO)以手动模式运行时,要从集群外部创建和管理云凭证,提取并准备 CCO 实用程序(ccoctl
)二进制文件。
ccoctl
工具是在 Linux 环境中运行的 Linux 二进制文件。
先决条件
- 您可以访问具有集群管理员权限的 OpenShift Container Platform 帐户。
-
已安装 OpenShift CLI(
oc
)。
流程
运行以下命令,为 OpenShift Container Platform 发行镜像设置变量:
$ RELEASE_IMAGE=$(./openshift-install version | awk '/release image/ {print $3}')
运行以下命令,从 OpenShift Container Platform 发行镜像获取 CCO 容器镜像:
$ CCO_IMAGE=$(oc adm release info --image-for='cloud-credential-operator' $RELEASE_IMAGE -a ~/.pull-secret)
注意确保
$RELEASE_IMAGE
的架构与将使用ccoctl
工具的环境架构相匹配。运行以下命令,将 CCO 容器镜像中的
ccoctl
二进制文件提取到 OpenShift Container Platform 发行镜像中:$ oc image extract $CCO_IMAGE \ --file="/usr/bin/ccoctl.<rhel_version>" \1 -a ~/.pull-secret
- 1
- 对于
<rhel_version>
,请指定与主机使用的 Red Hat Enterprise Linux (RHEL) 版本对应的值。如果没有指定值,则默认使用ccoctl.rhel8
。以下值有效:-
rhel8
: 为使用 RHEL 8 的主机指定这个值。 -
rhel9
:为使用 RHEL 9 的主机指定这个值。
-
运行以下命令更改权限以使
ccoctl
可执行:$ chmod 775 ccoctl.<rhel_version>
验证
要验证
ccoctl
是否准备就绪,可以尝试显示帮助文件。运行命令时使用相对文件名,例如:$ ./ccoctl.rhel9
输出示例
OpenShift credentials provisioning tool Usage: ccoctl [command] Available Commands: aws Manage credentials objects for AWS cloud azure Manage credentials objects for Azure gcp Manage credentials objects for Google cloud help Help about any command ibmcloud Manage credentials objects for {ibm-cloud-title} nutanix Manage credentials objects for Nutanix Flags: -h, --help help for ccoctl Use "ccoctl [command] --help" for more information about a command.
其他资源
第 2 章 使用多个 Prism Element 的容错部署
默认情况下,安装程序会将 control plane 和计算机器安装到单个 Nutanix Prism Element (集群) 中。要改进 OpenShift Container Platform 集群的容错功能,您现在可以通过配置故障域来指定这些机器分布在多个 Nutanix 集群中。
故障域代表额外的 Prism Element 实例,在安装过程中和安装后可用于 OpenShift Container Platform 机器池。
2.1. 安装方法和故障域配置
OpenShift Container Platform 的安装方法决定了如何以及何时配置故障域:
如果使用安装程序置备的基础架构部署,您可以在部署集群前在安装配置文件中配置故障域。如需更多信息,请参阅配置故障域。
您还可以在部署集群后配置故障域。有关在安装后配置故障域的更多信息,请参阅在现有的 Nutanix 集群中添加故障域。
- 如果使用自己管理的基础架构(用户置备的基础架构)部署,则不需要额外的配置。部署集群后,您可以在故障域间手动分发 control plane 和计算机器。
2.2. 在现有的 Nutanix 集群中添加故障域
默认情况下,安装程序会将 control plane 和计算机器安装到单个 Nutanix Prism Element (集群) 中。部署 OpenShift Container Platform 集群后,您可以使用故障域在部署中添加额外的 Prism Element 实例来提高其容错功能。
故障域代表单个 Prism Element 实例,可以部署新的 control plane 和计算机器,并可分发现有的 control plane 和计算机器。
2.2.1. 故障域要求
在计划使用故障域时,请考虑以下要求:
- 所有 Nutanix Prism Element 实例都必须由同一 Prism Central 实例管理。不支持由多个 Prism Central 实例组成的部署。
- 组成 Prism Element 集群的机器必须位于同一以太网网络中,以便故障域能够相互通信。
- 每个 Prism Element 中都需要一个子网,将用作 OpenShift Container Platform 集群中的故障域。在定义这些子网时,它们必须共享相同的 IP 地址前缀 (CIDR),并且应包含 OpenShift Container Platform 集群使用的虚拟 IP 地址。
2.2.2. 在 Infrastructure CR 中添加故障域
您可以通过修改其 Infrastructure 自定义资源 (CR) (infrastructures.config.openshift.io
),将故障域添加到现有 Nutanix 集群。
建议您配置三个故障域以确保高可用性。
流程
运行以下命令来编辑 Infrastructure CR:
$ oc edit infrastructures.config.openshift.io cluster
配置故障域。
带有 Nutanix 故障域的基础架构 CR 示例
spec: cloudConfig: key: config name: cloud-provider-config #... platformSpec: nutanix: failureDomains: - cluster: type: UUID uuid: <uuid> name: <failure_domain_name> subnets: - type: UUID uuid: <network_uuid> - cluster: type: UUID uuid: <uuid> name: <failure_domain_name> subnets: - type: UUID uuid: <network_uuid> - cluster: type: UUID uuid: <uuid> name: <failure_domain_name> subnets: - type: UUID uuid: <network_uuid> # ...
其中:
<uuid>
- 指定 Prism Element 的通用唯一标识符 (UUID)。
<failure_domain_name>
-
指定故障域的唯一名称。名称的长度不能超过 64 个字符,可以包括小写字母、数字和短划线 (
-
)。短划线不能是名称的第一个或最后一个。 <network_uuid>
- 指定 Prism Element 子网对象的 UUID。子网的 IP 地址前缀 (CIDR) 应包含 OpenShift Container Platform 集群使用的虚拟 IP 地址。在 OpenShift Container Platform 集群中,只支持每个故障域 (Prism Element) 一个子网。
- 保存 CR 以应用更改。
2.2.3. 在故障域间分布 control plane
您可以通过修改 control plane 机器集自定义资源 (CR) 在 Nutanix 故障域之间分发 control plane。
先决条件
- 您已在集群的 Infrastructure 自定义资源 (CR) 中配置了故障域。
- control plane 机器集自定义资源 (CR) 处于 active 状态。
有关检查 control plane 机器集自定义资源状态的更多信息,请参阅"添加资源"。
流程
运行以下命令来编辑 control plane 机器集 CR:
$ oc edit controlplanemachineset.machine.openshift.io cluster -n openshift-machine-api
通过添加
spec.template.machines_v1beta1_machine_openshift_io.failureDomains
小节,将 control plane 机器集配置为使用故障域。使用 Nutanix 故障域的 control plane 机器集示例
apiVersion: machine.openshift.io/v1 kind: ControlPlaneMachineSet metadata: creationTimestamp: null labels: machine.openshift.io/cluster-api-cluster: <cluster_name> name: cluster namespace: openshift-machine-api spec: # ... template: machineType: machines_v1beta1_machine_openshift_io machines_v1beta1_machine_openshift_io: failureDomains: platform: Nutanix nutanix: - name: <failure_domain_name_1> - name: <failure_domain_name_2> - name: <failure_domain_name_3> # ...
- 保存您的更改。
默认情况下,control plane 机器集会自动将更改传播到 control plane 配置。如果集群被配置为使用 OnDelete
更新策略,您必须手动替换 control plane。如需更多信息,请参阅"附加资源"。
2.2.4. 在故障域间分布计算机器
您可以使用以下方法之一在 Nutanix 故障域间分发计算机器:
- 通过 编辑现有的计算机器集,您可以在 Nutanix 故障域间分发计算机器,作为最小配置更新。
- 替换现有计算机器集 可确保规格不可变,且所有机器都相同。
2.2.4.1. 编辑计算机器集以实施故障域
要使用现有计算机器集在 Nutanix 故障域之间分发计算机器,您可以使用您的配置更新计算机器集,然后使用扩展来替换现有的计算机器。
先决条件
- 您已在集群的 Infrastructure 自定义资源 (CR) 中配置了故障域。
流程
运行以下命令,以查看集群的 Infrastructure CR。
$ oc describe infrastructures.config.openshift.io cluster
-
对于每个故障域 (
platformSpec.nutanix.failureDomains
),请注意集群的 UUID、名称和子网对象 UUID。这些值需要将故障域添加到计算机器集中。 运行以下命令列出集群中的计算机器集:
$ oc get machinesets -n openshift-machine-api
输出示例
NAME DESIRED CURRENT READY AVAILABLE AGE <machine_set_name_1> 1 1 1 1 55m <machine_set_name_2> 1 1 1 1 55m
运行以下命令来编辑第一个计算机器集:
$ oc edit machineset <machine_set_name_1> -n openshift-machine-api
通过将以下内容添加到
spec.template.spec.providerSpec.value
小节中,将计算机器设置配置为使用第一个故障域:注意确保为
cluster
hesubnets
字段指定的值与集群的 Infrastructure CR 中的failureDomains
小节中配置的值匹配。使用 Nutanix 故障域的计算机器集示例
apiVersion: machine.openshift.io/v1 kind: MachineSet metadata: creationTimestamp: null labels: machine.openshift.io/cluster-api-cluster: <cluster_name> name: <machine_set_name_1> namespace: openshift-machine-api spec: replicas: 2 # ... template: spec: # ... providerSpec: value: apiVersion: machine.openshift.io/v1 failureDomain: name: <failure_domain_name_1> cluster: type: uuid uuid: <prism_element_uuid_1> subnets: - type: uuid uuid: <prism_element_network_uuid_1> # ...
-
注意
spec.replicas
的值,因为在扩展计算机器时需要它来应用更改。 - 保存您的更改。
运行以下命令,列出由更新的计算机器集管理的机器:
$ oc get -n openshift-machine-api machines \ -l machine.openshift.io/cluster-api-machineset=<machine_set_name_1>
输出示例
NAME PHASE TYPE REGION ZONE AGE <machine_name_original_1> Running AHV Unnamed Development-STS 4h <machine_name_original_2> Running AHV Unnamed Development-STS 4h
对于由更新的计算机器集管理的每台机器,请运行以下命令设置
delete
注解:$ oc annotate machine/<machine_name_original_1> \ -n openshift-machine-api \ machine.openshift.io/delete-machine="true"
要使用新配置创建替换机器,请运行以下命令将计算机器设置为两倍:
$ oc scale --replicas=<twice_the_number_of_replicas> \1 machineset <machine_set_name_1> \ -n openshift-machine-api
- 1
- 例如,如果计算机器设置中的原始副本数为
2
,请将副本扩展到4
。
运行以下命令,列出由更新的计算机器集管理的机器:
$ oc get -n openshift-machine-api machines -l machine.openshift.io/cluster-api-machineset=<machine_set_name_1>
当新机器处于
Running
阶段时,您可以将计算机器设置为原始副本数。要删除使用旧配置创建的机器,请运行以下命令将计算机器设置为原始副本数:
$ oc scale --replicas=<original_number_of_replicas> \1 machineset <machine_set_name_1> \ -n openshift-machine-api
- 1
- 例如,如果计算机器设置中的原始副本数为
2
,请将副本扩展到2
。
- 根据需要,继续修改机器集以引用可用于部署的额外故障域。
其他资源
2.2.4.2. 替换计算机器集以实施故障域
要通过替换计算机器集来跨 Nutanix 故障域分发计算机器,您可以使用您的配置创建新的计算机器集,等待它创建的机器启动,然后删除旧的计算机器集。
先决条件
- 您已在集群的 Infrastructure 自定义资源 (CR) 中配置了故障域。
流程
运行以下命令,以查看集群的 Infrastructure CR。
$ oc describe infrastructures.config.openshift.io cluster
-
对于每个故障域 (
platformSpec.nutanix.failureDomains
),请注意集群的 UUID、名称和子网对象 UUID。这些值需要将故障域添加到计算机器集中。 运行以下命令列出集群中的计算机器集:
$ oc get machinesets -n openshift-machine-api
输出示例
NAME DESIRED CURRENT READY AVAILABLE AGE <original_machine_set_name_1> 1 1 1 1 55m <original_machine_set_name_2> 1 1 1 1 55m
- 请注意现有计算机器集的名称。
使用以下方法之一创建一个包含新计算机器设置自定义资源 (CR) 的 YAML 文件:
运行以下命令,将现有计算机器集配置复制到新文件中:
$ oc get machineset <original_machine_set_name_1> \ -n openshift-machine-api -o yaml > <new_machine_set_name_1>.yaml
您可以使用首选文本编辑器编辑此 YAML 文件。
使用您的首选文本编辑器创建名为
<new_machine_set_name_1>.yaml
的空白 YAML 文件,并包含新计算机器集所需的值。如果您不确定为特定字段设置哪个值,您可以通过运行以下命令来查看现有计算机器集 CR 的值:
$ oc get machineset <original_machine_set_name_1> \ -n openshift-machine-api -o yaml
输出示例
apiVersion: machine.openshift.io/v1beta1 kind: MachineSet metadata: labels: machine.openshift.io/cluster-api-cluster: <infrastructure_id> 1 name: <infrastructure_id>-<role> 2 namespace: openshift-machine-api spec: replicas: 1 selector: matchLabels: machine.openshift.io/cluster-api-cluster: <infrastructure_id> machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role> template: metadata: labels: machine.openshift.io/cluster-api-cluster: <infrastructure_id> machine.openshift.io/cluster-api-machine-role: <role> machine.openshift.io/cluster-api-machine-type: <role> machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role> spec: providerSpec: 3 ...
通过更新或将以下内容添加到
<new_machine_set_name_1>.yaml
文件中的spec.template.spec.providerSpec.value
小节中,将新的计算机器集配置为使用第一个故障域。注意确保为
cluster
hesubnets
字段指定的值与集群的 Infrastructure CR 中的failureDomains
小节中配置的值匹配。使用 Nutanix 故障域的计算机器集示例
apiVersion: machine.openshift.io/v1 kind: MachineSet metadata: creationTimestamp: null labels: machine.openshift.io/cluster-api-cluster: <cluster_name> name: <new_machine_set_name_1> namespace: openshift-machine-api spec: replicas: 2 # ... template: spec: # ... providerSpec: value: apiVersion: machine.openshift.io/v1 failureDomain: name: <failure_domain_name_1> cluster: type: uuid uuid: <prism_element_uuid_1> subnets: - type: uuid uuid: <prism_element_network_uuid_1> # ...
- 保存您的更改。
运行以下命令来创建计算机器设置 CR:
$ oc create -f <new_machine_set_name_1>.yaml
- 根据需要,继续创建计算机器集以引用可用于部署的额外故障域。
通过为每个新计算机器集运行以下命令来列出由新计算机器集管理的机器:
$ oc get -n openshift-machine-api machines -l machine.openshift.io/cluster-api-machineset=<new_machine_set_name_1>
输出示例
NAME PHASE TYPE REGION ZONE AGE <machine_from_new_1> Provisioned AHV Unnamed Development-STS 25s <machine_from_new_2> Provisioning AHV Unnamed Development-STS 25s
当新机器处于
Running
阶段时,您可以删除不包含故障域配置的旧计算机器集。当您确认新机器处于
Running
阶段时,通过为每个机器运行以下命令来删除旧计算机器集:$ oc delete machineset <original_machine_set_name_1> -n openshift-machine-api
验证
要验证没有更新的配置的计算机器集已被删除,请运行以下命令列出集群中的计算机器集:
$ oc get machinesets -n openshift-machine-api
输出示例
NAME DESIRED CURRENT READY AVAILABLE AGE <new_machine_set_name_1> 1 1 1 1 4m12s <new_machine_set_name_2> 1 1 1 1 4m12s
要验证没有更新配置的计算机器是否已删除,请运行以下命令列出集群中的机器:
$ oc get -n openshift-machine-api machines
删除过程中的输出示例
NAME PHASE TYPE REGION ZONE AGE <machine_from_new_1> Running AHV Unnamed Development-STS 5m41s <machine_from_new_2> Running AHV Unnamed Development-STS 5m41s <machine_from_original_1> Deleting AHV Unnamed Development-STS 4h <machine_from_original_2> Deleting AHV Unnamed Development-STS 4h
删除完成后的输出示例
NAME PHASE TYPE REGION ZONE AGE <machine_from_new_1> Running AHV Unnamed Development-STS 6m30s <machine_from_new_2> Running AHV Unnamed Development-STS 6m30s
要验证由新计算机器集创建的机器是否具有正确的配置,请运行以下命令检查 CR 中的相关字段是否有新机器:
$ oc describe machine <machine_from_new_1> -n openshift-machine-api
其他资源
第 3 章 在 Nutanix 上安装集群
在 OpenShift Container Platform 版本 4.17 中,您可以选择以下选项之一在 Nutanix 实例上安装集群:
使用安装程序置备的基础架构 :使用以下部分中的步骤使用安装程序置备的基础架构。安装程序置备的基础架构适用于在连接的或断开连接的网络环境中安装。安装程序置备的基础架构包括为集群置备底层基础架构的安装程序。
使用 Assisted Installer : 在 console.redhat.com 中托管的 Assisted Installer。Assisted Installer 无法在断开连接的环境中使用。Assisted Installer 不会为集群置备底层基础架构,因此您必须在运行 Assisted Installer 前置备基础架构。使用 Assisted Installer 安装还提供与 Nutanix 集成,从而启用自动扩展。如需了解更多详细信息,请参阅使用 Assisted Installer 安装内部集群。
使用用户置备的基础架构 :完成 在任意平台上安装集群文档中概述的相关步骤。
3.1. 先决条件
- 您已查看了有关 OpenShift Container Platform 安装和更新流程的详细信息。
- 安装程序需要访问 Prism Central 和 Prism Element 上的端口 9440。您确认可以访问端口 9440。
如果使用防火墙,已满足以下先决条件:
- 已确认可以访问端口 9440。control plane 节点必须能够访问端口 9440 上的 Prism Central 和 Prism Element 才能成功安装。
- 您已将防火墙配置为授予访问 OpenShift Container Platform 所需站点的访问权限。这包括使用 Telemetry。
如果您的 Nutanix 环境使用默认自签名 SSL 证书,请将它替换为 CA 签名的证书。安装程序需要一个有效的 CA 签名证书来访问 Prism Central API。有关替换自签名证书的更多信息,请参阅 Nutanix AOS 安全指南。
如果您的 Nutanix 环境使用内部 CA 来发布证书,您必须将集群范围代理配置为安装过程的一部分。如需更多信息,请参阅配置自定义 PKI。
重要使用 2048 位证书。如果您使用带有 Prism Central 2022.x 的 4096 位证书,则安装会失败。
3.2. OpenShift Container Platform 互联网访问
在 OpenShift Container Platform 4.17 中,您需要访问互联网来安装集群。
您必须具有以下互联网访问权限:
- 访问 OpenShift Cluster Manager 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
- 访问 Quay.io,以获取安装集群所需的软件包。
- 获取执行集群更新所需的软件包。
如果您的集群无法直接访问互联网,则可以在置备的某些类型的基础架构上执行受限网络安装。在此过程中,您可以下载所需的内容,并使用它为镜像 registry 填充安装软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群前,您要更新镜像 registry 的内容。
3.3. Prism Central 的互联网访问
Prism Central 需要访问互联网来获得用来安装集群的 Red Hat Enterprise Linux CoreOS (RHCOS) 镜像。Nutanix 的 RHCOS 镜像位于 rhcos.mirror.openshift.com
。
3.4. 为集群节点 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.5. 获取安装程序
在安装 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.6. 在您的系统信任中添加 Nutanix root CA 证书
因为安装程序需要访问 Prism Central API,所以您必须在安装 OpenShift Container Platform 集群前将 Nutanix 可信根 CA 证书添加到您的系统信任中。
流程
- 在 Prism Central web 控制台中下载 Nutanix root CA 证书。
- 提取包含 Nutanix root CA 证书的压缩文件。
将您的操作系统的文件添加到系统信任中。例如,在 Fedora 操作系统中运行以下命令:
# cp certs/lin/* /etc/pki/ca-trust/source/anchors
更新您的系统信任关系。例如,在 Fedora 操作系统中运行以下命令:
# update-ca-trust extract
3.7. 创建安装配置文件
您可以自定义在 Nutanix 上安装的 OpenShift Container Platform 集群。
先决条件
- 您有 OpenShift Container Platform 安装程序和集群的 pull secret。
- 您已确认满足了 Nutanix 网络要求。如需更多信息,请参阅"准备在 Nutanix 上安装"。
流程
创建
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 集群,请指定
ssh-agent
进程使用的 SSH 密钥。- 选择 nutanix 作为目标平台。
- 输入 Prism Central 域名或 IP 地址。
- 输入用于登录 Prism Central 的端口。
输入用于登录 Prism Central 的凭证。
安装程序连接到 Prism Central。
- 选择用于管理 OpenShift Container Platform 集群的 Prism Element。
- 选择要使用的网络子网。
- 输入您为 control plane API 访问配置的虚拟 IP 地址。
- 输入您为集群入口配置的虚拟 IP 地址。
- 输入基域。这个基域必须与您在 DNS 记录中配置的域相同。
为集群输入描述性名称。
您输入的集群名称必须与您在配置 DNS 记录时指定的集群名称匹配。
可选:更新
install.config.yaml
文件中的一个或多个默认配置参数,以自定义安装。有关参数的更多信息,请参阅"安装配置参数"。
注意如果要安装三节点集群,请确保将
compute.replicas
参数设置为0
。这样可确保集群的 control plane 可以调度。如需更多信息,请参阅"在 Nutanix 上安装三节点集群"。备份
install-config.yaml
文件,以便您可以使用它安装多个集群。重要install-config.yaml
文件会在安装过程中消耗掉。如果要重复使用此文件,必须现在备份。
其他资源
3.7.1. Nutanix 的自定义 install-config.yaml 文件示例
您可以自定义 install-config.yaml
文件,以指定有关 OpenShift Container Platform 集群平台的更多详情,或修改所需参数的值。
此示例 YAML 文件仅供参考。您必须使用安装程序来获取 install-config.yaml
文件,并进行修改。
apiVersion: v1 baseDomain: example.com 1 compute: 2 - hyperthreading: Enabled 3 name: worker replicas: 3 platform: nutanix: 4 cpus: 2 coresPerSocket: 2 memoryMiB: 8196 osDisk: diskSizeGiB: 120 categories: 5 - key: <category_key_name> value: <category_value> controlPlane: 6 hyperthreading: Enabled 7 name: master replicas: 3 platform: nutanix: 8 cpus: 4 coresPerSocket: 2 memoryMiB: 16384 osDisk: diskSizeGiB: 120 categories: 9 - key: <category_key_name> value: <category_value> metadata: creationTimestamp: null name: test-cluster 10 networking: clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 machineNetwork: - cidr: 10.0.0.0/16 networkType: OVNKubernetes 11 serviceNetwork: - 172.30.0.0/16 platform: nutanix: apiVIPs: - 10.40.142.7 12 defaultMachinePlatform: bootType: Legacy categories: 13 - key: <category_key_name> value: <category_value> project: 14 type: name name: <project_name> ingressVIPs: - 10.40.142.8 15 prismCentral: endpoint: address: your.prismcentral.domainname 16 port: 9440 17 password: <password> 18 username: <username> 19 prismElements: - endpoint: address: your.prismelement.domainname port: 9440 uuid: 0005b0f1-8f43-a0f2-02b7-3cecef193712 subnetUUIDs: - c7938dc6-7659-453e-a688-e26020c68e43 clusterOSImage: http://example.com/images/rhcos-47.83.202103221318-0-nutanix.x86_64.qcow2 20 credentialsMode: Manual publish: External pullSecret: '{"auths": ...}' 21 fips: false 22 sshKey: ssh-ed25519 AAAA... 23
- 1 10 12 15 16 17 18 19 21
- 必需。安装程序会提示您输入这个值。
- 2 6
controlPlane
部分是一个单个映射,但 compute 部分是一系列映射。为满足不同数据结构的要求,compute
部分的第一行必须以连字符-
开头,controlPlane部分
的第一行则不以连字符开头。虽然这两个部分目前都定义了单一机器池,但未来的 OpenShift Container Platform 版本可能在安装过程中支持定义多个计算池。仅使用一个 control plane 池。- 3 7
- 是否要启用或禁用并发多线程或
超线程
。默认情况下,启用并发多线程以提高机器内核的性能。您可以通过将 参数值设置为Disabled
来禁用它。如果在某些集群机器中禁用并发多线程,则必须在所有集群机器中禁用它。重要如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。
- 4 8
- 可选:为 compute 和 control plane 机器提供额外的机器池参数配置。
- 5 9 13
- 可选:提供一个或多个 prism category 键值对和一个 prism category 值。这些类别键值对必须在 Prism Central 中存在。您可以为计算机器、control plane 机器或所有机器提供单独的类别。
- 11
- 要安装的集群网络插件。默认值
OVNKubernetes
是唯一支持的值。 - 14
- 可选:指定与其关联的项目。为项目类型指定
name
或uuid
,然后提供对应的 UUID 或项目名称。您可以将项目与计算机器、control plane 机器或所有机器关联。 - 20
- 可选: 默认情况下,安装程序会下载并安装 Red Hat Enterprise Linux CoreOS (RHCOS) 镜像。如果 Prism Central 没有互联网访问,您可以通过在任何 HTTP 服务器上托管 RHCOS 镜像来覆盖默认行为,并将安装程序指向镜像。
- 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 密钥。
3.7.2. 配置故障域
故障域通过在多个 Nutanix Prism Elements (clusters) 间分布 control plane 和计算机器来提高 OpenShift Container Platform 集群的容错功能。
建议您配置三个故障域以确保高可用性。
先决条件
-
您有一个安装配置文件 (
install-config.yaml
)。
流程
编辑
install-config.yaml
文件并添加以下小节来配置第一个故障域:apiVersion: v1 baseDomain: example.com compute: # ... platform: nutanix: failureDomains: - name: <failure_domain_name> prismElement: name: <prism_element_name> uuid: <prism_element_uuid> subnetUUIDs: - <network_uuid> # ...
其中:
<failure_domain_name>
-
指定故障域的唯一名称。名称的长度不能超过 64 个字符,可以包括小写字母、数字和短划线 (
-
)。短划线不能是名称的第一个或最后一个。 <prism_element_name>
- 可选。指定 Prism Element 的名称。
<prism_element_uuid
>- 指定 Prism Element 的 UUID。
<network_uuid
>- 指定 Prism Element 子网对象的 UUID。子网的 IP 地址前缀 (CIDR) 应包含 OpenShift Container Platform 集群使用的虚拟 IP 地址。在 OpenShift Container Platform 集群中,只支持每个故障域 (Prism Element) 一个子网。
- 根据需要,配置额外的故障域。
要在故障域间分发 control plane 和计算机器,请执行以下操作之一:
如果 compute 和 control plane 机器可以共享同一组故障域,请在集群的默认机器配置下添加故障域名称。
共享一组故障域的 control plane 和计算机器示例
apiVersion: v1 baseDomain: example.com compute: # ... platform: nutanix: defaultMachinePlatform: failureDomains: - failure-domain-1 - failure-domain-2 - failure-domain-3 # ...
如果 compute 和 control plane 机器必须使用不同的故障域,请在对应的机器池下添加故障域名称。
使用不同的故障域的 control plane 和计算机器示例
apiVersion: v1 baseDomain: example.com compute: # ... controlPlane: platform: nutanix: failureDomains: - failure-domain-1 - failure-domain-2 - failure-domain-3 # ... compute: platform: nutanix: failureDomains: - failure-domain-1 - failure-domain-2 # ...
- 保存该文件。
3.7.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
对象,且无法创建额外的代理。
3.8. 安装 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.9. 为 Nutanix 配置 IAM
安装集群需要 Cloud Credential Operator(CCO)以手动模式运行。虽然安装程序为手动模式配置 CCO,您必须指定身份和访问管理 secret。
先决条件
-
您已配置了
ccoctl
二进制文件。 -
您有一个
install-config.yaml
文件。
流程
按照以下格式创建一个包含凭证数据的 YAML 文件:
凭证数据格式
credentials: - type: basic_auth 1 data: prismCentral: 2 username: <username_for_prism_central> password: <password_for_prism_central> prismElements: 3 - name: <name_of_prism_element> username: <username_for_prism_element> password: <password_for_prism_element>
运行以下命令,使用安装文件中的发行镜像设置
$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
对象示例apiVersion: cloudcredential.openshift.io/v1 kind: CredentialsRequest metadata: annotations: include.release.openshift.io/self-managed-high-availability: "true" labels: controller-tools.k8s.io: "1.0" name: openshift-machine-api-nutanix namespace: openshift-cloud-credential-operator spec: providerSpec: apiVersion: cloudcredential.openshift.io/v1 kind: NutanixProviderSpec secretRef: name: nutanix-credentials namespace: openshift-machine-api
运行以下命令,使用
ccoctl
工具处理所有CredentialsRequest
对象:$ ccoctl nutanix create-shared-secrets \ --credentials-requests-dir=<path_to_credentials_requests_directory> \1 --output-dir=<ccoctl_output_dir> \2 --credentials-source-filepath=<path_to_credentials_file> 3
编辑
install-config.yaml
配置文件,使credentialsMode
参数设置为Manual
。install-config.yaml
配置文件示例apiVersion: v1 baseDomain: cluster1.example.com credentialsMode: Manual 1 ...
- 1
- 添加这一行,将
credentialsMode
参数设置为Manual
。
运行以下命令来创建安装清单:
$ openshift-install create manifests --dir <installation_directory> 1
- 1
- 指定包含集群的
install-config.yaml
文件的目录路径。
运行以下命令,将生成的凭证文件复制到目标清单目录中:
$ cp <ccoctl_output_dir>/manifests/*credentials.yaml ./<installation_directory>/manifests
验证
确保
manifests
目录中存在适当的 secret。$ ls ./<installation_directory>/manifests
输出示例
cluster-config.yaml cluster-dns-02-config.yml cluster-infrastructure-02-config.yml cluster-ingress-02-config.yml cluster-network-01-crd.yml cluster-network-02-config.yml cluster-proxy-01-config.yaml cluster-scheduler-02-config.yml cvo-overrides.yaml kube-cloud-config.yaml kube-system-configmap-root-ca.yaml machine-config-server-tls-secret.yaml openshift-config-secret-pull-secret.yaml openshift-cloud-controller-manager-nutanix-credentials-credentials.yaml openshift-machine-api-nutanix-credentials-credentials.yaml
3.10. 添加 Nutanix CCM 所需的配置映射和 secret 资源
在 Nutanix 上安装需要额外的 ConfigMap
和 Secret
资源,才能与 Nutanix Cloud Controller Manager (CCM) 集成。
先决条件
-
您已在安装目录中创建了
manifests
目录。
流程
进入
manifests
目录:$ cd <path_to_installation_directory>/manifests
创建名为
openshift-cloud-controller-manager-cloud-config.yaml
的cloud-conf
ConfigMap
文件并添加以下信息:apiVersion: v1 kind: ConfigMap metadata: name: cloud-conf namespace: openshift-cloud-controller-manager data: cloud.conf: "{ \"prismCentral\": { \"address\": \"<prism_central_FQDN/IP>\", 1 \"port\": 9440, \"credentialRef\": { \"kind\": \"Secret\", \"name\": \"nutanix-credentials\", \"namespace\": \"openshift-cloud-controller-manager\" } }, \"topologyDiscovery\": { \"type\": \"Prism\", \"topologyCategories\": null }, \"enableCustomLabeling\": true }"
- 1
- 指定 Prism Central FQDN/IP。
验证文件
cluster-infrastructure-02-config.yml
是否存在,并且具有以下信息:spec: cloudConfig: key: config name: cloud-provider-config
3.11. 用户管理的负载均衡器的服务
您可以将 OpenShift Container Platform 集群配置为使用用户管理的负载均衡器来代替默认负载均衡器。
配置用户管理的负载均衡器取决于您的厂商的负载均衡器。
本节中的信息和示例仅用于指导目的。有关供应商负载均衡器的更多信息,请参阅供应商文档。
红帽支持用户管理的负载均衡器的以下服务:
- Ingress Controller
- OpenShift API
- OpenShift MachineConfig API
您可以选择是否要为用户管理的负载均衡器配置一个或多个所有服务。仅配置 Ingress Controller 服务是一个通用的配置选项。要更好地了解每个服务,请查看以下图表:
图 3.1. 显示 OpenShift Container Platform 环境中运行的 Ingress Controller 的网络工作流示例
图 3.2. 显示 OpenShift Container Platform 环境中运行的 OpenShift API 的网络工作流示例
图 3.3. 显示 OpenShift Container Platform 环境中运行的 OpenShift MachineConfig API 的网络工作流示例
用户管理的负载均衡器支持以下配置选项:
- 使用节点选择器将 Ingress Controller 映射到一组特定的节点。您必须为这个集合中的每个节点分配一个静态 IP 地址,或者将每个节点配置为从动态主机配置协议(DHCP)接收相同的 IP 地址。基础架构节点通常接收这种类型的配置。
以子网上的所有 IP 地址为目标。此配置可减少维护开销,因为您可以在这些网络中创建和销毁节点,而无需重新配置负载均衡器目标。如果您使用较小的网络上的机器集来部署入口 pod,如
/27
或/28
,您可以简化负载均衡器目标。提示您可以通过检查机器配置池的资源来列出网络中存在的所有 IP 地址。
在为 OpenShift Container Platform 集群配置用户管理的负载均衡器前,请考虑以下信息:
- 对于前端 IP 地址,您可以对前端 IP 地址、Ingress Controller 的负载均衡器和 API 负载均衡器使用相同的 IP 地址。查看厂商的文档以获取此功能的相关信息。
对于后端 IP 地址,请确保 OpenShift Container Platform control plane 节点的 IP 地址在用户管理的负载均衡器生命周期内不会改变。您可以通过完成以下操作之一来实现此目的:
- 为每个 control plane 节点分配一个静态 IP 地址。
- 将每个节点配置为在每次节点请求 DHCP 租期时从 DHCP 接收相同的 IP 地址。根据供应商,DHCP 租期可能采用 IP 保留或静态 DHCP 分配的形式。
- 在 Ingress Controller 后端服务的用户管理的负载均衡器中手动定义运行 Ingress Controller 的每个节点。例如,如果 Ingress Controller 移到未定义节点,则可能会出现连接中断。
3.11.1. 配置用户管理的负载均衡器
您可以将 OpenShift Container Platform 集群配置为使用用户管理的负载均衡器来代替默认负载均衡器。
在配置用户管理的负载均衡器前,请确保阅读用户管理的负载均衡器部分。
阅读适用于您要为用户管理的负载均衡器配置的服务的以下先决条件。
MetalLB,在集群中运行,充当用户管理的负载均衡器。
OpenShift API 的先决条件
- 您定义了前端 IP 地址。
TCP 端口 6443 和 22623 在负载均衡器的前端 IP 地址上公开。检查以下项:
- 端口 6443 提供对 OpenShift API 服务的访问。
- 端口 22623 可以为节点提供 ignition 启动配置。
- 前端 IP 地址和端口 6443 可以被您的系统的所有用户访问,其位置为 OpenShift Container Platform 集群外部。
- 前端 IP 地址和端口 22623 只能被 OpenShift Container Platform 节点访问。
- 负载均衡器后端可以在端口 6443 和 22623 上与 OpenShift Container Platform control plane 节点通信。
Ingress Controller 的先决条件
- 您定义了前端 IP 地址。
- TCP 端口 443 和 80 在负载均衡器的前端 IP 地址上公开。
- 前端 IP 地址、端口 80 和端口 443 可以被您的系统所有用户访问,以及 OpenShift Container Platform 集群外部的位置。
- 前端 IP 地址、端口 80 和端口 443 可被 OpenShift Container Platform 集群中运行的所有节点访问。
- 负载均衡器后端可以在端口 80、443 和 1936 上与运行 Ingress Controller 的 OpenShift Container Platform 节点通信。
健康检查 URL 规格的先决条件
您可以通过设置健康检查 URL 来配置大多数负载均衡器,以确定服务是否可用或不可用。OpenShift Container Platform 为 OpenShift API、Machine Configuration API 和 Ingress Controller 后端服务提供这些健康检查。
以下示例显示了之前列出的后端服务的健康检查规格:
Kubernetes API 健康检查规格示例
Path: HTTPS:6443/readyz Healthy threshold: 2 Unhealthy threshold: 2 Timeout: 10 Interval: 10
Machine Config API 健康检查规格示例
Path: HTTPS:22623/healthz Healthy threshold: 2 Unhealthy threshold: 2 Timeout: 10 Interval: 10
Ingress Controller 健康检查规格示例
Path: HTTP:1936/healthz/ready Healthy threshold: 2 Unhealthy threshold: 2 Timeout: 5 Interval: 10
流程
配置 HAProxy Ingress Controller,以便您可以在端口 6443、22623、443 和 80 上从负载均衡器访问集群。根据您的需要,您可以在 HAProxy 配置中指定来自多个子网的单个子网或 IP 地址的 IP 地址。
带有列出子网的 HAProxy 配置示例
# ... listen my-cluster-api-6443 bind 192.168.1.100:6443 mode tcp balance roundrobin option httpchk http-check connect http-check send meth GET uri /readyz http-check expect status 200 server my-cluster-master-2 192.168.1.101:6443 check inter 10s rise 2 fall 2 server my-cluster-master-0 192.168.1.102:6443 check inter 10s rise 2 fall 2 server my-cluster-master-1 192.168.1.103:6443 check inter 10s rise 2 fall 2 listen my-cluster-machine-config-api-22623 bind 192.168.1.100:22623 mode tcp balance roundrobin option httpchk http-check connect http-check send meth GET uri /healthz http-check expect status 200 server my-cluster-master-2 192.168.1.101:22623 check inter 10s rise 2 fall 2 server my-cluster-master-0 192.168.1.102:22623 check inter 10s rise 2 fall 2 server my-cluster-master-1 192.168.1.103:22623 check inter 10s rise 2 fall 2 listen my-cluster-apps-443 bind 192.168.1.100:443 mode tcp balance roundrobin option httpchk http-check connect http-check send meth GET uri /healthz/ready http-check expect status 200 server my-cluster-worker-0 192.168.1.111:443 check port 1936 inter 10s rise 2 fall 2 server my-cluster-worker-1 192.168.1.112:443 check port 1936 inter 10s rise 2 fall 2 server my-cluster-worker-2 192.168.1.113:443 check port 1936 inter 10s rise 2 fall 2 listen my-cluster-apps-80 bind 192.168.1.100:80 mode tcp balance roundrobin option httpchk http-check connect http-check send meth GET uri /healthz/ready http-check expect status 200 server my-cluster-worker-0 192.168.1.111:80 check port 1936 inter 10s rise 2 fall 2 server my-cluster-worker-1 192.168.1.112:80 check port 1936 inter 10s rise 2 fall 2 server my-cluster-worker-2 192.168.1.113:80 check port 1936 inter 10s rise 2 fall 2 # ...
带有多个列出子网的 HAProxy 配置示例
# ... listen api-server-6443 bind *:6443 mode tcp server master-00 192.168.83.89:6443 check inter 1s server master-01 192.168.84.90:6443 check inter 1s server master-02 192.168.85.99:6443 check inter 1s server bootstrap 192.168.80.89:6443 check inter 1s listen machine-config-server-22623 bind *:22623 mode tcp server master-00 192.168.83.89:22623 check inter 1s server master-01 192.168.84.90:22623 check inter 1s server master-02 192.168.85.99:22623 check inter 1s server bootstrap 192.168.80.89:22623 check inter 1s listen ingress-router-80 bind *:80 mode tcp balance source server worker-00 192.168.83.100:80 check inter 1s server worker-01 192.168.83.101:80 check inter 1s listen ingress-router-443 bind *:443 mode tcp balance source server worker-00 192.168.83.100:443 check inter 1s server worker-01 192.168.83.101:443 check inter 1s listen ironic-api-6385 bind *:6385 mode tcp balance source server master-00 192.168.83.89:6385 check inter 1s server master-01 192.168.84.90:6385 check inter 1s server master-02 192.168.85.99:6385 check inter 1s server bootstrap 192.168.80.89:6385 check inter 1s listen inspector-api-5050 bind *:5050 mode tcp balance source server master-00 192.168.83.89:5050 check inter 1s server master-01 192.168.84.90:5050 check inter 1s server master-02 192.168.85.99:5050 check inter 1s server bootstrap 192.168.80.89:5050 check inter 1s # ...
使用
curl
CLI 命令验证用户管理的负载均衡器及其资源是否正常运行:运行以下命令并查看响应,验证集群机器配置 API 是否可以被 Kubernetes API 服务器资源访问:
$ curl https://<loadbalancer_ip_address>:6443/version --insecure
如果配置正确,您会收到 JSON 对象的响应:
{ "major": "1", "minor": "11+", "gitVersion": "v1.11.0+ad103ed", "gitCommit": "ad103ed", "gitTreeState": "clean", "buildDate": "2019-01-09T06:44:10Z", "goVersion": "go1.10.3", "compiler": "gc", "platform": "linux/amd64" }
运行以下命令并观察输出,验证集群机器配置 API 是否可以被 Machine 配置服务器资源访问:
$ curl -v https://<loadbalancer_ip_address>:22623/healthz --insecure
如果配置正确,命令的输出会显示以下响应:
HTTP/1.1 200 OK Content-Length: 0
运行以下命令并观察输出,验证控制器是否可以被端口 80 上的 Ingress Controller 资源访问:
$ curl -I -L -H "Host: console-openshift-console.apps.<cluster_name>.<base_domain>" http://<load_balancer_front_end_IP_address>
如果配置正确,命令的输出会显示以下响应:
HTTP/1.1 302 Found content-length: 0 location: https://console-openshift-console.apps.ocp4.private.opequon.net/ cache-control: no-cache
运行以下命令并观察输出,验证控制器是否可以被端口 443 上的 Ingress Controller 资源访问:
$ curl -I -L --insecure --resolve console-openshift-console.apps.<cluster_name>.<base_domain>:443:<Load Balancer Front End IP Address> https://console-openshift-console.apps.<cluster_name>.<base_domain>
如果配置正确,命令的输出会显示以下响应:
HTTP/1.1 200 OK referrer-policy: strict-origin-when-cross-origin set-cookie: csrf-token=UlYWOyQ62LWjw2h003xtYSKlh1a0Py2hhctw0WmV2YEdhJjFyQwWcGBsja261dGLgaYO0nxzVErhiXt6QepA7g==; Path=/; Secure; SameSite=Lax x-content-type-options: nosniff x-dns-prefetch-control: off x-frame-options: DENY x-xss-protection: 1; mode=block date: Wed, 04 Oct 2023 16:29:38 GMT content-type: text/html; charset=utf-8 set-cookie: 1e2670d92730b515ce3a1bb65da45062=1bf5e9573c9a2760c964ed1659cc1673; path=/; HttpOnly; Secure; SameSite=None cache-control: private
配置集群的 DNS 记录,使其以用户管理的负载均衡器的前端 IP 地址为目标。您必须在负载均衡器上将记录更新为集群 API 和应用程序的 DNS 服务器。
修改 DNS 记录示例
<load_balancer_ip_address> A api.<cluster_name>.<base_domain> A record pointing to Load Balancer Front End
<load_balancer_ip_address> A apps.<cluster_name>.<base_domain> A record pointing to Load Balancer Front End
重要DNS 传播可能需要一些时间才能获得每个 DNS 记录。在验证每个记录前,请确保每个 DNS 记录传播。
要使 OpenShift Container Platform 集群使用用户管理的负载均衡器,您必须在集群的
install-config.yaml
文件中指定以下配置:# ... platform: nutanix: loadBalancer: type: UserManaged 1 apiVIPs: - <api_ip> 2 ingressVIPs: - <ingress_ip> 3 # ...
- 1
- 为
type
参数设置UserManaged
,为集群指定用户管理的负载均衡器。参数默认为OpenShiftManagedDefault
,它表示默认的内部负载均衡器。对于openshift-kni-infra
命名空间中定义的服务,用户管理的负载均衡器可将coredns
服务部署到集群中的 pod,但忽略keepalived
和haproxy
服务。 - 2
- 指定用户管理的负载均衡器时所需的参数。指定用户管理的负载均衡器的公共 IP 地址,以便 Kubernetes API 可以与用户管理的负载均衡器通信。
- 3
- 指定用户管理的负载均衡器时所需的参数。指定用户管理的负载均衡器的公共 IP 地址,以便用户管理的负载均衡器可以管理集群的入口流量。
验证
使用
curl
CLI 命令验证用户管理的负载均衡器和 DNS 记录配置是否正常工作:运行以下命令并查看输出,验证您可以访问集群 API:
$ curl https://api.<cluster_name>.<base_domain>:6443/version --insecure
如果配置正确,您会收到 JSON 对象的响应:
{ "major": "1", "minor": "11+", "gitVersion": "v1.11.0+ad103ed", "gitCommit": "ad103ed", "gitTreeState": "clean", "buildDate": "2019-01-09T06:44:10Z", "goVersion": "go1.10.3", "compiler": "gc", "platform": "linux/amd64" }
运行以下命令并查看输出,验证您可以访问集群机器配置:
$ curl -v https://api.<cluster_name>.<base_domain>:22623/healthz --insecure
如果配置正确,命令的输出会显示以下响应:
HTTP/1.1 200 OK Content-Length: 0
运行以下命令并查看输出,验证您可以在端口上访问每个集群应用程序:
$ curl http://console-openshift-console.apps.<cluster_name>.<base_domain> -I -L --insecure
如果配置正确,命令的输出会显示以下响应:
HTTP/1.1 302 Found content-length: 0 location: https://console-openshift-console.apps.<cluster-name>.<base domain>/ cache-control: no-cacheHTTP/1.1 200 OK referrer-policy: strict-origin-when-cross-origin set-cookie: csrf-token=39HoZgztDnzjJkq/JuLJMeoKNXlfiVv2YgZc09c3TBOBU4NI6kDXaJH1LdicNhN1UsQWzon4Dor9GWGfopaTEQ==; Path=/; Secure x-content-type-options: nosniff x-dns-prefetch-control: off x-frame-options: DENY x-xss-protection: 1; mode=block date: Tue, 17 Nov 2020 08:42:10 GMT content-type: text/html; charset=utf-8 set-cookie: 1e2670d92730b515ce3a1bb65da45062=9b714eb87e93cf34853e87a92d6894be; path=/; HttpOnly; Secure; SameSite=None cache-control: private
运行以下命令并查看输出,验证您可以在端口 443 上访问每个集群应用程序:
$ curl https://console-openshift-console.apps.<cluster_name>.<base_domain> -I -L --insecure
如果配置正确,命令的输出会显示以下响应:
HTTP/1.1 200 OK referrer-policy: strict-origin-when-cross-origin set-cookie: csrf-token=UlYWOyQ62LWjw2h003xtYSKlh1a0Py2hhctw0WmV2YEdhJjFyQwWcGBsja261dGLgaYO0nxzVErhiXt6QepA7g==; Path=/; Secure; SameSite=Lax x-content-type-options: nosniff x-dns-prefetch-control: off x-frame-options: DENY x-xss-protection: 1; mode=block date: Wed, 04 Oct 2023 16:29:38 GMT content-type: text/html; charset=utf-8 set-cookie: 1e2670d92730b515ce3a1bb65da45062=1bf5e9573c9a2760c964ed1659cc1673; path=/; HttpOnly; Secure; SameSite=None cache-control: private
3.12. 部署集群
您可以在兼容云平台上安装 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.13. 配置默认存储容器
安装集群后,您必须安装 Nutanix CSI Operator 并为集群配置默认存储容器。
如需更多信息,请参阅 Nutanix 文档安装 CSI Operator 和配置 registry 存储。
3.14. 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.15. 其他资源
3.16. 后续步骤
第 4 章 在受限网络中的 Nutanix 上安装集群
在 OpenShift Container Platform 4.17 中,您可以通过创建安装发行内容的内部镜像在受限网络中的 Nutanix 基础架构上安装集群。
4.1. 先决条件
- 您已查看了有关 OpenShift Container Platform 安装和更新流程的详细信息。
- 安装程序需要访问 Prism Central 和 Prism Element 上的端口 9440。您确认可以访问端口 9440。
如果使用防火墙,已满足以下先决条件:
- 已确认可以访问端口 9440。control plane 节点必须能够访问端口 9440 上的 Prism Central 和 Prism Element 才能成功安装。
- 您已将防火墙配置为授予访问 OpenShift Container Platform 所需站点的访问权限。这包括使用 Telemetry。
如果您的 Nutanix 环境使用默认自签名 SSL/TLS 证书,请将它替换为 CA 签名的证书。安装程序需要一个有效的 CA 签名证书来访问 Prism Central API。有关替换自签名证书的更多信息,请参阅 Nutanix AOS 安全指南。
如果您的 Nutanix 环境使用内部 CA 来发布证书,您必须将集群范围代理配置为安装过程的一部分。如需更多信息,请参阅配置自定义 PKI。
重要使用 2048 位证书。如果您使用带有 Prism Central 2022.x 的 4096 位证书,则安装会失败。
- 您有一个容器镜像 registry,如 Red Hat Quay。如果您还没有 registry,您可以使用 mirror registry for Red Hat OpenShift 创建镜像 registry。
您已使用 oc-mirror OpenShift CLI (oc) 插件将所有所需的 OpenShift Container Platform 内容和其他镜像(包括 Nutanix CSI Operator)镜像到您的 mirror registry。
重要由于安装介质位于镜像主机上,因此您可以使用该计算机完成所有安装步骤。
4.2. 关于在受限网络中安装
在 OpenShift Container Platform 4.17 中,可以执行不需要有效的互联网连接来获取软件组件的安装。受限网络安装可以使用安装程序置备的基础架构或用户置备的基础架构完成,具体取决于您要安装集群的云平台。
如果您选择在云平台中执行受限网络安装,您仍需要访问其云 API。有些云功能,比如 Amazon Web Service 的 Route 53 DNS 和 IAM 服务,需要访问互联网。根据您的网络,在裸机硬件、Nutanix 或 VMware vSphere 上安装可能需要较少的互联网访问。
要完成受限网络安装,您必须创建一个 registry,以镜像 OpenShift 镜像 registry 的内容并包含安装介质。您可以在镜像主机上创建此 registry,该主机可同时访问互联网和您的封闭网络,也可以使用满足您的限制条件的其他方法。
4.2.1. 其他限制
受限网络中的集群有以下额外限制和限制:
-
ClusterVersion
状态包含一个Unable to retrieve available updates
错误。 - 默认情况下,您无法使用 Developer Catalog 的内容,因为您无法访问所需的镜像流标签。
4.3. 为集群节点 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.4. 在您的系统信任中添加 Nutanix root CA 证书
因为安装程序需要访问 Prism Central API,所以您必须在安装 OpenShift Container Platform 集群前将 Nutanix 可信根 CA 证书添加到您的系统信任中。
流程
- 在 Prism Central web 控制台中下载 Nutanix root CA 证书。
- 提取包含 Nutanix root CA 证书的压缩文件。
将您的操作系统的文件添加到系统信任中。例如,在 Fedora 操作系统中运行以下命令:
# cp certs/lin/* /etc/pki/ca-trust/source/anchors
更新您的系统信任关系。例如,在 Fedora 操作系统中运行以下命令:
# update-ca-trust extract
4.5. 下载 RHCOS 集群镜像
Prism Central 需要访问 Red Hat Enterprise Linux CoreOS (RHCOS) 镜像来安装集群。您可以使用安装程序查找并下载 RHCOS 镜像,并通过内部 HTTP 服务器或 Nutanix 对象提供它。
先决条件
- 获取 OpenShift Container Platform 安装程序和集群的 pull secret。对于受限网络安装,这些文件位于您的镜像主机上。
流程
进入包含安装程序的目录并运行以下命令:
$ ./openshift-install coreos print-stream-json
使用命令的输出来查找 Nutanix 镜像的位置,然后点链接下载它。
输出示例
"nutanix": { "release": "411.86.202210041459-0", "formats": { "qcow2": { "disk": { "location": "https://rhcos.mirror.openshift.com/art/storage/releases/rhcos-4.11/411.86.202210041459-0/x86_64/rhcos-411.86.202210041459-0-nutanix.x86_64.qcow2", "sha256": "42e227cac6f11ac37ee8a2f9528bb3665146566890577fd55f9b950949e5a54b"
- 通过内部 HTTP 服务器或 Nutanix 对象提供镜像。
-
记录下载镜像的位置。在部署集群前,您可以使用镜像的位置更新安装配置文件中的
platform
部分 (install-config.yaml
)。
指定 RHCOS 镜像的 install-config.yaml
文件的片段
platform: nutanix: clusterOSImage: http://example.com/images/rhcos-411.86.202210041459-0-nutanix.x86_64.qcow2
4.6. 创建安装配置文件
您可以自定义在 Nutanix 上安装的 OpenShift Container Platform 集群。
先决条件
- 您有 OpenShift Container Platform 安装程序和集群的 pull secret。对于受限网络安装,这些文件位于您的镜像主机上。
-
具有在镜像 registry 时创建的
imageContentSourcePolicy.yaml
文件。 - 具有您下载的 Red Hat Enterprise Linux CoreOS (RHCOS) 镜像的位置。
- 您已获取了镜像 registry 的证书内容。
- 您已检索了 Red Hat Enterprise Linux CoreOS (RHCOS) 镜像,并将其上传到可访问的位置。
- 您已确认满足了 Nutanix 网络要求。如需更多信息,请参阅"准备在 Nutanix 上安装"。
流程
创建
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 集群,请指定
ssh-agent
进程使用的 SSH 密钥。- 选择 nutanix 作为目标平台。
- 输入 Prism Central 域名或 IP 地址。
- 输入用于登录 Prism Central 的端口。
输入用于登录 Prism Central 的凭证。
安装程序连接到 Prism Central。
- 选择用于管理 OpenShift Container Platform 集群的 Prism Element。
- 选择要使用的网络子网。
- 输入您为 control plane API 访问配置的虚拟 IP 地址。
- 输入您为集群入口配置的虚拟 IP 地址。
- 输入基域。这个基域必须与您在 DNS 记录中配置的域相同。
为集群输入描述性名称。
您输入的集群名称必须与您在配置 DNS 记录时指定的集群名称匹配。
在
install-config.yaml
文件中,将platform.nutanix.clusterOSImage
的值设置为镜像位置或名称。例如:platform: nutanix: clusterOSImage: http://mirror.example.com/images/rhcos-47.83.202103221318-0-nutanix.x86_64.qcow2
编辑
install-config.yaml
文件,以提供在受限网络中安装所需的额外信息。更新
pullSecret
值,使其包含 registry 的身份验证信息:pullSecret: '{"auths":{"<mirror_host_name>:5000": {"auth": "<credentials>","email": "you@example.com"}}}'
对于
<mirror_host_name>,请指定
您在镜像 registry 证书中指定的 registry 域名;对于 <credentials>,
请指定您的镜像 registry 的 base64 编码用户名和密码。添加
additionalTrustBundle
参数和值。additionalTrustBundle: | -----BEGIN CERTIFICATE----- ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ -----END CERTIFICATE-----
该值必须是您用于镜像 registry 的证书文件内容。证书文件可以是现有的可信证书颁发机构,也可以是您为镜像 registry 生成的自签名证书。
添加镜像内容资源,类似于以下 YAML 摘录:
imageContentSources: - mirrors: - <mirror_host_name>:5000/<repo_name>/release source: quay.io/openshift-release-dev/ocp-release - mirrors: - <mirror_host_name>:5000/<repo_name>/release source: registry.redhat.io/ocp/release
对于这些值,请使用镜像 registry 时创建的
imageContentSourcePolicy.yaml
文件。可选:将发布策略设置为
Internal
:publish: Internal
通过设置这个选项,您可以创建一个内部 Ingress Controller 和一个私有负载均衡器。
可选:更新
install.config.yaml
文件中的一个或多个默认配置参数,以自定义安装。有关参数的更多信息,请参阅"安装配置参数"。
注意如果要安装三节点集群,请确保将
compute.replicas
参数设置为0
。这样可确保集群的 control plane 可以调度。如需更多信息,请参阅"在 {platform} 上安装三节点集群"。备份
install-config.yaml
文件,以便您可以使用它安装多个集群。重要install-config.yaml
文件会在安装过程中消耗掉。如果要重复使用此文件,必须现在备份。
其他资源
4.6.1. Nutanix 的自定义 install-config.yaml 文件示例
您可以自定义 install-config.yaml
文件,以指定有关 OpenShift Container Platform 集群平台的更多详情,或修改所需参数的值。
此示例 YAML 文件仅供参考。您必须使用安装程序来获取 install-config.yaml
文件,并进行修改。
apiVersion: v1 baseDomain: example.com 1 compute: 2 - hyperthreading: Enabled 3 name: worker replicas: 3 platform: nutanix: 4 cpus: 2 coresPerSocket: 2 memoryMiB: 8196 osDisk: diskSizeGiB: 120 categories: 5 - key: <category_key_name> value: <category_value> controlPlane: 6 hyperthreading: Enabled 7 name: master replicas: 3 platform: nutanix: 8 cpus: 4 coresPerSocket: 2 memoryMiB: 16384 osDisk: diskSizeGiB: 120 categories: 9 - key: <category_key_name> value: <category_value> metadata: creationTimestamp: null name: test-cluster 10 networking: clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 machineNetwork: - cidr: 10.0.0.0/16 networkType: OVNKubernetes 11 serviceNetwork: - 172.30.0.0/16 platform: nutanix: apiVIP: 10.40.142.7 12 ingressVIP: 10.40.142.8 13 defaultMachinePlatform: bootType: Legacy categories: 14 - key: <category_key_name> value: <category_value> project: 15 type: name name: <project_name> prismCentral: endpoint: address: your.prismcentral.domainname 16 port: 9440 17 password: <password> 18 username: <username> 19 prismElements: - endpoint: address: your.prismelement.domainname port: 9440 uuid: 0005b0f1-8f43-a0f2-02b7-3cecef193712 subnetUUIDs: - c7938dc6-7659-453e-a688-e26020c68e43 clusterOSImage: http://example.com/images/rhcos-47.83.202103221318-0-nutanix.x86_64.qcow2 20 credentialsMode: Manual publish: External pullSecret: '{"auths":{"<local_registry>": {"auth": "<credentials>","email": "you@example.com"}}}' 21 fips: false 22 sshKey: ssh-ed25519 AAAA... 23 additionalTrustBundle: | 24 -----BEGIN CERTIFICATE----- ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ -----END CERTIFICATE----- imageContentSources: 25 - mirrors: - <local_registry>/<local_repository_name>/release source: quay.io/openshift-release-dev/ocp-release - mirrors: - <local_registry>/<local_repository_name>/release source: quay.io/openshift-release-dev/ocp-v4.0-art-dev
- 1 10 12 13 16 17 18 19
- 必需。安装程序会提示您输入这个值。
- 2 6
controlPlane
部分是一个单个映射,但 compute 部分是一系列映射。为满足不同数据结构的要求,compute
部分的第一行必须以连字符-
开头,controlPlane部分
的第一行则不以连字符开头。虽然这两个部分目前都定义了单一机器池,但未来的 OpenShift Container Platform 版本可能在安装过程中支持定义多个计算池。仅使用一个 control plane 池。- 3 7
- 是否要启用或禁用并发多线程或
超线程
。默认情况下,启用并发多线程以提高机器内核的性能。您可以通过将 参数值设置为Disabled
来禁用它。如果在某些集群机器中禁用并发多线程,则必须在所有集群机器中禁用它。重要如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。
- 4 8
- 可选:为 compute 和 control plane 机器提供额外的机器池参数配置。
- 5 9 14
- 可选:提供一个或多个 prism category 键值对和一个 prism category 值。这些类别键值对必须在 Prism Central 中存在。您可以为计算机器、control plane 机器或所有机器提供单独的类别。
- 11
- 要安装的集群网络插件。默认值
OVNKubernetes
是唯一支持的值。 - 15
- 可选:指定与其关联的项目。为项目类型指定
name
或uuid
,然后提供对应的 UUID 或项目名称。您可以将项目与计算机器、control plane 机器或所有机器关联。 - 20
- 可选: 默认情况下,安装程序会下载并安装 Red Hat Enterprise Linux CoreOS (RHCOS) 镜像。如果 Prism Central 无法访问互联网,您可以通过在任何 HTTP 服务器或 Nutanix 对象或 Nutanix 对象上托管 RHCOS 镜像来覆盖默认行为,并将安装程序指向镜像。
- 21
- 对于
<local_registry>
,请指定 registry 域名,以及您的镜像 registry 用来提供内容的可选端口。例如registry.example.com 或
registry.example.com:5000
。对于<credentials>
,请为您的镜像 registry 指定 base64 编码的用户名和密码。 - 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
- 提供用于镜像 registry 的证书文件内容。
- 25
- 从镜像 registry 时创建的
imageContentSourcePolicy.yaml
文件的metadata.name: release-0
部分提供这些值。
4.6.2. 配置故障域
故障域通过在多个 Nutanix Prism Elements (clusters) 间分布 control plane 和计算机器来提高 OpenShift Container Platform 集群的容错功能。
建议您配置三个故障域以确保高可用性。
先决条件
-
您有一个安装配置文件 (
install-config.yaml
)。
流程
编辑
install-config.yaml
文件并添加以下小节来配置第一个故障域:apiVersion: v1 baseDomain: example.com compute: # ... platform: nutanix: failureDomains: - name: <failure_domain_name> prismElement: name: <prism_element_name> uuid: <prism_element_uuid> subnetUUIDs: - <network_uuid> # ...
其中:
<failure_domain_name>
-
指定故障域的唯一名称。名称的长度不能超过 64 个字符,可以包括小写字母、数字和短划线 (
-
)。短划线不能是名称的第一个或最后一个。 <prism_element_name>
- 可选。指定 Prism Element 的名称。
<prism_element_uuid
>- 指定 Prism Element 的 UUID。
<network_uuid
>- 指定 Prism Element 子网对象的 UUID。子网的 IP 地址前缀 (CIDR) 应包含 OpenShift Container Platform 集群使用的虚拟 IP 地址。在 OpenShift Container Platform 集群中,只支持每个故障域 (Prism Element) 一个子网。
- 根据需要,配置额外的故障域。
要在故障域间分发 control plane 和计算机器,请执行以下操作之一:
如果 compute 和 control plane 机器可以共享同一组故障域,请在集群的默认机器配置下添加故障域名称。
共享一组故障域的 control plane 和计算机器示例
apiVersion: v1 baseDomain: example.com compute: # ... platform: nutanix: defaultMachinePlatform: failureDomains: - failure-domain-1 - failure-domain-2 - failure-domain-3 # ...
如果 compute 和 control plane 机器必须使用不同的故障域,请在对应的机器池下添加故障域名称。
使用不同的故障域的 control plane 和计算机器示例
apiVersion: v1 baseDomain: example.com compute: # ... controlPlane: platform: nutanix: failureDomains: - failure-domain-1 - failure-domain-2 - failure-domain-3 # ... compute: platform: nutanix: failureDomains: - failure-domain-1 - failure-domain-2 # ...
- 保存该文件。
4.6.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.7. 安装 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.8. 为 Nutanix 配置 IAM
安装集群需要 Cloud Credential Operator(CCO)以手动模式运行。虽然安装程序为手动模式配置 CCO,您必须指定身份和访问管理 secret。
先决条件
-
您已配置了
ccoctl
二进制文件。 -
您有一个
install-config.yaml
文件。
流程
按照以下格式创建一个包含凭证数据的 YAML 文件:
凭证数据格式
credentials: - type: basic_auth 1 data: prismCentral: 2 username: <username_for_prism_central> password: <password_for_prism_central> prismElements: 3 - name: <name_of_prism_element> username: <username_for_prism_element> password: <password_for_prism_element>
运行以下命令,使用安装文件中的发行镜像设置
$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
对象示例apiVersion: cloudcredential.openshift.io/v1 kind: CredentialsRequest metadata: annotations: include.release.openshift.io/self-managed-high-availability: "true" labels: controller-tools.k8s.io: "1.0" name: openshift-machine-api-nutanix namespace: openshift-cloud-credential-operator spec: providerSpec: apiVersion: cloudcredential.openshift.io/v1 kind: NutanixProviderSpec secretRef: name: nutanix-credentials namespace: openshift-machine-api
运行以下命令,使用
ccoctl
工具处理所有CredentialsRequest
对象:$ ccoctl nutanix create-shared-secrets \ --credentials-requests-dir=<path_to_credentials_requests_directory> \1 --output-dir=<ccoctl_output_dir> \2 --credentials-source-filepath=<path_to_credentials_file> 3
编辑
install-config.yaml
配置文件,使credentialsMode
参数设置为Manual
。install-config.yaml
配置文件示例apiVersion: v1 baseDomain: cluster1.example.com credentialsMode: Manual 1 ...
- 1
- 添加这一行,将
credentialsMode
参数设置为Manual
。
运行以下命令来创建安装清单:
$ openshift-install create manifests --dir <installation_directory> 1
- 1
- 指定包含集群的
install-config.yaml
文件的目录路径。
运行以下命令,将生成的凭证文件复制到目标清单目录中:
$ cp <ccoctl_output_dir>/manifests/*credentials.yaml ./<installation_directory>/manifests
验证
确保
manifests
目录中存在适当的 secret。$ ls ./<installation_directory>/manifests
输出示例
cluster-config.yaml cluster-dns-02-config.yml cluster-infrastructure-02-config.yml cluster-ingress-02-config.yml cluster-network-01-crd.yml cluster-network-02-config.yml cluster-proxy-01-config.yaml cluster-scheduler-02-config.yml cvo-overrides.yaml kube-cloud-config.yaml kube-system-configmap-root-ca.yaml machine-config-server-tls-secret.yaml openshift-config-secret-pull-secret.yaml openshift-cloud-controller-manager-nutanix-credentials-credentials.yaml openshift-machine-api-nutanix-credentials-credentials.yaml
4.9. 部署集群
您可以在兼容云平台上安装 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 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。
4.10. 安装后
完成以下步骤以完成集群的配置。
4.10.1. 禁用默认的 OperatorHub 目录源
在 OpenShift Container Platform 安装过程中,默认为 OperatorHub 配置由红帽和社区项目提供的源内容的 operator 目录。在受限网络环境中,必须以集群管理员身份禁用默认目录。
流程
通过在
OperatorHub
对象中添加disableAllDefaultSources: true 来
禁用默认目录的源:$ oc patch OperatorHub cluster --type json \ -p '[{"op": "add", "path": "/spec/disableAllDefaultSources", "value": true}]'
或者,您可以使用 Web 控制台管理目录源。在 Administration → Cluster Settings → Configuration → OperatorHub 页面中,点 Sources 选项卡,您可以在其中创建、更新、删除、禁用和启用单独的源。
4.10.2. 将策略资源安装到集群中
使用 oc-mirror OpenShift CLI (oc) 插件镜像 OpenShift Container Platform 内容会创建资源,其中包括 catalogSource-certified-operator-index.yaml
和 imageContentSourcePolicy.yaml
。
-
ImageContentSourcePolicy
资源将镜像 registry 与源 registry 关联,并将在线 registry 中的镜像拉取请求重定向到镜像 registry。 -
Operator Lifecycle Manager (OLM) 使用
CatalogSource
资源来检索有关镜像 registry 中可用 Operator 的信息,允许用户发现和安装 Operator。
安装集群后,您必须将这些资源安装到集群中。
先决条件
- 您已将镜像设置为断开连接的环境中的 registry 镜像。
-
您可以使用具有
cluster-admin
角色的用户访问集群。
流程
-
以具有
cluster-admin
角色的用户身份登录 OpenShift CLI。 将结果目录中的 YAML 文件应用到集群:
$ oc apply -f ./oc-mirror-workspace/results-<id>/
验证
验证
ImageContentSourcePolicy
资源是否已成功安装:$ oc get imagecontentsourcepolicy
验证
CatalogSource
资源是否已成功安装:$ oc get catalogsource --all-namespaces
4.10.3. 配置默认存储容器
安装集群后,您必须安装 Nutanix CSI Operator 并为集群配置默认存储容器。
如需更多信息,请参阅 Nutanix 文档安装 CSI Operator 和配置 registry 存储。
4.11. OpenShift Container Platform 的 Telemetry 访问
在 OpenShift Container Platform 4.17 中,默认运行的 Telemetry 服务提供有关集群健康状况和成功更新的指标,需要访问互联网。如果您的集群连接到互联网,Telemetry 会自动运行,而且集群会注册到 OpenShift Cluster Manager。
确认 OpenShift Cluster Manager 清单正确后,可以由 Telemetry 自动维护,也可以使用 OpenShift Cluster Manager 手动维护,使用订阅监控来跟踪帐户或多集群级别的 OpenShift Container Platform 订阅。
4.12. 其他资源
4.13. 后续步骤
第 5 章 在 Nutanix 上安装三节点集群
在 OpenShift Container Platform 版本 4.17 中,您可以在 Nutanix 上安装三节点集群。三节点集群包含三个 control plane 机器,它们也可以充当计算机器。这种类型的集群提供了一个较小的、效率更高的集群,供集群管理员和开发人员用于测试、开发和生产。
5.1. 配置三节点集群
在部署集群前,您可以通过将 install-config.yaml
文件中的 worker 节点数量设置为 0
来配置三节点集群。将 worker 节点数量设置为 0
可确保 control plane 机器可以调度。这允许调度应用程序工作负载从 control plane 节点运行。
因为应用程序工作负载从 control plane 节点运行,所以需要额外的订阅,因为 control plane 节点被视为计算节点。
先决条件
-
您有一个现有的
install-config.yaml
文件。
流程
将
install-config.yaml
文件中的计算副本数量设置为0
,如以下compute
小节中所示:三节点集群的
install-config.yaml
文件示例apiVersion: v1 baseDomain: example.com compute: - name: worker platform: {} replicas: 0 # ...
5.2. 后续步骤
第 6 章 在 Nutanix 上卸载集群
您可以删除部署到 Nutanix 的集群。
6.1. 删除使用安装程序置备的基础架构的集群
您可以从云中删除使用安装程序置备的基础架构的集群。
卸载后,检查云供应商是否有未正确删除的资源,特别是在用户置备基础架构(UPI)集群中。可能存在安装程序未创建或安装程序无法访问的资源。
先决条件
- 有用于部署集群的安装程序副本。
- 有创建集群时安装程序生成的文件。
流程
在用来安装集群的计算机中包含安装程序的目录中,运行以下命令:
$ ./openshift-install destroy cluster \ --dir <installation_directory> --log-level info 1 2
注意您必须为集群指定包含集群定义文件的目录。安装程序需要此目录中的
metadata.json
文件来删除集群。-
可选:删除
<installation_directory>
目录和 OpenShift Container Platform 安装程序。
第 7 章 Nutanix 的安装配置参数
在 Nutanix 上部署 OpenShift Container Platform 集群前,您可以提供参数来自定义集群和托管它的平台。在创建 install-config.yaml
文件时,您可以通过命令行为所需参数提供值。然后,您可以修改 install-config.yaml
文件以进一步自定义集群。
7.1. Nutanix 可用的安装配置参数
下表指定所需的、可选和特定于 Nutanix 的安装配置参数,您可以作为安装过程的一部分设置。
安装后,您无法在 install-config.yaml
文件中修改这些参数。
7.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" } } } |
7.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 网络块。
例如: 注意
将 |
7.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 集群,请指定 |
例如, |
7.1.4. 额外的 Nutanix 配置参数
下表描述了额外的 Nutanix 配置参数:
参数 | 描述 | 值 |
---|---|---|
compute: platform: nutanix: categories: key: |
应用到计算虚拟机的 prism category 键的名称。此参数必须由 | 字符串 |
compute: platform: nutanix: categories: value: |
应用到计算虚拟机的 prism category 键值对的值。此参数必须由 | 字符串 |
compute: platform: nutanix: failureDomains: | 仅适用于计算机器的故障域。
故障域在 | 列表。 一个或多个故障域的名称。 |
compute: platform: nutanix: gpus: type: | 用于将 GPU 附加到计算机器的标识符类型。有效值为 "Name" 或 "DeviceID"。 | 字符串 |
compute: platform: nutanix: gpus: name: |
附加到计算机器的 GPU 设备名称。如果 GPU | 字符串 |
compute: platform: nutanix: gpus: deviceID: |
要附加到计算机器的 GPU 设备的设备标识符。此信息在 Prism Central 中提供。如果 GPU | 整数 |
compute: platform: nutanix: project: type: | 用于为计算虚拟机选择项目的标识符类型。项目定义用于管理权限、网络和其他参数的用户角色的逻辑组。如需有关项目的更多信息,请参阅项目概述。 |
|
compute: platform: nutanix: project: name: or uuid: |
与计算机器关联的项目的名称或 UUID。此参数必须由 | 字符串 |
compute: platform: nutanix: bootType: |
计算机器使用的引导类型。您必须在 OpenShift Container Platform 4.17 中使用 |
|
compute: platform: nutanix: dataDisks: dataSourceImage: name: | 可选。Prism Central 中虚拟机磁盘的数据源镜像的名称。 | 字符串 |
compute: platform: nutanix: dataDisks: dataSourceImage: referenceName: |
可选。故障域中数据源镜像的引用名称。如果使用此参数,则必须在计算节点占用的每个故障域中配置匹配的 | 字符串 |
compute: platform: nutanix: dataDisks: dataSourceImage: uuid: | Prism Central 中数据源镜像的 UUID。此值是必需的。 | 字符串 |
compute: platform: nutanix: dataDisks: deviceProperties: adapterType: | 磁盘地址的适配器类型。如果磁盘类型是 "Disk",则有效值为 "SCSI", "IDE", "PCI", "SATA" 或 "SPAPR"。如果磁盘类型是 "CDRom",则有效值为 "IDE" 或 "SATA"。 | 字符串 |
compute: platform: nutanix: dataDisks: deviceProperties: deviceIndex: |
磁盘地址的索引。有效值为非负整数,包括 0。共享相同适配器类型的磁盘的设备索引应该从 0 开始,并连续增加。默认值为 0。对于每个虚拟机,保留 | 非负整数,包括 0。 |
compute: platform: nutanix: dataDisks: deviceProperties: deviceType: | 磁盘设备类型。有效值为 "Disk" 和 "CDRom"。 | 字符串 |
compute: platform: nutanix: dataDisks: diskSize: | 要附加到虚拟机的磁盘大小。最小值为 1Gb。 | 数量格式,如 100G 或 100Gi。有关此格式的更多信息,请参阅 link:https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Format。 |
compute: platform: nutanix: dataDisks: storageConfig: diskMode: | 磁盘模式。有效值为 "Standard" 或 "Flash",默认值为 "Standard"。 | 字符串 |
compute: platform: nutanix: dataDisks: storageConfig: storageContainer: name: | 可选。Prism Central 中虚拟机磁盘使用的存储容器对象的名称。 | 字符串 |
compute: platform: nutanix: dataDisks: storageConfig: storageContainer: referenceName: |
可选。故障域中存储容器的引用名称。如果使用此功能,您必须在计算节点占用的每个故障域中配置匹配的 | 字符串 |
compute: platform: nutanix: dataDisks: storageConfig: storageContainer: uuid: | Prism Central 中存储容器的 UUID。 | 字符串 |
controlPlane: platform: nutanix: categories: key: |
应用到 control plane 虚拟机的 prism category 键的名称。此参数必须由 | 字符串 |
controlPlane: platform: nutanix: categories: value: |
应用到 control plane 虚拟机的 prism category 键值对的值。此参数必须由 | 字符串 |
controlPlane: platform: nutanix: failureDomains: | 仅适用于 control plane 机器的故障域。
故障域在 | 列表。 一个或多个故障域的名称。 |
controlPlane: platform: nutanix: project: type: | 用于为 control plane 虚拟机选择项目的标识符类型。项目定义用于管理权限、网络和其他参数的用户角色的逻辑组。如需有关项目的更多信息,请参阅项目概述。 |
|
controlPlane: platform: nutanix: project: name: or uuid: |
与 control plane 虚拟机关联的项目的名称或 UUID。此参数必须由 | 字符串 |
platform: nutanix: defaultMachinePlatform: categories: key: |
适用于所有虚拟机的 prism category 键的名称。此参数必须由 | 字符串 |
platform: nutanix: defaultMachinePlatform: categories: value: |
应用到所有虚拟机的 prism category 键值对的值。此参数必须由 | 字符串 |
platform: nutanix: defaultMachinePlatform: failureDomains: | 适用于 control plane 和计算机器的故障域。
故障域在 | 列表。 一个或多个故障域的名称。 |
platform: nutanix: defaultMachinePlatform: project: type: | 用于为所有虚拟机选择项目的标识符类型。项目定义用于管理权限、网络和其他参数的用户角色的逻辑组。如需有关项目的更多信息,请参阅项目概述。 |
|
platform: nutanix: defaultMachinePlatform: project: name: or uuid: |
与所有虚拟机关联的项目的名称或 UUID。此参数必须由 | 字符串 |
platform: nutanix: defaultMachinePlatform: bootType: |
所有机器的引导类型。您必须在 OpenShift Container Platform 4.17 中使用 |
|
platform: nutanix: apiVIP: | 为 control plane API 访问配置的虚拟 IP(VIP)地址。 | IP 地址 |
platform: nutanix: failureDomains: - name: prismElement: name: uuid: subnetUUIDs: - | 默认情况下,安装程序会将集群机器安装到单个 Prism Element 实例。您可以为容错指定额外的 Prism Element 实例,然后将它们应用到:
| 配置的故障域列表。 有关使用的更多信息,请参阅"在 Nutanix 上安装集群"中的"配置故障域"。 |
platform: nutanix: ingressVIP: | 为集群入口配置的虚拟 IP(VIP)地址。 | IP 地址 |
platform: nutanix: prismCentral: endpoint: address: | Prism Central 域名或 IP 地址。 | 字符串 |
platform: nutanix: prismCentral: endpoint: port: | 用于登录到 Prism Central 的端口。 | 字符串 |
platform: nutanix: prismCentral: password: | Prism Central 用户名的密码。 | 字符串 |
platform: nutanix: prismCentral: username: | 用于登录到 Prism Central 的用户名。 | 字符串 |
platform: nutanix: prismElements: endpoint: address: | Prism Element 域名或 IP 地址。[1] | 字符串 |
platform: nutanix: prismElements: endpoint: port: | 用于登录到 Prism Element 的端口。 | 字符串 |
platform: nutanix: prismElements: uuid: | Prism Element 的通用唯一标识符 (UUID)。 | 字符串 |
platform: nutanix: subnetUUIDs: | 包含您配置的虚拟 IP 地址和 DNS 记录的 Prism Element 网络的 UUID。[2] | 字符串 |
platform: nutanix: clusterOSImage: | 可选: 默认情况下,安装程序会下载并安装 Red Hat Enterprise Linux CoreOS (RHCOS) 镜像。如果 Prism Central 没有互联网访问,您可以通过在任何 HTTP 服务器上托管 RHCOS 镜像来覆盖默认行为,并将安装程序指向镜像。 | HTTP 或 HTTPS URL,可选使用 SHA-256 校验和。例如:http://example.com/images/rhcos-47.83.202103221318-0-nutanix.x86_64.qcow2 |
-
prismElements
部分包含 Prism Elements (clusters) 的列表。Prism Element 包括了所有 Nutanix 资源,如用于托管 OpenShift Container Platform 集群的虚拟机和子网。 - 仅支持 OpenShift Container Platform 集群中每个 Prism Element 的一个子网。
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.