4.2. 使用基于代理的安装程序安装 OpenShift Container Platform
以下流程在断开连接的环境中部署单节点 OpenShift Container Platform。您可以使用这些步骤作为基础,并根据您的要求进行修改。
4.2.1. 下载基于代理的安装程序 复制链接链接已复制到粘贴板!
使用这个流程下载安装所需的基于代理的安装程序和 CLI。
流程
- 使用您的登录凭证登录到 Red Hat Hybrid Cloud Console。
- 进入到 Datacenter。
- 在本地点 Run Agent-based Installer。
- 为 OpenShift Installer 和命令行界面选择操作系统和架构。
- 点 Download Installer 下载并提取安装程序。
- 通过点 Download pull secret 或 Copy pull secret 下载或复制 pull secret。
-
点 Download command-line tools,将
openshift-install二进制文件放在PATH中的目录中。
4.2.2. 验证基于代理的安装支持的构架 复制链接链接已复制到粘贴板!
在使用基于代理的安装程序安装 OpenShift Container Platform 集群前,您可以验证要在其上安装集群的支持的架构。这个过程是可选的。
先决条件
-
已安装 OpenShift CLI(
oc)。 - 您已下载了安装程序。
流程
-
登录 OpenShift CLI (
oc)。 运行以下命令检查您的发行镜像有效负载:
$ ./openshift-install version输出示例
./openshift-install 4.19.0 built from commit abc123def456 release image quay.io/openshift-release-dev/ocp-release@sha256:123abc456def789ghi012jkl345mno678pqr901stu234vwx567yz0 release architecture amd64如果您使用带有
multi有效负载的发行镜像,这个命令的输出中显示的发行架构是默认的架构。要检查有效负载的架构,请运行以下命令:
$ oc adm release info <release_image> -o jsonpath="{ .metadata.metadata}"1 - 1
- 将
<release_image>替换为发行镜像。例如:quay.io/openshift-release-dev/ocp-release@sha256:123abc456def789ghi012jkl345mno678pqr901stu234vwx567yz0。
当发行镜像使用
multi有效负载时的输出示例:{"release.openshift.io architecture":"multi"}如果使用带有
multi有效负载的发行镜像,则可以在不同的架构上安装集群,如arm64,amd64,s390x, 和ppc64le。否则,您只能在openshift-install version命令的输出中所显示的发行构架上安装集群。
4.2.3. 创建首选配置输入 复制链接链接已复制到粘贴板!
使用这个流程创建用于创建代理镜像的首选配置输入。
配置 install-config.yaml 和 agent-config.yaml 文件是使用基于代理的安装程序的首选方法。使用 GitOps ZTP 清单是可选的。
流程
运行以下命令来安装
nmstate依赖项:$ sudo dnf install /usr/bin/nmstatectl -y-
将
openshift-install二进制文件放到 PATH 中的目录中。 运行以下命令,创建一个目录来存储安装配置:
$ mkdir ~/<directory_name>运行以下命令来创建
install-config.yaml文件:$ cat << EOF > ./<directory_name>/install-config.yaml apiVersion: v1 baseDomain: test.example.com compute: - architecture: amd641 hyperthreading: Enabled name: worker replicas: 0 controlPlane: architecture: amd64 hyperthreading: Enabled name: master replicas: 1 metadata: name: sno-cluster2 networking: clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 machineNetwork: - cidr: 192.168.0.0/16 networkType: OVNKubernetes3 serviceNetwork: - 172.30.0.0/16 platform:4 none: {} pullSecret: '<pull_secret>'5 sshKey: '<ssh_pub_key>'6 EOF- 1
- 指定系统架构。有效值为
amd64,arm64,ppc64le, 和s390x。如果使用带有
multi有效负载的发行镜像,则可以在不同的架构上安装集群,如arm64,amd64,s390x, 和ppc64le。否则,您只能在openshift-install version命令的输出中所显示的发行构架上安装集群。如需更多信息,请参阅"验证安装基于代理的安装程序集群的受支持架构"。 - 2
- 必需。指定集群名称。
- 3
- 要安装的集群网络插件。默认值
OVNKubernetes是唯一支持的值。 - 4
- 指定您的平台。注意
对于裸机平台,默认使用
install-config.yaml文件的 platform 部分中进行的主机设置,除非它们被agent-config.yaml文件中的配置覆盖。 - 5
- 指定 pull secret。
- 6
- 指定 SSH 公钥。
注意如果将平台设置为
vSphere、baremetal或none,您可以以三种方式为集群节点配置 IP 地址端点:- IPv4
- IPv6
- IPv4 和 IPv6 并行 (dual-stack)
双栈网络示例
networking: clusterNetwork: - cidr: 172.21.0.0/16 hostPrefix: 23 - cidr: fd02::/48 hostPrefix: 64 machineNetwork: - cidr: 192.168.11.0/16 - cidr: 2001:DB8::/32 serviceNetwork: - 172.22.0.0/16 - fd03::/112 networkType: OVNKubernetes platform: baremetal: apiVIPs: - 192.168.11.3 - 2001:DB8::4 ingressVIPs: - 192.168.11.4 - 2001:DB8::5注意使用断开连接的镜像 registry 时,您必须将之前为镜像 registry 创建的证书文件添加到
install-config.yaml文件的additionalTrustBundle字段中。运行以下命令来创建
agent-config.yaml文件:$ cat > agent-config.yaml << EOF apiVersion: v1beta1 kind: AgentConfig metadata: name: sno-cluster rendezvousIP: 192.168.111.801 hosts:2 - hostname: master-03 interfaces: - name: eno1 macAddress: 00:ef:44:21:e6:a5 rootDeviceHints:4 deviceName: /dev/sdb networkConfig:5 interfaces: - name: eno1 type: ethernet state: up mac-address: 00:ef:44:21:e6:a5 ipv4: enabled: true address: - ip: 192.168.111.80 prefix-length: 23 dhcp: false dns-resolver: config: server: - 192.168.111.1 routes: config: - destination: 0.0.0.0/0 next-hop-address: 192.168.111.2 next-hop-interface: eno1 table-id: 254 EOF- 1
- 此 IP 地址用于确定哪些节点执行 bootstrap 过程,以及运行
assisted-service组件。当您没有在networkConfig参数中指定至少一个主机的 IP 地址时,您必须提供 rendezvous IP 地址。如果没有提供此地址,则会从提供的主机的networkConfig中选择一个 IP 地址。 - 2
- 可选:主机配置。定义的主机数量不能超过
install-config.yaml文件中定义的主机总数,这是compute.replicas和controlPlane.replicas参数的值的总和。 - 3
- 可选:覆盖从动态主机配置协议(DHCP)或反向 DNS 查找中获取的主机名。每个主机必须具有由这些方法提供的唯一主机名。
- 4
- 启用将 Red Hat Enterprise Linux CoreOS (RHCOS)镜像置备到特定设备。安装程序会按照发现设备的顺序检查设备,并将发现的值与 hint 值进行比较。它使用第一个与 hint 值匹配的发现设备。注意
对于 IBM Z 上的 FCP 多路径配置,此参数是必须的。
- 5
- 可选:以 NMState 格式配置主机的网络接口。
4.2.4. 创建其他清单文件 复制链接链接已复制到粘贴板!
作为可选任务,您可以创建额外的清单,以便在 install-config.yaml 和 agent-config.yaml 文件中可用的配置外进一步配置集群。
对由额外清单进行的集群自定义不会被验证,无法保证正常工作,并可能导致集群无法正常工作。
4.2.4.1. 创建包含额外清单的目录 复制链接链接已复制到粘贴板!
如果创建额外的清单,以在 install-config.yaml 和 agent-config.yaml 文件外配置基于 Agent 的安装,则必须在安装目录中创建 openshift 子目录。所有附加机器配置都必须位于此子目录中。
您可以添加的附加清单的最常见类型是 MachineConfig 对象。有关您可以在基于代理的安装过程中添加的 MachineConfig 对象示例,请参阅"添加资源"部分中的"使用 MachineConfig 对象来配置节点"。
流程
在安装主机上,运行以下命令在安装目录中创建一个
openshift子目录:$ mkdir <installation_directory>/openshift
4.2.4.2. 磁盘分区 复制链接链接已复制到粘贴板!
通常,您应该使用在 RHCOS 安装过程中创建的默认磁盘分区。然而,在有些情况下您可能需要为预期增长的目录创建独立分区。
OpenShift Container Platform 支持添加单个分区将存储附加到 /var 目录或 /var 的子目录中。例如:
-
/var/lib/containers:保存随着系统中添加更多镜像和容器而增长的容器相关内容。 -
/var/lib/etcd:保存您可能希望独立保留的数据,比如 etcd 存储的性能优化。 /var:保存您可能希望独立保留的数据,以满足审计等目的。重要对于大于 100GB 的磁盘大小,特别是磁盘大小大于 1TB,请创建一个独立的
/var分区。
通过单独存储 /var 目录的内容,可以更轻松地根据需要为区域扩展存储,并在以后重新安装 OpenShift Container Platform,并保持该数据的完整性。使用这个方法,您不必再次拉取所有容器,在更新系统时也不必复制大量日志文件。
将独立分区用于 /var 目录或 /var 的子目录也会防止分区目录中的数据增加填充根文件系统。
以下流程通过添加机器配置清单来设置独立的 /var 分区,该清单会在安装准备阶段封装到节点类型的 Ignition 配置文件中。
先决条件
-
您已在安装目录中创建了
openshift子目录。
流程
创建用于配置额外分区的 Butane 配置。例如,将文件命名为
$HOME/clusterconfig/98-var-partition.bu,将磁盘设备名称改为worker系统上存储设备的名称,并根据情况设置存储大小。这个示例将/var目录放在一个单独的分区中:variant: openshift version: 4.19.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分区时,如果不同的实例类型没有相同的设备名称,则无法将不同的实例类型用于计算节点。从 Butane 配置创建一个清单,并将它保存到
clusterconfig/openshift目录中。例如,运行以下命令:$ butane $HOME/clusterconfig/98-var-partition.bu -o $HOME/clusterconfig/openshift/98-var-partition.yaml
4.2.5. 使用 ZTP 清单 复制链接链接已复制到粘贴板!
作为可选任务,您可以使用 GitOps Zero Touch Provisioning (ZTP) 清单在通过 install-config.yaml 和 agent-config.yaml 文件提供的选项之外配置安装。
GitOps ZTP 清单可以使用或不提前配置 install-config.yaml 和 agent-config.yaml 文件生成。如果您选择配置 install-config.yaml 和 agent-config.yaml 文件,则配置会在生成时导入到 ZTP 集群清单中。
先决条件
-
您已将
openshift-install二进制文件放在PATH中的目录中。 -
可选:您已创建并配置了
install-config.yaml和agent-config.yaml文件。
流程
运行以下命令来生成 ZTP 集群清单:
$ openshift-install agent create cluster-manifests --dir <installation_directory>重要如果您已创建了
install-config.yaml和agent-config.yaml文件,则这些文件将被删除,并替换为通过这个命令生成的集群清单。在运行
openshift-install agent create cluster-manifests命令时,对install-config.yaml和agent-config.yaml文件所做的任何配置都会导入到 ZTP 集群清单中。运行以下命令,进入
cluster-manifests目录:$ cd <installation_directory>/cluster-manifests-
在
cluster-manifests目录中配置清单文件。如需示例文件,请参阅 "Sample GitOps ZTP 自定义资源" 部分。 断开连接的集群: 如果您在生成 ZTP 清单前没有在
install-config.yaml文件中定义镜像配置,请执行以下步骤:运行以下命令来进入
mirror目录:$ cd ../mirror-
在
mirror目录中配置清单文件。
4.2.6. 加密磁盘 复制链接链接已复制到粘贴板!
作为一个可选任务,在使用基于代理的安装程序安装 OpenShift Container Platform 时,您可以使用此流程加密磁盘或分区。
如果在裸机主机上有之前操作系统中剩余的 TPM 加密密钥,集群部署可能会卡住。为避免这种情况,强烈建议在引导 ISO 前在 BIOS 中重置 TPM 芯片。
先决条件
-
您已创建并配置了
install-config.yaml和agent-config.yaml文件,除非您使用 ZTP 清单。 -
您已将
openshift-install二进制文件放在PATH中的目录中。
流程
运行以下命令来生成 ZTP 集群清单:
$ openshift-install agent create cluster-manifests --dir <installation_directory>重要如果您已创建了
install-config.yaml和agent-config.yaml文件,则这些文件将被删除,并替换为通过这个命令生成的集群清单。在运行
openshift-install agent create cluster-manifests命令时,对install-config.yaml和agent-config.yaml文件所做的任何配置都会导入到 ZTP 集群清单中。注意如果您已经生成了 ZTP 清单,请跳过这一步。
运行以下命令,进入
cluster-manifests目录:$ cd <installation_directory>/cluster-manifests在
agent-cluster-install.yaml文件中添加以下部分:diskEncryption: enableOn: all1 mode: tang2 tangServers: "server1": "http://tang-server-1.example.com:7500"3
4.2.7. 创建并引导代理镜像 复制链接链接已复制到粘贴板!
使用这个流程在机器上引导代理镜像。
流程
运行以下命令来创建代理镜像:
$ openshift-install --dir <install_directory> agent create image注意Red Hat Enterprise Linux CoreOS (RHCOS) 支持主磁盘上的多路径,允许对硬件故障进行更强大的弹性,以实现更高的主机可用性。在代理 ISO 镜像中默认启用多路径,默认
/etc/multipath.conf配置。-
在裸机机器上引导
agent.x86_64.iso,agent.aarch64.iso, 或agent.s390x.iso镜像。
4.2.8. 使用 RHEL KVM 添加 IBM Z 代理 复制链接链接已复制到粘贴板!
使用以下步骤使用 RHEL KVM 手动添加 IBM Z® 代理。仅将此流程用于带有 RHEL KVM 的 IBM Z® 集群。
必须为 KVM 引导配置 nmstateconfig 参数。
流程
- 引导 RHEL KVM 机器。
要部署虚拟服务器,请使用以下参数运行
virt-install命令:ISO 引导
$ virt-install --name <vm_name> \ --autostart \ --memory=<memory> \ --cpu host \ --vcpus=<vcpus> \ --cdrom \<path_to_image>/<agent_iso_image> \1 --disk pool=default,size=<disk_pool_size> \ --network network:default,mac=<mac_address> \ --graphics none \ --noautoconsole \ --os-variant rhel9.0 \ --wait=-1- 1
- 对于
--cdrom参数,指定本地服务器上的 ISO 镜像的位置,例如<path_to_image>/home/<image>.iso。
注意对于在 IBM Z 上使用 DASD 设备的基于 KVM 的安装,必须使用
fdasd分区工具创建一个分区(例如/dev/dasdb1)。可选:启用 FIPS 模式。
要使用 RHEL KVM 在 IBM Z® 集群上启用 FIPS 模式,您必须使用 PXE 引导,并使用以下参数运行
virt-install命令:PXE 引导
$ virt-install \ --name <vm_name> \ --autostart \ --ram=16384 \ --cpu host \ --vcpus=8 \ --location <path_to_kernel_initrd_image>,kernel=kernel.img,initrd=initrd.img \1 --disk <qcow_image_path> \ --network network:macvtap ,mac=<mac_address> \ --graphics none \ --noautoconsole \ --wait=-1 \ --extra-args "rd.neednet=1 nameserver=<nameserver>" \ --extra-args "ip=<IP>::<nameserver>::<hostname>:enc1:none" \ --extra-args "coreos.live.rootfs_url=http://<http_server>:8080/agent.s390x-rootfs.img" \ --extra-args "random.trust_cpu=on rd.luks.options=discard" \ --extra-args "ignition.firstboot ignition.platform.id=metal" \ --extra-args "console=tty1 console=ttyS1,115200n8" \ --extra-args "coreos.inst.persistent-kargs=console=tty1 console=ttyS1,115200n8" \ --extra-args "fips=1" \2 --osinfo detect=on,require=off注意对于在 IBM Z 上使用 DASD 设备的基于 KVM 的安装,必须使用
fdasd分区工具创建一个分区(例如/dev/dasdb1)。注意目前,只支持 PXE 引导在 IBM Z® 上启用 FIPS 模式。
4.2.9. 验证当前安装主机是否可以拉取发行镜像 复制链接链接已复制到粘贴板!
引导代理镜像和网络服务可用于主机后,代理控制台应用会执行拉取检查,以验证当前主机是否可以检索发行镜像。
如果主拉取检查通过,您可以退出应用程序以继续安装。如果拉取检查失败,应用程序会执行额外的检查,如 TUI 的额外检查部分中所示,以帮助您对问题进行故障排除。只要主拉取检查成功,则对任何其他检查失败不一定至关重要。
如果有可能导致安装失败的主机网络配置问题,您可以使用控制台应用程序调整网络配置。
如果代理控制台应用程序检测到主机网络配置问题,则安装工作流将停止,直到用户手动停止控制台应用程序并信号继续操作。
流程
- 等待代理控制台应用程序检查是否可以从 registry 中拉取配置的发行镜像。
如果代理控制台应用程序指出安装程序连接检查已通过,请等待提示符超时。
注意您仍然可以选择查看或更改网络配置设置,即使连接检查已通过了。
但是,如果您选择与代理控制台应用程序交互,而不是让其超时,您必须手动退出 TUI 才能继续安装。
如果代理控制台应用程序检查失败(由
发行镜像 URLpull 检查旁的红色图标表示),请按照以下步骤重新配置主机的网络设置:阅读 TUI 的
检查错误部分。本节显示特定于失败检查的错误消息。
- 选择 Configure network 以启动 NetworkManager TUI。
- 选择 Edit a connection 并选择您要重新配置的连接。
- 编辑配置并选择 OK 保存您的更改。
- 选择 Back 返回到 NetworkManager TUI 的主屏幕。
- 选择 Activate a Connection。
- 选择重新配置的网络来取消激活它。
- 再次选择重新配置的网络来重新激活它。
- 选择 Back,然后选择 Quit 以返回到代理控制台应用程序。
- 至少等待五秒,以便持续网络检查使用新的网络配置重新启动。
-
如果
Release image URLpull 检查成功,并显示 URL 旁边的绿色图标,请选择 Quit 退出代理控制台应用程序并继续安装。
4.2.10. 跟踪并验证安装进度 复制链接链接已复制到粘贴板!
使用以下步骤跟踪安装进度并验证安装是否成功。
先决条件
- 您已为 Kubernetes API 服务器配置了 DNS 记录。
流程
可选: 要了解 bootstrap 主机(渲染主机)何时重启,请运行以下命令:
$ ./openshift-install --dir <install_directory> agent wait-for bootstrap-complete \1 --log-level=info2 输出示例
................................................................... ................................................................... INFO Bootstrap configMap status is complete INFO cluster bootstrap is complete当 Kubernetes API 服务器提示已在 control plane 机器上引导它时,该命令会成功。
要跟踪进度并验证安装是否成功,请运行以下命令:
$ openshift-install --dir <install_directory> agent wait-for install-complete1 - 1
- 对于
<install_directory>目录,请指定到生成代理 ISO 的目录的路径。
输出示例
................................................................... ................................................................... INFO Cluster is installed INFO Install complete! INFO To access the cluster as the system:admin user when using 'oc', run INFO export KUBECONFIG=/home/core/installer/auth/kubeconfig INFO Access the OpenShift web-console here: https://console-openshift-console.apps.sno-cluster.test.example.com
如果使用可选的 GitOps ZTP 清单方法,您可以以三种方式通过 AgentClusterInstall.yaml 文件为集群节点配置 IP 地址端点:
- IPv4
- IPv6
- IPv4 和 IPv6 并行 (dual-stack)
IPv6 仅在裸机平台上被支持。
双栈网络示例
apiVIP: 192.168.11.3
ingressVIP: 192.168.11.4
clusterDeploymentRef:
name: mycluster
imageSetRef:
name: openshift-4.19
networking:
clusterNetwork:
- cidr: 172.21.0.0/16
hostPrefix: 23
- cidr: fd02::/48
hostPrefix: 64
machineNetwork:
- cidr: 192.168.11.0/16
- cidr: 2001:DB8::/32
serviceNetwork:
- 172.22.0.0/16
- fd03::/112
networkType: OVNKubernetes