14.3. 使用基于代理的安装程序安装 OpenShift Container Platform 集群
使用以下步骤使用基于代理的安装程序安装 OpenShift Container Platform 集群。
14.3.1. 先决条件
- 您可以参阅有关 OpenShift Container Platform 安装和更新 流程的详细信息。
- 您可以阅读选择集群安装方法并为用户准备它的文档。
14.3.2. 使用基于代理的安装程序安装 OpenShift Container Platform
以下流程在断开连接的环境中部署单节点 OpenShift Container Platform。您可以使用这些步骤作为基础,并根据您的要求进行修改。
14.3.2.1. 下载基于代理的安装程序
流程
使用这个流程下载安装所需的基于代理的安装程序和 CLI。
- 使用您的登录凭证登录到 OpenShift Container Platform web 控制台。
- 进入到 Datacenter。
- 在本地点 Run Agent-based Installer。
- 为 OpenShift Installer 和命令行界面选择操作系统和架构。
- 点 Download Installer 下载并提取安装程序。
- 您可以通过点 Download pull secret 或 Copy pull secret 下载或复制 pull secret。
-
点 Download command-line tools,将
openshift-install二进制文件放在PATH中的目录中。
14.3.2.2. 创建并引导代理镜像
使用这个流程在机器上引导代理镜像。
流程
运行以下命令来安装
nmstate依赖项:$ sudo dnf install /usr/bin/nmstatectl -y
-
将
openshift-install二进制文件放到 PATH 中的目录中。 运行以下命令,创建一个目录来存储安装配置:
$ mkdir ~/<directory_name>
注意这是基于代理的安装的首选方法。使用 GitOps ZTP 清单是可选的。
创建
install-config.yaml文件:cat << EOF > ./my-cluster/install-config.yaml apiVersion: v1 baseDomain: test.example.com compute: - architecture: amd64 1 hyperthreading: Enabled name: worker replicas: 0 controlPlane: architecture: amd64 hyperthreading: Enabled name: master replicas: 1 metadata: name: sno-cluster 2 networking: clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 machineNetwork: - cidr: 192.168.111.0/16 networkType: OVNKubernetes 3 serviceNetwork: - 172.30.0.0/16 platform: none: {} pullSecret: '<pull_secret>' 4 sshKey: | '<ssh_pub_key>' 5 EOF
注意如果将平台设置为
vSphere或baremetal,您可以使用三种方式为集群节点配置 IP 地址端点:- IPv4
- IPv6
- IPv4 和 IPv6 并行 (dual-stack)
IPv6 仅在裸机平台上被支持。
双栈网络示例
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创建
agent-config.yaml文件:cat > agent-config.yaml << EOF apiVersion: v1alpha1 kind: AgentConfig metadata: name: sno-cluster rendezvousIP: 192.168.111.80 1 hosts: 2 - hostname: master-0 3 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
- 可选
hostname参数覆盖从动态主机配置协议 (DHCP) 或反向 DNS 查找中获取的主机名。每个主机必须具有由这些方法提供的唯一主机名。 - 4
rootDeviceHints参数启用将 Red Hat Enterprise Linux CoreOS (RHCOS) 镜像置备到特定设备。它会按照发现设备的顺序检查设备,并将发现的值与 hint 值进行比较。它使用第一个与 hint 值匹配的发现设备。- 5
- 设置此可选参数,以 NMState 格式配置主机的网络接口。
运行以下命令来创建代理镜像:
$ 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镜像。
14.3.2.3. 验证当前安装主机是否可以拉取发行镜像
引导代理镜像和网络服务可用于主机后,代理控制台应用会执行拉取检查,以验证当前主机是否可以检索发行镜像。
如果主拉取检查通过,您可以退出应用程序以继续安装。如果拉取检查失败,应用程序会执行额外的检查,如 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 退出代理控制台应用程序并继续安装。
14.3.2.4. 跟踪并验证安装进度
使用以下步骤跟踪安装进度并验证安装是否成功。
流程
可选: 要了解 bootstrap 主机(渲染主机)何时重启,请运行以下命令:
$ ./openshift-install --dir <install_directory> agent wait-for bootstrap-complete \ 1 --log-level=info 2
输出示例
................................................................... ................................................................... INFO Bootstrap configMap status is complete INFO cluster bootstrap is complete
当 Kubernetes API 服务器提示已在 control plane 机器上引导它时,该命令会成功。
要跟踪进度并验证安装是否成功,请运行以下命令:
$ openshift-install --dir <install_directory> agent wait-for install-complete 1- 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.13
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
其他资源
- 请参阅使用双栈网络进行部署。
- 请参阅配置 install-config yaml 文件。
- 请参阅配置三节点集群以在裸机环境中部署三节点集群。
- 请参阅关于 root 设备提示。
- 请参阅 NMState 状态示例。
14.3.3. GitOps ZTP 自定义资源示例
可选: 您可以使用 GitOps Zero Touch Provisioning (ZTP) 自定义资源 (CR) 对象来使用基于代理的安装程序安装 OpenShift Container Platform 集群。
您可以自定义以下 GitOps ZTP 自定义资源,以指定有关 OpenShift Container Platform 集群的更多详情。以下 GitOps ZTP 自定义资源示例是单节点集群。
agent-cluster-install.yaml
apiVersion: extensions.hive.openshift.io/v1beta1
kind: AgentClusterInstall
metadata:
name: test-agent-cluster-install
namespace: cluster0
spec:
clusterDeploymentRef:
name: ostest
imageSetRef:
name: openshift-4.13
networking:
clusterNetwork:
- cidr: 10.128.0.0/14
hostPrefix: 23
serviceNetwork:
- 172.30.0.0/16
provisionRequirements:
controlPlaneAgents: 1
workerAgents: 0
sshPublicKey: <YOUR_SSH_PUBLIC_KEY>cluster-deployment.yaml
apiVersion: hive.openshift.io/v1
kind: ClusterDeployment
metadata:
name: ostest
namespace: cluster0
spec:
baseDomain: test.metalkube.org
clusterInstallRef:
group: extensions.hive.openshift.io
kind: AgentClusterInstall
name: test-agent-cluster-install
version: v1beta1
clusterName: ostest
controlPlaneConfig:
servingCertificates: {}
platform:
agentBareMetal:
agentSelector:
matchLabels:
bla: aaa
pullSecretRef:
name: pull-secretcluster-image-set.yaml
apiVersion: hive.openshift.io/v1 kind: ClusterImageSet metadata: name: openshift-4.13 spec: releaseImage: registry.ci.openshift.org/ocp/release:4.13.0-0.nightly-2022-06-06-025509
infra-env.yaml
apiVersion: agent-install.openshift.io/v1beta1
kind: InfraEnv
metadata:
name: myinfraenv
namespace: cluster0
spec:
clusterRef:
name: ostest
namespace: cluster0
cpuArchitecture: aarch64
pullSecretRef:
name: pull-secret
sshAuthorizedKey: <YOUR_SSH_PUBLIC_KEY>
nmStateConfigLabelSelector:
matchLabels:
cluster0-nmstate-label-name: cluster0-nmstate-label-valuenmstateconfig.yaml
apiVersion: agent-install.openshift.io/v1beta1
kind: NMStateConfig
metadata:
name: master-0
namespace: openshift-machine-api
labels:
cluster0-nmstate-label-name: cluster0-nmstate-label-value
spec:
config:
interfaces:
- name: eth0
type: ethernet
state: up
mac-address: 52:54:01:aa:aa:a1
ipv4:
enabled: true
address:
- ip: 192.168.122.2
prefix-length: 23
dhcp: false
dns-resolver:
config:
server:
- 192.168.122.1
routes:
config:
- destination: 0.0.0.0/0
next-hop-address: 192.168.122.1
next-hop-interface: eth0
table-id: 254
interfaces:
- name: "eth0"
macAddress: 52:54:01:aa:aa:a1pull-secret.yaml
apiVersion: v1 kind: Secret type: kubernetes.io/dockerconfigjson metadata: name: pull-secret namespace: cluster0 stringData: .dockerconfigjson: 'YOUR_PULL_SECRET'
其他资源
- 请参阅网络边缘的挑战,以了解更多有关 GitOps 零接触置备 (ZTP) 的信息。