$ ./openshift-install version
使用以下步骤使用基于代理的安装程序安装OpenShift Container Platform集群。
您已查看有关OpenShift Container Platform安装和更新流程的详细信息。
您已阅读有关选择集群安装方法并为用户准备集群的文档。
如果您使用防火墙或代理,则已将其配置为允许集群需要访问的站点。
以下步骤在断开连接的环境中部署单节点OpenShift Container Platform。您可以将这些步骤作为基础,并根据您的需求进行修改。
使用此步骤下载基于代理的安装程序和安装所需的CLI。
使用您的登录凭据登录到OpenShift Container Platform Web控制台。
导航到数据中心。
单击**在本地运行基于代理的安装程序**。
为**OpenShift安装程序**和**命令行界面**选择操作系统和架构。
单击**下载安装程序**以下载并解压缩安装程序。
通过单击**下载拉取密钥**或**复制拉取密钥**来下载或复制拉取密钥。
单击**下载命令行工具**并将openshift-install
二进制文件放在PATH
中的目录中。
在使用基于Agent的安装程序安装OpenShift Container Platform集群之前,您可以验证可以安装集群的受支持架构。此过程是可选的。
您已安装OpenShift CLI(oc
)。
您已下载安装程序。
登录到OpenShift CLI(oc
)。
运行以下命令检查您的发行版有效负载
$ ./openshift-install version
./openshift-install 4.17.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
命令输出中显示的发行版架构
上安装集群。
使用此过程创建用于创建代理镜像的首选配置输入。
运行以下命令安装nmstate
依赖项
$ sudo dnf install /usr/bin/nmstatectl -y
将openshift-install
二进制文件放在PATH中的目录中。
运行以下命令创建一个目录来存储安装配置
$ mkdir ~/<directory_name>
这是基于Agent安装的首选方法。使用GitOps ZTP清单是可选的。 |
运行以下命令创建install-config.yaml
文件
$ cat << EOF > ./<directory_name>/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.0.0/16
networkType: OVNKubernetes (3)
serviceNetwork:
- 172.30.0.0/16
platform: (4)
none: {}
pullSecret: '<pull_secret>' (5)
sshKey: '<ssh_pub_key>' (6)
EOF
1 | 指定系统架构。有效值为amd64 、arm64 、ppc64le 和s390x 。如果您使用带有 |
||
2 | 必需。指定您的集群名称。 | ||
3 | 要安装的集群网络插件。默认值OVNKubernetes 是唯一受支持的值。 |
||
4 | 指定您的平台。
|
||
5 | 指定您的拉取密钥。 | ||
6 | 指定您的SSH公钥。 |
如果将平台设置为
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: v1beta1
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地址用于确定哪个节点执行引导过程以及运行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)镜像置备到特定设备。安装程序按发现设备的顺序检查设备,并将发现的值与提示值进行比较。它使用第一个与提示值匹配的已发现设备。 |
5 | 可选:以NMState格式配置主机的网络接口。 |
作为一项可选任务,您可以创建其他清单以进一步配置集群,超出install-config.yaml
和agent-config.yaml
文件中提供的配置。
如果您创建其他清单来配置基于Agent的安装(超出install-config.yaml
和agent-config.yaml
文件),则必须在安装目录中创建openshift
子目录。所有其他机器配置都必须位于此子目录中。
您可以添加的最常见的其他清单类型是 |
在安装主机上,通过运行以下命令在安装目录中创建openshift
子目录
$ mkdir <installation_directory>/openshift
通常,您应该使用RHCOS安装期间创建的默认磁盘分区。但是,在某些情况下,您可能希望为预期会增长的目录创建单独的分区。
OpenShift Container Platform支持添加单个分区以将存储附加到/var
目录或/var
的子目录。例如
/var/lib/containers
:保存与容器相关的內容,随着向系统添加更多镜像和容器,它可能会增长。
/var/lib/etcd
:保存您可能出于性能优化etcd存储等目的而希望单独保留的数据。
/var
: 存储您可能出于审计等目的而希望单独保留的数据。
对于大于 100GB,尤其大于 1TB 的磁盘,请创建单独的 |
将 /var
目录的内容单独存储,可以更轻松地根据需要扩展这些区域的存储空间,并在以后重新安装 OpenShift Container Platform 时保持数据完整。使用此方法,您无需重新拉取所有容器,也无需在更新系统时复制海量日志文件。
对 /var
目录或 /var
的子目录使用单独的分区还可以防止分区目录中的数据增长填满根文件系统。
以下过程通过添加一个机器配置清单来设置单独的 /var
分区,该清单在安装的准备阶段被包装到节点类型的 Ignition 配置文件中。
您已在安装目录中创建了一个 openshift
子目录。
创建一个 Butane 配置文件来配置附加分区。例如,将文件命名为 $HOME/clusterconfig/98-var-partition.bu
,将磁盘设备名称更改为 worker
系统上存储设备的名称,并根据需要设置存储大小。此示例将 /var
目录放在单独的分区上。
variant: openshift
version: 4.17.0
metadata:
labels:
machineconfiguration.openshift.io/role: worker
name: 98-var-partition
storage:
disks:
- device: /dev/disk/by-id/<device_name> (1)
partitions:
- label: var
start_mib: <partition_start_offset> (2)
size_mib: <partition_size> (3)
number: 5
filesystems:
- device: /dev/disk/by-partlabel/var
path: /var
format: xfs
mount_options: [defaults, prjquota] (4)
with_mount_unit: true
1 | 您要分区的磁盘的存储设备名称。 |
2 | 将数据分区添加到启动磁盘时,建议最小偏移值为 25000 MiB。根文件系统会自动调整大小以填充所有可用空间,直到指定的偏移量。如果未指定偏移值,或指定的偏移值小于建议的最小值,则生成的根文件系统将太小,并且将来重新安装 RHCOS 可能会覆盖数据分区的开头。 |
3 | 数据分区的大小(以 MiB 为单位)。 |
4 | 必须为用于容器存储的文件系统启用 prjquota 挂载选项。 |
创建单独的 |
从 Butane 配置文件中创建一个清单,并将其保存到 clusterconfig/openshift
目录。例如,运行以下命令
$ butane $HOME/clusterconfig/98-var-partition.bu -o $HOME/clusterconfig/openshift/98-var-partition.yaml
作为可选任务,您可以使用 GitOps 零接触配置 (ZTP) 清单来配置您的安装,超出 install-config.yaml
和 agent-config.yaml
文件中提供的选项。
GitOps ZTP 清单可以在预先配置或不配置 |
您已将 openshift-install
二进制文件放置在 PATH
中的目录中。
可选:您已创建并配置了 install-config.yaml
和 agent-config.yaml
文件。
通过运行以下命令生成 ZTP 集群清单
$ openshift-install agent create cluster-manifests --dir <installation_directory>
如果您已创建 当您运行 |
通过运行以下命令导航到 cluster-manifests
目录
$ cd <installation_directory>/cluster-manifests
配置 cluster-manifests
目录中的清单文件。有关示例文件,请参阅“示例 GitOps ZTP 自定义资源”部分。
断开连接的集群:如果您在生成 ZTP 清单之前未在 install-config.yaml
文件中定义镜像配置,请执行以下步骤
通过运行以下命令导航到 mirror
目录
$ cd ../mirror
配置 mirror
目录中的清单文件。
请参阅 网络远端边缘的挑战,了解更多关于 GitOps 零接触配置 (ZTP) 的信息。
作为可选任务,您可以在使用基于代理的安装程序安装 OpenShift Container Platform 时,使用此过程来加密您的磁盘或分区。
您已创建并配置了 install-config.yaml
和 agent-config.yaml
文件,除非您使用 ZTP 清单。
您已将 openshift-install
二进制文件放置在 PATH
中的目录中。
通过运行以下命令生成 ZTP 集群清单
$ openshift-install agent create cluster-manifests --dir <installation_directory>
如果您已创建 当您运行 |
如果您已经生成了 ZTP 清单,请跳过此步骤。 |
通过运行以下命令导航到 cluster-manifests
目录
$ cd <installation_directory>/cluster-manifests
将以下部分添加到 agent-cluster-install.yaml
文件中
diskEncryption:
enableOn: all (1)
mode: tang (2)
tangServers: "server1": "http://tang-server-1.example.com:7500" (3)
1 | 指定要启用磁盘加密的节点。有效值为 none 、all 、master 和 worker 。 |
2 | 指定要使用的磁盘加密模式。有效值为 tpmv2 和 tang 。 |
3 | 可选:如果您使用 Tang,请指定 Tang 服务器。 |
使用此过程在您的机器上引导代理映像。
通过运行以下命令创建代理映像
$ 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
映像。
使用以下过程手动添加使用 RHEL KVM 的 IBM Z® 代理。仅对使用 RHEL KVM 的 IBM Z® 集群使用此过程。
必须为 KVM 启动配置 |
启动您的 RHEL KVM 机器。
要部署虚拟服务器,请使用以下参数运行 virt-install
命令
$ virt-install
--name <vm_name> \
--autostart \
--memory=<memory> \
--cpu host \
--vcpus=<vcpus> \
--cdrom <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 映像在 HTTP 或 HTTPS 服务器上的位置。 |
引导代理映像并向主机提供网络服务后,代理控制台应用程序将执行拉取检查,以验证当前主机是否可以检索发行版映像。
如果主要的拉取检查通过,您可以退出应用程序以继续安装。如果拉取检查失败,应用程序将执行其他检查(如 TUI 的“其他检查”部分所示),以帮助您排除问题。只要主要的拉取检查成功,任何其他检查的失败都不一定是严重的。
如果存在可能导致安装失败的主机网络配置问题,您可以使用控制台应用程序调整您的网络配置。
如果代理控制台应用程序检测到主机网络配置问题,则安装工作流将暂停,直到用户手动停止控制台应用程序并发出继续操作的信号。 |
等待代理控制台应用程序检查是否可以从注册表中拉取已配置的发行版映像。
如果代理控制台应用程序指出安装程序连接性检查已通过,请等待提示超时以继续安装。
即使连接性检查已通过,您仍然可以选择查看或更改网络配置设置。 但是,如果您选择与代理控制台应用程序交互,而不是让其超时,则必须手动退出TUI才能继续安装。 |
如果代理控制台应用程序检查失败(发行版镜像URL
拉取检查旁边的图标显示为红色),请按照以下步骤重新配置主机的网络设置。
阅读TUI的检查错误
部分。此部分显示与失败检查相关的错误消息。
选择**配置网络**以启动NetworkManager TUI。
选择**编辑连接**并选择要重新配置的连接。
编辑配置并选择**确定**保存更改。
选择**返回**以返回NetworkManager TUI的主屏幕。
选择**激活连接**。
选择重新配置的网络以将其停用。
再次选择重新配置的网络以将其重新激活。
选择**返回**,然后选择**退出**以返回代理控制台应用程序。
等待至少五秒钟,以便使用新的网络配置重新启动连续网络检查。
如果发行版镜像URL
拉取检查成功,并且URL旁边显示绿色图标,请选择**退出**以退出代理控制台应用程序并继续安装。
使用以下步骤跟踪安装进度并验证安装是否成功。
您已为Kubernetes API服务器配置了DNS记录。
可选:要了解引导主机(Rendezvous主机)何时重新启动,请运行以下命令:
$ ./openshift-install --dir <install_directory> agent wait-for bootstrap-complete \(1)
--log-level=info (2)
1 | 对于<install_directory> ,请指定生成代理ISO的目录路径。 |
2 | 要查看不同的安装详细信息,请指定warn 、debug 或error 代替info 。 |
...................................................................
...................................................................
INFO Bootstrap configMap status is complete
INFO cluster bootstrap is complete
当Kubernetes API服务器发出信号表示它已在控制平面机器上引导时,命令将成功。
要跟踪进度并验证安装是否成功,请运行以下命令:
$ 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清单的可选方法,则可以通过
IPv6仅在裸机平台上受支持。 |
apiVIP: 192.168.11.3
ingressVIP: 192.168.11.4
clusterDeploymentRef:
name: mycluster
imageSetRef:
name: openshift-4.17
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
请参阅使用双栈网络部署。
请参阅配置三节点集群以在裸机环境中部署三节点集群。
请参阅关于根设备提示。
请参阅NMState状态示例。
您可以选择使用GitOps零触摸配置 (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.17
networking:
clusterNetwork:
- cidr: 10.128.0.0/14
hostPrefix: 23
serviceNetwork:
- 172.30.0.0/16
provisionRequirements:
controlPlaneAgents: 1
workerAgents: 0
sshPublicKey: <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-secret
cluster-image-set.yaml
文件apiVersion: hive.openshift.io/v1
kind: ClusterImageSet
metadata:
name: openshift-4.17
spec:
releaseImage: registry.ci.openshift.org/ocp/release:4.17.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: <ssh_public_key>
nmStateConfigLabelSelector:
matchLabels:
cluster0-nmstate-label-name: cluster0-nmstate-label-value
nmstateconfig.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:a1
pull-secret.yaml
文件apiVersion: v1
kind: Secret
type: kubernetes.io/dockerconfigjson
metadata:
name: pull-secret
namespace: cluster0
stringData:
.dockerconfigjson: <pull_secret>
请参阅 网络远端边缘的挑战,了解更多关于 GitOps 零接触配置 (ZTP) 的信息。
使用以下步骤收集有关失败的基于代理的安装的日志数据,以提供给支持案例。
您已为Kubernetes API服务器配置了DNS记录。
运行以下命令并收集输出:
$ ./openshift-install --dir <installation_directory> agent wait-for bootstrap-complete --log-level=debug
...
ERROR Bootstrap failed to complete: : bootstrap process timed out: context deadline exceeded
如果先前命令的输出指示失败,或者引导程序没有进展,请运行以下命令连接到Rendezvous主机并收集输出:
$ ssh core@<node-ip> agent-gather -O >agent-gather.tar.xz
Red Hat支持可以使用从Rendezvous主机收集的数据诊断大多数问题,但是如果某些主机无法注册,则从每个主机收集此数据可能会有所帮助。 |
如果引导程序完成并且集群节点重新启动,请运行以下命令并收集输出:
$ ./openshift-install --dir <install_directory> agent wait-for install-complete --log-level=debug
如果先前命令的输出指示失败,请执行以下步骤:
通过运行以下命令将kubeconfig
文件导出到您的环境:
$ export KUBECONFIG=<install_directory>/auth/kubeconfig
通过运行以下命令收集用于调试的信息:
$ oc adm must-gather
通过运行以下命令从刚刚在您的工作目录中创建的must-gather
目录创建一个压缩文件:
$ tar cvaf must-gather.tar.gz <must_gather_directory>
排除/auth
子目录,将部署期间使用的安装目录附加到Red Hat客户门户上的支持案例。
将从此过程中收集的所有其他数据附加到您的支持案例。