使用基于代理的安装程序安装内部集群


OpenShift Container Platform 4.13

使用基于代理的安装程序安装内部 OpenShift Container Platform 集群

Red Hat OpenShift Documentation Team

摘要

本文档论述了如何使用基于代理的安装程序安装内部 OpenShift Container Platform 集群。

第 1 章 准备使用基于代理的安装程序安装

1.1. 关于基于代理的安装程序

基于代理的安装方法提供了以任何方式引导内部服务器的灵活性。它将辅助安装服务的使用与离线运行的功能相结合,包括在 air-gapped 环境中。基于代理的安装是 OpenShift Container Platform 安装程序的子命令。它生成一个可引导的 ISO 镜像,其中包含使用可用发行镜像部署 OpenShift Container Platform 集群所需的所有信息。

配置的格式与安装程序置备的基础架构和用户置备的基础架构安装方法相同。基于代理的安装程序也可以选择生成或接受 Zero Touch Provisioning (ZTP) 自定义资源。ZTP 允许您使用裸机设备声明配置来置备新的边缘站点。

1.2. 了解基于代理的安装程序

作为 OpenShift Container Platform 用户,您可以在断开连接的环境中利用 Assisted Installer 托管服务的优势。

基于代理的安装包含一个可引导 ISO,其中包含辅助发现代理和辅助服务。两者都需要执行集群安装,但后者仅在其中一个主机上运行。

openshift-install agent create image 子命令会根据您提供的输入生成一个临时 ISO。您可以选择通过以下清单提供输入:

Preferred:

  • install-config.yaml
  • agent-config.yaml

可选:ZTP 清单

  • cluster-manifests/cluster-deployment.yaml
  • cluster-manifests/agent-cluster-install.yaml
  • cluster-manifests/pull-secret.yaml
  • cluster-manifests/infraenv.yaml
  • cluster-manifests/cluster-image-set.yaml
  • cluster-manifests/nmstateconfig.yaml
  • mirror/registries.conf
  • mirror/ca-bundle.crt

1.2.1. 基于代理的安装程序工作流

其中一个 control plane 主机在引导过程中运行 Assisted Service,最终成为 bootstrap 主机。此节点称为 rendezvous 主机 (node 0)。Assisted Service 确保所有主机都满足要求,并触发 OpenShift Container Platform 集群部署。所有节点都将 Red Hat Enterprise Linux CoreOS (RHCOS) 镜像写入磁盘。非引导节点重新引导并启动集群部署。节点重启后,rendezvous 主机会重启并加入集群。bootstrap 已完成,并部署了集群。

图 1.1. 节点安装工作流

基于代理的安装程序工作流

您可以通过 openshift-install agent create image 子命令为以下拓扑安装断开连接的 OpenShift Container Platform 集群:

  • 单节点 OpenShift Container Platform 集群 (SNO) :一个 master 和 worker 的节点。
  • 三节点 OpenShift Container Platform 集群 :一个紧凑集群,它有三个 master 节点,也是 worker 节点。
  • 高可用性 OpenShift Container Platform 集群 (HA) :具有任意数量的 worker 节点的 master 节点。

1.3. 关于网络

在生成代理 ISO 时,必须知道 rendezvous IP,以便在初始引导过程中,所有主机都可以检查辅助服务。如果使用动态主机配置协议 (DHCP) 服务器分配 IP 地址,则必须将 rendezvousIP 字段设置为将成为部署 control plane 一部分的主机的 IP 地址。在没有 DHCP 服务器的环境中,您可以静态定义 IP 地址。

除了静态 IP 地址外,您还可以应用任何采用 NMState 格式的网络配置。这包括 VLAN 和 NIC 绑定。

1.3.1. DHCP

首选方法:install-config.yamlagent-config.yaml

您必须为 rendezvousIP 字段指定值。networkConfig 字段可以留空:

agent-config.yaml.file 示例

apiVersion: v1alpha1
kind: AgentConfig
metadata:
  name: sno-cluster
rendezvousIP: 192.168.111.80 
1

1
rendezvous 主机的 IP 地址。

1.3.2. 静态网络

  1. 首选方法:install-config.yamlagent-config.yaml

    agent-config.yaml.file 示例

    cat > agent-config.yaml << EOF
    apiVersion: v1alpha1
    kind: AgentConfig
    metadata:
      name: sno-cluster
    rendezvousIP: 192.168.111.80 
    1
    
    hosts:
      - hostname: master-0
        interfaces:
          - name: eno1
            macAddress: 00:ef:44:21:e6:a5 
    2
    
        networkConfig:
          interfaces:
            - name: eno1
              type: ethernet
              state: up
              mac-address: 00:ef:44:21:e6:a5
              ipv4:
                enabled: true
                address:
                  - ip: 192.168.111.80 
    3
    
                    prefix-length: 23 
    4
    
                dhcp: false
          dns-resolver:
            config:
              server:
                - 192.168.111.1 
    5
    
          routes:
            config:
              - destination: 0.0.0.0/0
                next-hop-address: 192.168.111.1 
    6
    
                next-hop-interface: eno1
                table-id: 254
    EOF

    1
    如果没有为 rendezvousIP 字段指定值,则会从 networkConfig 字段中指定的静态 IP 地址选择一个地址。
    2
    主机上接口的 MAC 地址,用于决定要将配置应用到的主机。
    3
    目标裸机主机的静态 IP 地址。
    4
    目标裸机主机的静态 IP 地址子网前缀。
    5
    目标裸机主机的 DNS 服务器。
    6
    节点流量的下一跳地址。这必须与为特定接口设定的 IP 地址位于同一个子网中。
  2. 可选方法:GitOps ZTP 清单

    GitOps ZTP 自定义资源的可选方法包含 6 个自定义资源 ; 您可以在 nmstateconfig.yaml 文件中配置静态 IP。

    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 
    1
    
                  prefix-length: 23 
    2
    
              dhcp: false
        dns-resolver:
          config:
            server:
              - 192.168.122.1 
    3
    
        routes:
          config:
            - destination: 0.0.0.0/0
              next-hop-address: 192.168.122.1 
    4
    
              next-hop-interface: eth0
              table-id: 254
      interfaces:
        - name: eth0
          macAddress: 52:54:01:aa:aa:a1 
    5
    1
    目标裸机主机的静态 IP 地址。
    2
    目标裸机主机的静态 IP 地址子网前缀。
    3
    目标裸机主机的 DNS 服务器。
    4
    节点流量的下一跳地址。这必须与为特定接口设定的 IP 地址位于同一个子网中。
    5
    主机上接口的 MAC 地址,用于决定要将配置应用到的主机。

rendezvous IP 从 config 字段中指定的静态 IP 地址中选择。

1.4. 示例:绑定和 VLAN 接口节点网络配置

以下 agent-config.yaml 文件是绑定和 VLAN 接口的清单示例。

  apiVersion: v1alpha1
  kind: AgentConfig
  rendezvousIP: 10.10.10.14
  hosts:
    - hostname: master0
      role: master
      interfaces:
       - name: enp0s4
         macAddress: 00:21:50:90:c0:10
       - name: enp0s5
         macAddress: 00:21:50:90:c0:20
      networkConfig:
        interfaces:
          - name: bond0.300 
1

            type: vlan 
2

            state: up
            vlan:
              base-iface: bond0
              id: 300
            ipv4:
              enabled: true
              address:
                - ip: 10.10.10.14
                  prefix-length: 24
              dhcp: false
          - name: bond0 
3

            type: bond 
4

            state: up
            mac-address: 00:21:50:90:c0:10 
5

            ipv4:
              enabled: false
            ipv6:
              enabled: false
            link-aggregation:
              mode: active-backup 
6

              options:
                miimon: "150" 
7

              port:
               - enp0s4
               - enp0s5
        dns-resolver: 
8

          config:
            server:
              - 10.10.10.11
              - 10.10.10.12
        routes:
          config:
            - destination: 0.0.0.0/0
              next-hop-address: 10.10.10.10 
9

              next-hop-interface: bond0.300 
10

              table-id: 254
1 3
接口的名称。
2
接口的类型。这个示例创建了一个 VLAN。
4
接口的类型。这个示例创建了一个绑定。
5
接口的 mac 地址。
6
mode 属性指定绑定模式。
7
以毫秒为单位指定 MII 链接监控频率。这个示例每 150 毫秒检查绑定链接。
8
可选:指定 DNS 服务器的搜索和服务器设置。
9
节点流量的下一跳地址。这必须与为特定接口设定的 IP 地址位于同一个子网中。
10
节点流量的下一跳接口。

1.5. 示例:绑定和 SR-IOV 双 NIC 节点网络配置

重要

支持与为 SR-IOV 设备启用 NIC 分区关联的第 1 天操作只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

以下 agent-config.yaml 文件是一个带有绑定和 SR-IOV 接口的双端口网络接口控制器(NIC)的清单示例:

apiVersion: v1alpha1
kind: AgentConfig
rendezvousIP: 10.10.10.14
hosts:
  - hostname: worker-1
    interfaces:
      - name: eno1
        macAddress: 0c:42:a1:55:f3:06
      - name: eno2
        macAddress: 0c:42:a1:55:f3:07
    networkConfig: 
1

      interfaces: 
2

        - name: eno1 
3

          type: ethernet 
4

          state: up
          mac-address: 0c:42:a1:55:f3:06
          ipv4:
            enabled: true
            dhcp: false 
5

          ethernet:
            sr-iov:
              total-vfs: 2 
6

          ipv6:
            enabled: false
        - name: sriov:eno1:0
          type: ethernet
          state: up 
7

          ipv4:
            enabled: false 
8

          ipv6:
            enabled: false
            dhcp: false
        - name: sriov:eno1:1
          type: ethernet
          state: down
        - name: eno2
          type: ethernet
          state: up
          mac-address: 0c:42:a1:55:f3:07
          ipv4:
            enabled: true
          ethernet:
            sr-iov:
              total-vfs: 2
          ipv6:
            enabled: false
        - name: sriov:eno2:0
          type: ethernet
          state: up
          ipv4:
            enabled: false
          ipv6:
            enabled: false
        - name: sriov:eno2:1
          type: ethernet
          state: down
        - name: bond0
          type: bond
          state: up
          min-tx-rate: 100 
9

          max-tx-rate: 200 
10

          link-aggregation:
            mode: active-backup 
11

            options:
              primary: sriov:eno1:0 
12

            port:
              - sriov:eno1:0
              - sriov:eno2:0
          ipv4:
            address:
              - ip: 10.19.16.57 
13

                prefix-length: 23
            dhcp: false
            enabled: true
          ipv6:
            enabled: false
          dns-resolver:
            config:
              server:
                - 10.11.5.160
                - 10.2.70.215
          routes:
            config:
              - destination: 0.0.0.0/0
                next-hop-address: 10.19.17.254
                next-hop-interface: bond0 
14

                table-id: 254
1
networkConfig 字段包含主机的网络配置的信息,子字段包括 接口dns-resolverroutes
2
interfaces 字段是为主机定义的网络接口数组。
3
接口的名称。
4
接口的类型。这个示例创建了一个以太网接口。
5
如果物理功能 (PF) 没有严格要求,则将其设置为 false 以禁用 DHCP。
6
把它设置为要实例化的 SR-IOV 虚拟功能 (VF) 的数量。
7
把它设置为 up
8
把它设置为 false,以禁用附加到绑定的 VF 的 IPv4 寻址。
9
为 VF 设置最小传输率(以 Mbps 为单位)。这个示例值设置 100 Mbps 的速度。
  • 这个值必须小于或等于最大传输率。
  • Intel NIC 不支持 min-tx-rate 参数。如需更多信息,请参阅 BZ#1772847
10
为 VF 设置最大传输率(以 Mbps 为单位)。此示例值设置 200 Mbps 的速度。
11
设置所需的绑定模式。
12
设置绑定接口的首选端口。主设备是要使用的绑定接口的第一个,除非失败,否则不会被取消。当绑定接口中的一个 NIC 速度更快时,此设置特别有用,因此可以处理较大的负载。只有在绑定接口处于 active-backup 模式(模式 1)时,此设置才有效。
13
为绑定接口设置静态 IP 地址。这是节点 IP 地址。
14
bond0 设置为默认路由的网关。

1.6. 裸机 install-config.yaml 文件示例

您可以自定义 install-config.yaml 文件,以指定有关 OpenShift Container Platform 集群平台的更多详情,或修改所需参数的值。

apiVersion: v1
baseDomain: example.com 
1

compute: 
2

- name: worker
  replicas: 0 
3

controlPlane: 
4

  name: master
  replicas: 1 
5

metadata:
  name: sno-cluster 
6

networking:
  clusterNetwork:
  - cidr: 10.128.0.0/14 
7

    hostPrefix: 23 
8

  networkType: OVNKubernetes 
9

  serviceNetwork: 
10

  - 172.30.0.0/16
platform:
  none: {} 
11

fips: false 
12

pullSecret: '{"auths": ...}' 
13

sshKey: 'ssh-ed25519 AAAA...' 
14
1
集群的基域。所有 DNS 记录都必须是这个基域的子域,并包含集群名称。
2 4
controlPlane 部分是一个单个映射,但 compute 部分是一系列映射。为满足不同数据结构的要求,compute 部分的第一行必须以连字符 - 开头,controlPlane 部分 的第一行则不以连字符开头。仅使用一个 control plane 池。
3
此参数控制基于代理的安装在触发安装过程前等待发现的计算机器数量。它是必须使用生成的 ISO 引导的计算机器数量。
注意

如果要安装一个三节点集群,在安装 Red Hat Enterprise Linux CoreOS(RHCOS)机器时不要部署任何计算机器。

5
您添加到集群的 control plane 机器数量。由于集群使用这些值作为集群中的 etcd 端点数量,所以该值必须与您部署的 control plane 机器数量匹配。
6
您在 DNS 记录中指定的集群名称。
7
从中分配 Pod IP 地址的 IP 地址块。此块不得与现有物理网络重叠。这些 IP 地址用于 pod 网络。如果需要从外部网络访问 pod,您必须配置负载均衡器和路由器来管理流量。
注意

类 E CIDR 范围被保留以供以后使用。要使用 Class E CIDR 范围,您必须确保您的网络环境接受 Class E CIDR 范围内的 IP 地址。

8
分配给每个节点的子网前缀长度。例如,如果 hostPrefix 设为 23,则每个节点从 given cidr 中分配 a /23 子网,这样就能有 510(2^(32 - 23)- 2)个 pod IP 地址。如果需要从外部网络访问节点,请配置负载均衡器和路由器来管理流量。
9
要安装的集群网络插件。支持的值有 OVNKubernetes (默认值)和 OpenShiftSDN
10
用于服务 IP 地址的 IP 地址池。您只能输入一个 IP 地址池。此块不得与现有物理网络重叠。如果您需要从外部网络访问服务,请配置负载均衡器和路由器来管理流量。
11
对于单节点集群,您必须将平台设置为 none。您可以为多节点集群将平台设置为 vspherebaremetal
注意

如果将平台设置为 vspherebaremetal,您可以以三种方式为集群节点配置 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

12
是否启用或禁用 FIPS 模式。默认情况下不启用 FIPS 模式。
重要

OpenShift Container Platform 4.13 基于 Red Hat Enterprise Linux (RHEL) 9.2。RHEL 9.2 加密模块尚未经过 FIPS 验证。如需更多信息,请参阅 4.13 OpenShift Container Platform 发行注记 中的 "About this release"。

13
此 pull secret 允许您与所含授权机构提供的服务进行身份验证,这些服务包括为 OpenShift Container Platform 组件提供容器镜像的 Quay.io。
14
Red Hat Enterprise Linux CoreOS(RHCOS)中 core 用户的 SSH 公钥。
注意

对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定 ssh-agent 进程使用的 SSH 密钥。

1.7. 在代理 ISO 创建前验证检查

基于代理的安装程序在创建 ISO 之前对用户定义的 YAML 文件执行验证检查。验证成功后,会创建代理 ISO。

install-config.yaml

  • 支持裸机, vspherenone 平台。
  • 如果平台为 none,控制平面的副本需要为 1,worker 副本的总数为 0
  • 如果平台为 none,则 networkType 参数需要为 OVNKubernetes
  • 如果是裸机和 vSphere 平台,则需要设置 apiVIPsingressVIPs 参数。
  • agent-config.yaml 文件中,裸机平台配置中有一些特定于主机的字段将被忽略。如果设置了这些字段,则会记录警告消息。

agent-config.yaml

  • 每个接口都必须有一个定义的 MAC 地址。另外,所有接口都必须具有不同的 MAC 地址。
  • 每个主机必须至少定义一个接口。
  • root 设备提示不支持全局名称 (WWN) 供应商扩展。
  • host 对象中的 role 参数的值必须是 masterworker

1.7.1. ZTP 清单

agent-cluster-install.yaml

  • 对于 IPv6,networkType 参数唯一支持的值是 OVNKubernetesOpenshiftSDN 值只能用于 IPv4。

cluster-image-set.yaml

  • ReleaseImage 参数必须与安装程序中定义的发行版本匹配。

1.8. 关于 root 设备提示

rootDeviceHints 参数可让安装程序将 Red Hat Enterprise Linux CoreOS(RHCOS)镜像置备到特定的设备。安装程序会按照发现设备的顺序检查设备,并将发现的值与 hint 值进行比较。安装程序使用第一个与 hint 值匹配的发现设备。配置可以组合多个 hint,但设备必须与所有提示匹配,以便安装程序进行选择。

Expand
表 1.2. 子字段
子字段描述

deviceName

包含 Linux 设备名称的字符串(如 /dev/vda/dev/disk/by-path/ )。建议您使用 /dev/disk/by-path/<device_path> 链接到存储位置。hint 必须与实际值完全匹配。

hctl

包含类似 0:0:0:0:0 的 SCSI 总线地址的字符串。hint 必须与实际值完全匹配。

model

包含特定厂商的设备标识符的字符串。hint 可以是实际值的子字符串。

vendor

包含该设备厂商或制造商名称的字符串。hint 可以是实际值的子字符串。

serialNumber

包含设备序列号的字符串。hint 必须与实际值完全匹配。

minSizeGigabytes

以 GB 为单位代表设备的最小大小的整数。

wwn

包含唯一存储标识符的字符串。hint 必须与实际值完全匹配。如果使用 udevadm 命令检索 wwn 值,并且命令会输出 ID_WWN_WITH_EXTENSION 的值,则必须使用这个值来指定 wwn 子字段。

rotational

指明该设备为旋转磁盘(true)还是非旋转磁盘(false)的布尔值。

用法示例

     - name: master-0
       role: master
       rootDeviceHints:
         deviceName: "/dev/sda"

1.9. 后续步骤

第 2 章 了解断开连接的安装镜像

您可以使用镜像 registry 进行断开连接的安装,并确保集群只使用满足机构对外部内容控制的容器镜像。在受限网络中置备的基础架构上安装集群前,您必须将所需的容器镜像镜像(mirror)到那个环境中。要镜像容器镜像,您必须有一个 registry 才能进行镜像(mirror)。

您可以使用以下流程之一将 OpenShift Container Platform 镜像存储库镜像到您的镜像 registry:

要将镜像镜像用于基于代理的安装程序的断开连接的安装,您必须修改 install-config.yaml 文件。

您可以使用 oc adm release mirroroc mirror 命令的输出来镜像发行镜像。这取决于您用来设置镜像 registry 的命令。

以下示例显示了 oc adm release mirror 命令的输出。

$ oc adm release mirror

输出示例

To use the new mirrored repository to install, add the following
section to the install-config.yaml:

imageContentSources:

mirrors:
virthost.ostest.test.metalkube.org:5000/localimages/local-release-image
source: quay.io/openshift-release-dev/ocp-v4.0-art-dev
mirrors:
virthost.ostest.test.metalkube.org:5000/localimages/local-release-image
source: registry.ci.openshift.org/ocp/release

以下示例显示了 oc-mirror 插件生成的 imageContentSourcePolicy.yaml 文件的一部分。该文件可以在结果目录中找到,如 oc-mirror-workspace/results-1682697932/

imageContentSourcePolicy.yaml 文件示例

spec:
  repositoryDigestMirrors:
  - mirrors:
    - virthost.ostest.test.metalkube.org:5000/openshift/release
    source: quay.io/openshift-release-dev/ocp-v4.0-art-dev
  - mirrors:
    - virthost.ostest.test.metalkube.org:5000/openshift/release-images
    source: quay.io/openshift-release-dev/ocp-release

您必须使用 oc adm release mirror 命令的输出或 oc-mirror 插件来配置基于 Agent 的安装程序以使用镜像镜像。

流程

  1. 如果您使用 oc-mirror 插件来镜像发行镜像:

    1. 打开位于结果目录中的 imageContentSourcePolicy.yaml,如 oc-mirror-workspace/results-1682697932/
    2. 在 yaml 文件的 repositoryDigestMirrors 部分中复制文本。
  2. 如果使用 oc adm release mirror 命令镜像发行镜像:

    • 在命令输出的 imageContentSources 部分中复制文本。
  3. 将复制的文本粘贴到 install-config.yaml 文件的 imageContentSources 字段中。
  4. 将用于镜像 registry 的证书文件添加到 yaml 文件的 additionalTrustBundle 字段中。

    重要

    该值必须是您用于镜像 registry 的证书文件内容。证书文件可以是现有的可信证书颁发机构,也可以是您为镜像 registry 生成的自签名证书。

    install-config.yaml 文件示例

      additionalTrustBundle: |
        -----BEGIN CERTIFICATE-----
        ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
        -----END CERTIFICATE-----

  5. 如果使用 GitOps ZTP 清单:将 registry.confca-bundle.crt 文件添加到 mirror 路径中,以便在代理 ISO 镜像中添加镜像配置。

    注意

    您可以从 oc adm release mirror 命令的输出或 oc mirror 插件创建 registries.conf 文件。/etc/containers/registries.conf 文件的格式已更改。现在它是第 2 版,采用 TOML 格式。

    registry.conf 文件示例

    [[registry]]
    location = "registry.ci.openshift.org/ocp/release" mirror-by-digest-only = true
    
    [[registry.mirror]] location = "virthost.ostest.test.metalkube.org:5000/localimages/local-release-image"
    
    [[registry]]
    location = "quay.io/openshift-release-dev/ocp-v4.0-art-dev" mirror-by-digest-only = true
    
    [[registry.mirror]] location = "virthost.ostest.test.metalkube.org:5000/localimages/local-release-image"

第 3 章 安装集群

您可以使用基于代理的安装程序安装基本 OpenShift Container Platform 集群。

有关包括使用基于代理的安装程序时可以进行的可选自定义的步骤,请参阅使用自定义安装集群

3.1. 先决条件

以下流程在断开连接的环境中部署单节点 OpenShift Container Platform。您可以使用这些步骤作为基础,并根据您的要求进行修改。

3.2.1. 下载基于代理的安装程序

流程

使用这个流程下载安装所需的基于代理的安装程序和 CLI。

  1. 使用您的登录凭证登录到 OpenShift Container Platform web 控制台。
  2. 进入到 Datacenter
  3. 在本地点 Run Agent-based Installer
  4. OpenShift Installer命令行界面选择操作系统和架构。
  5. Download Installer 下载并提取安装程序。
  6. 通过点 Download pull secretCopy pull secret 下载或复制 pull secret。
  7. Download command-line tools,将 openshift-install 二进制文件放在 PATH 中的目录中。

3.2.2. 创建配置输入

您必须创建安装程序用来创建代理镜像的配置文件。

流程

  1. openshift-install 二进制文件放到 PATH 中的目录中。
  2. 运行以下命令,创建一个目录来存储安装配置:

    $ mkdir ~/<directory_name>
  3. 运行以下命令来创建 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: fd01::/48
        hostPrefix: 64
      machineNetwork:
      - cidr: fd2e:6f44:5dd8:c956::/120
      networkType: OVNKubernetes 
    3
    
      serviceNetwork:
      - fd02::/112
    platform: 
    4
    
      none: {}
    pullSecret: '<pull_secret>' 
    5
    
    sshKey: '<ssh_pub_key>' 
    6
    
    additionalTrustBundle: | 
    7
    
      -----BEGIN CERTIFICATE-----
      ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
      -----END CERTIFICATE-----
    imageContentSources: 
    8
    
    - 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
    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 公钥。
    7
    提供用于镜像 registry 的证书文件内容。证书文件可以是现有的可信证书颁发机构,也可以是您为镜像 registry 生成的自签名证书。如果使用断开连接的镜像 registry,则必须指定此参数。
    8
    根据您用来镜像存储库的命令输出提供 imageContentSources 部分。如果使用断开连接的镜像 registry,则必须指定此参数。
    重要
    • 使用 oc adm release mirror 命令时,请使用 imageContentSources 部分中的输出。
    • 使用 oc mirror 命令时,请使用 ImageContentSourcePolicy 文件的 repositoryDigestMirrors 部分,该文件源自运行命令。
    • ImageContentSourcePolicy 资源已弃用。
  4. 运行以下命令来创建 agent-config.yaml 文件:

    $ cat > agent-config.yaml << EOF
    apiVersion: v1beta1
    kind: AgentConfig
    metadata:
      name: sno-cluster
    rendezvousIP: fd2e:6f44:5dd8:c956::50 
    1
    
    EOF
    1
    此 IP 地址用于确定哪些节点执行 bootstrap 过程,以及运行 assisted-service 组件。当您没有在 networkConfig 参数中指定至少一个主机 IP 地址时,您必须提供 rendezvous IP 地址。如果没有提供这个地址,则会从提供的主机 networkConfig 参数中选择一个 IP 地址。

3.2.3. 创建并引导代理镜像

使用这个流程在机器上引导代理镜像。

流程

  1. 运行以下命令来创建代理镜像:

    $ openshift-install --dir <install_directory> agent create image
    注意

    Red Hat Enterprise Linux CoreOS (RHCOS) 支持主磁盘上的多路径,允许对硬件故障进行更强大的弹性,以实现更高的主机可用性。在代理 ISO 镜像中默认启用多路径,默认 /etc/multipath.conf 配置。

  2. 在裸机机器上引导 agent.x86_64.isoagent.aarch64.iso 镜像。

引导代理镜像和网络服务可用于主机后,代理控制台应用会执行拉取检查,以验证当前主机是否可以检索发行镜像。

如果主拉取检查通过,您可以退出应用程序以继续安装。如果拉取检查失败,应用程序会执行额外的检查,如 TUI 的额外检查部分中所示,以帮助您对问题进行故障排除。只要主拉取检查成功,则对任何其他检查失败不一定至关重要。

如果有可能导致安装失败的主机网络配置问题,您可以使用控制台应用程序调整网络配置。

重要

如果代理控制台应用程序检测到主机网络配置问题,则安装工作流将停止,直到用户手动停止控制台应用程序并信号继续操作。

流程

  1. 等待代理控制台应用程序检查是否可以从 registry 中拉取配置的发行镜像。
  2. 如果代理控制台应用程序指出安装程序连接检查已通过,请等待提示符超时。

    注意

    您仍然可以选择查看或更改网络配置设置,即使连接检查已通过了。

    但是,如果您选择与代理控制台应用程序交互,而不是让其超时,您必须手动退出 TUI 才能继续安装。

  3. 如果代理控制台应用程序检查失败(由 发行镜像 URL pull 检查旁的红色图标表示),请按照以下步骤重新配置主机的网络设置:

    1. 阅读 TUI 的检查错误部分。本节显示特定于失败检查的错误消息。

      代理控制台应用程序的主页屏幕显示检查错误
    2. 选择 Configure network 以启动 NetworkManager TUI。
    3. 选择 Edit a connection 并选择您要重新配置的连接。
    4. 编辑配置并选择 OK 保存您的更改。
    5. 选择 Back 返回到 NetworkManager TUI 的主屏幕。
    6. 选择 Activate a Connection
    7. 选择重新配置的网络来取消激活它。
    8. 再次选择重新配置的网络来重新激活它。
    9. 选择 Back,然后选择 Quit 以返回到代理控制台应用程序。
    10. 至少等待五秒,以便持续网络检查使用新的网络配置重新启动。
    11. 如果 Release image URL pull 检查成功,并显示 URL 旁边的绿色图标,请选择 Quit 退出代理控制台应用程序并继续安装。

3.2.5. 跟踪并验证安装进度

使用以下步骤跟踪安装进度并验证安装是否成功。

先决条件

  • 您已为 Kubernetes API 服务器配置了 DNS 记录。

流程

  1. 可选: 要了解 bootstrap 主机(渲染主机)何时重启,请运行以下命令:

    $ ./openshift-install --dir <install_directory> agent wait-for bootstrap-complete \ 
    1
    
        --log-level=info 
    2
    1
    对于 <install_directory>,请指定到生成代理 ISO 的目录的路径。
    2
    要查看不同的安装详情,请指定 warndebugerror,而不是 info

    输出示例

    ...................................................................
    ...................................................................
    INFO Bootstrap configMap status is complete
    INFO cluster bootstrap is complete

    当 Kubernetes API 服务器提示已在 control plane 机器上引导它时,该命令会成功。

  2. 要跟踪进度并验证安装是否成功,请运行以下命令:

    $ 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

3.3. 从基于代理的安装收集日志数据

使用以下步骤收集有关基于代理的安装失败的日志数据,以便为支持问题单提供。

先决条件

  • 您已为 Kubernetes API 服务器配置了 DNS 记录。

流程

  1. 运行以下命令并收集输出:

    $ ./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

  2. 如果上一命令的输出显示失败,或者 bootstrap 没有进展,请运行以下命令连接到 rendezvous 主机并收集输出:

    $ ssh core@<node-ip> agent-gather -O >agent-gather.tar.xz
    注意

    红帽支持可以使用 rendezvous 主机收集的数据诊断大多数问题,但如果某些主机无法注册,从每个主机收集这些数据可能会很有用。

  3. 如果 bootstrap 完成且集群节点重启,请运行以下命令并收集输出:

    $ ./openshift-install --dir <install_directory> agent wait-for install-complete --log-level=debug
  4. 如果上一命令的输出显示失败,请执行以下步骤:

    1. 运行以下命令,将 kubeconfig 文件导出到您的环境:

      $ export KUBECONFIG=<install_directory>/auth/kubeconfig
    2. 运行以下命令为调试收集信息:

      $ oc adm must-gather
    3. 运行以下命令,从工作目录中刚刚创建的 must-gather 目录创建一个压缩文件:

      $ tar cvaf must-gather.tar.gz <must_gather_directory>
  5. 排除 /auth 子目录,将部署期间使用的安装目录附加到红帽客户门户上的支持问题单中。
  6. 将从此流程收集的所有其他数据添加到您的支持问题单中。

第 4 章 使用自定义安装集群

使用以下步骤使用基于代理的安装程序使用自定义的 OpenShift Container Platform 集群。

4.1. 先决条件

以下流程在断开连接的环境中部署单节点 OpenShift Container Platform。您可以使用这些步骤作为基础,并根据您的要求进行修改。

4.2.1. 下载基于代理的安装程序

流程

使用这个流程下载安装所需的基于代理的安装程序和 CLI。

  1. 使用您的登录凭证登录到 OpenShift Container Platform web 控制台。
  2. 进入到 Datacenter
  3. 在本地点 Run Agent-based Installer
  4. OpenShift Installer命令行界面选择操作系统和架构。
  5. Download Installer 下载并提取安装程序。
  6. 通过点 Download pull secretCopy pull secret 下载或复制 pull secret。
  7. Download command-line tools,将 openshift-install 二进制文件放在 PATH 中的目录中。

4.2.2. 创建首选配置输入

使用这个流程创建用于创建代理镜像的首选配置输入。

流程

  1. 运行以下命令来安装 nmstate 依赖项:

    $ sudo dnf install /usr/bin/nmstatectl -y
  2. openshift-install 二进制文件放到 PATH 中的目录中。
  3. 运行以下命令,创建一个目录来存储安装配置:

    $ mkdir ~/<directory_name>
    注意

    这是基于代理的安装的首选方法。使用 GitOps ZTP 清单是可选的。

  4. 运行以下命令来创建 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:
      none: {}
    pullSecret: '<pull_secret>' 
    4
    
    sshKey: '<ssh_pub_key>' 
    5
    
    EOF
    1
    指定系统架构,有效值为 amd64arm64
    2
    必需。指定集群名称。
    3
    指定要安装的集群网络插件。支持的值有 OVNKubernetesOpenShiftSDN。默认值为 OVNKubernetes
    4
    指定 pull secret。
    5
    指定 SSH 公钥。
    注意

    如果将平台设置为 vSpherebaremetalnone,您可以以三种方式为集群节点配置 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 字段中。

  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.replicascontrolPlane.replicas 参数的值的总和。
    3
    可选:覆盖从动态主机配置协议(DHCP)或反向 DNS 查找中获取的主机名。每个主机必须具有由这些方法提供的唯一主机名。
    4
    启用将 Red Hat Enterprise Linux CoreOS (RHCOS)镜像置备到特定设备。它会按照发现设备的顺序检查设备,并将发现的值与 hint 值进行比较。它使用第一个与 hint 值匹配的发现设备。
    5
    可选:以 NMState 格式配置主机的网络接口。

4.2.3. 使用 ZTP 清单

作为可选任务,您可以使用 GitOps Zero Touch Provisioning (ZTP) 清单在通过 install-config.yamlagent-config.yaml 文件提供的选项之外配置安装。

注意

GitOps ZTP 清单可以使用或不提前配置 install-config.yamlagent-config.yaml 文件生成。如果您选择配置 install-config.yamlagent-config.yaml 文件,则配置会在生成时导入到 ZTP 集群清单中。

先决条件

  • 您已将 openshift-install 二进制文件放在 PATH 中的目录中。
  • 可选:您已创建并配置了 install-config.yamlagent-config.yaml 文件。

流程

  1. 运行以下命令来生成 ZTP 集群清单:

    $ openshift-install agent create cluster-manifests --dir <installation_directory>
    重要

    如果您已创建了 install-config.yamlagent-config.yaml 文件,则这些文件将被删除,并替换为通过这个命令生成的集群清单。

    在运行 openshift-install agent create cluster-manifests 命令时,对 install-config.yamlagent-config.yaml 文件所做的任何配置都会导入到 ZTP 集群清单中。

  2. 运行以下命令,进入 cluster-manifests 目录:

    $ cd <installation_directory>/cluster-manifests
  3. cluster-manifests 目录中配置清单文件。如需示例文件,请参阅 "Sample GitOps ZTP 自定义资源" 部分。
  4. 断开连接的集群: 如果您在生成 ZTP 清单前没有在 install-config.yaml 文件中定义镜像配置,请执行以下步骤:

    1. 运行以下命令来进入 mirror 目录:

      $ cd ../mirror
    2. mirror 目录中配置清单文件。

4.2.4. 创建并引导代理镜像

使用这个流程在机器上引导代理镜像。

流程

  1. 运行以下命令来创建代理镜像:

    $ openshift-install --dir <install_directory> agent create image
    注意

    Red Hat Enterprise Linux CoreOS (RHCOS) 支持主磁盘上的多路径,允许对硬件故障进行更强大的弹性,以实现更高的主机可用性。在代理 ISO 镜像中默认启用多路径,默认 /etc/multipath.conf 配置。

  2. 在裸机机器上引导 agent.x86_64.isoagent.aarch64.iso 镜像。

引导代理镜像和网络服务可用于主机后,代理控制台应用会执行拉取检查,以验证当前主机是否可以检索发行镜像。

如果主拉取检查通过,您可以退出应用程序以继续安装。如果拉取检查失败,应用程序会执行额外的检查,如 TUI 的额外检查部分中所示,以帮助您对问题进行故障排除。只要主拉取检查成功,则对任何其他检查失败不一定至关重要。

如果有可能导致安装失败的主机网络配置问题,您可以使用控制台应用程序调整网络配置。

重要

如果代理控制台应用程序检测到主机网络配置问题,则安装工作流将停止,直到用户手动停止控制台应用程序并信号继续操作。

流程

  1. 等待代理控制台应用程序检查是否可以从 registry 中拉取配置的发行镜像。
  2. 如果代理控制台应用程序指出安装程序连接检查已通过,请等待提示符超时。

    注意

    您仍然可以选择查看或更改网络配置设置,即使连接检查已通过了。

    但是,如果您选择与代理控制台应用程序交互,而不是让其超时,您必须手动退出 TUI 才能继续安装。

  3. 如果代理控制台应用程序检查失败(由 发行镜像 URL pull 检查旁的红色图标表示),请按照以下步骤重新配置主机的网络设置:

    1. 阅读 TUI 的检查错误部分。本节显示特定于失败检查的错误消息。

      代理控制台应用程序的主页屏幕显示检查错误
    2. 选择 Configure network 以启动 NetworkManager TUI。
    3. 选择 Edit a connection 并选择您要重新配置的连接。
    4. 编辑配置并选择 OK 保存您的更改。
    5. 选择 Back 返回到 NetworkManager TUI 的主屏幕。
    6. 选择 Activate a Connection
    7. 选择重新配置的网络来取消激活它。
    8. 再次选择重新配置的网络来重新激活它。
    9. 选择 Back,然后选择 Quit 以返回到代理控制台应用程序。
    10. 至少等待五秒,以便持续网络检查使用新的网络配置重新启动。
    11. 如果 Release image URL pull 检查成功,并显示 URL 旁边的绿色图标,请选择 Quit 退出代理控制台应用程序并继续安装。

4.2.6. 跟踪并验证安装进度

使用以下步骤跟踪安装进度并验证安装是否成功。

先决条件

  • 您已为 Kubernetes API 服务器配置了 DNS 记录。

流程

  1. 可选: 要了解 bootstrap 主机(渲染主机)何时重启,请运行以下命令:

    $ ./openshift-install --dir <install_directory> agent wait-for bootstrap-complete \ 
    1
    
        --log-level=info 
    2
    1
    对于 <install_directory>,请指定到生成代理 ISO 的目录的路径。
    2
    要查看不同的安装详情,请指定 warndebugerror,而不是 info

    输出示例

    ...................................................................
    ...................................................................
    INFO Bootstrap configMap status is complete
    INFO cluster bootstrap is complete

    当 Kubernetes API 服务器提示已在 control plane 机器上引导它时,该命令会成功。

  2. 要跟踪进度并验证安装是否成功,请运行以下命令:

    $ 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

4.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: <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.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: <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>

4.4. 从基于代理的安装收集日志数据

使用以下步骤收集有关基于代理的安装失败的日志数据,以便为支持问题单提供。

先决条件

  • 您已为 Kubernetes API 服务器配置了 DNS 记录。

流程

  1. 运行以下命令并收集输出:

    $ ./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

  2. 如果上一命令的输出显示失败,或者 bootstrap 没有进展,请运行以下命令连接到 rendezvous 主机并收集输出:

    $ ssh core@<node-ip> agent-gather -O >agent-gather.tar.xz
    注意

    红帽支持可以使用 rendezvous 主机收集的数据诊断大多数问题,但如果某些主机无法注册,从每个主机收集这些数据可能会很有用。

  3. 如果 bootstrap 完成且集群节点重启,请运行以下命令并收集输出:

    $ ./openshift-install --dir <install_directory> agent wait-for install-complete --log-level=debug
  4. 如果上一命令的输出显示失败,请执行以下步骤:

    1. 运行以下命令,将 kubeconfig 文件导出到您的环境:

      $ export KUBECONFIG=<install_directory>/auth/kubeconfig
    2. 运行以下命令为调试收集信息:

      $ oc adm must-gather
    3. 运行以下命令,从工作目录中刚刚创建的 must-gather 目录创建一个压缩文件:

      $ tar cvaf must-gather.tar.gz <must_gather_directory>
  5. 排除 /auth 子目录,将部署期间使用的安装目录附加到红帽客户门户上的支持问题单中。
  6. 将从此流程收集的所有其他数据添加到您的支持问题单中。

您可以安装多集群引擎 Operator,并使用基于 Agent 的 OpenShift Container Platform 安装程序部署 hub 集群。以下流程部分自动化,在部署初始集群后需要手动步骤。

5.1. 先决条件

您可以在断开连接的环境中将所需的 OpenShift Container Platform 容器镜像、多集群引擎 Operator 和 Local Storage Operator (LSO) 镜像 (LSO) 到断开连接的环境中的本地镜像 registry 中。确保您注意了镜像 registry 的本地 DNS 主机名和端口。

注意

要将 OpenShift Container Platform 镜像存储库镜像到您的镜像 registry,您可以使用 oc adm release imageoc mirror 命令。在此过程中,oc mirror 命令被用作示例。

流程

  1. 创建一个 <assets_directory> 文件夹,使其包含有效的 install-config.yamlagent-config.yaml 文件。此目录用于存储所有资产。
  2. 要镜像 OpenShift Container Platform 镜像存储库、多集群引擎和 LSO,请使用以下设置创建一个 ImageSetConfiguration.yaml 文件:

    示例 ImageSetConfiguration.yaml

      kind: ImageSetConfiguration
      apiVersion: mirror.openshift.io/v1alpha2
      archiveSize: 4 
    1
    
      storageConfig: 
    2
    
        imageURL: <your-local-registry-dns-name>:<your-local-registry-port>/mirror/oc-mirror-metadata 
    3
    
        skipTLS: true
      mirror:
        platform:
          architectures:
            - "amd64"
          channels:
            - name: stable-4.13 
    4
    
              type: ocp
        additionalImages:
          - name: registry.redhat.io/ubi9/ubi:latest
        operators:
          - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.13 
    5
    
            packages: 
    6
    
              - name: multicluster-engine 
    7
    
              - name: local-storage-operator 
    8

    1
    指定镜像集合中每个文件的最大大小(以 GiB 为单位)。
    2
    设置后端位置,以接收镜像设置元数据。此位置可以是 registry 或本地目录。必须指定 storageConfig 值。
    3
    设置存储后端的 registry URL。
    4
    设置包含您要安装的版本的 OpenShift Container Platform 镜像的频道。
    5
    设置包含您要安装的 OpenShift Container Platform 镜像的 Operator 目录。
    6
    仅指定要包含在镜像集中的特定 Operator 软件包和频道。删除此字段以检索目录中的所有软件包。
    7
    多集群引擎软件包和频道。
    8
    LSO 软件包和频道。
    注意

    在镜像内容时,oc mirror 命令需要此文件。

  3. 要镜像特定的 OpenShift Container Platform 镜像存储库、多集群引擎和 LSO,请运行以下命令:

    $ oc mirror --dest-skip-tls --config ocp-mce-imageset.yaml docker://<your-local-registry-dns-name>:<your-local-registry-port>
  4. 更新 install-config.yaml 文件中的 registry 和证书:

    示例 imageContentSources.yaml

      imageContentSources:
        - source: "quay.io/openshift-release-dev/ocp-release"
          mirrors:
            - "<your-local-registry-dns-name>:<your-local-registry-port>/openshift/release-images"
        - source: "quay.io/openshift-release-dev/ocp-v4.0-art-dev"
          mirrors:
            - "<your-local-registry-dns-name>:<your-local-registry-port>/openshift/release"
        - source: "registry.redhat.io/ubi9"
          mirrors:
            - "<your-local-registry-dns-name>:<your-local-registry-port>/ubi9"
        - source: "registry.redhat.io/multicluster-engine"
          mirrors:
            - "<your-local-registry-dns-name>:<your-local-registry-port>/multicluster-engine"
        - source: "registry.redhat.io/rhel8"
          mirrors:
            - "<your-local-registry-dns-name>:<your-local-registry-port>/rhel8"
        - source: "registry.redhat.io/redhat"
          mirrors:
            - "<your-local-registry-dns-name>:<your-local-registry-port>/redhat"

    另外,请确保您的证书存在于 install-config.yamladditionalTrustBundle 字段中。

    示例 install-config.yaml

    additionalTrustBundle: |
      -----BEGIN CERTIFICATE-----
      zzzzzzzzzzz
      -----END CERTIFICATE-------

    重要

    oc mirror 命令会创建一个名为 oc-mirror-workspace 的文件夹,其中包含几个输出。这包括 imageContentSourcePolicy.yaml 文件,用于标识 OpenShift Container Platform 和所选 Operator 所需的所有镜像。

  5. 运行以下命令来生成集群清单:

    $ openshift-install agent create cluster-manifests

    此命令更新集群 manifests 文件夹,使其包含包含您的镜像配置的 mirror 文件夹。

为多集群引擎 Operator、Local Storage Operator (LSO) 创建所需的清单,并将基于代理的 OpenShift Container Platform 集群部署为 hub 集群。

流程

  1. <assets_directory> 文件夹中创建一个名为 openshift 的子文件夹。此子文件夹用于存储在安装过程中应用的额外清单,以进一步自定义部署的集群。<assets_directory> 文件夹包含所有资产,包括 install-config.yamlagent-config.yaml 文件。

    注意

    安装程序不会验证额外的清单。

  2. 对于多集群引擎,创建以下清单并将其保存到 <assets_directory>/openshift 文件夹中:

    示例 mce_namespace.yaml

      apiVersion: v1
      kind: Namespace
      metadata:
        labels:
          openshift.io/cluster-monitoring: "true"
        name: multicluster-engine

    示例 mce_operatorgroup.yaml

      apiVersion: operators.coreos.com/v1
      kind: OperatorGroup
      metadata:
        name: multicluster-engine-operatorgroup
        namespace: multicluster-engine
      spec:
        targetNamespaces:
        - multicluster-engine

    示例 mce_subscription.yaml

      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        name: multicluster-engine
        namespace: multicluster-engine
      spec:
        channel: "stable-2.3"
        name: multicluster-engine
        source: redhat-operators
        sourceNamespace: openshift-marketplace

    注意

    您可以使用支持的安装程序 (AI) 使用 Red Hat Advanced Cluster Management (RHACM) 大规模安装分布式单元 (DU)。这些分布式单元必须在 hub 集群中启用。AI 服务需要手动创建的持久性卷 (PV)。

  3. 对于 AI 服务,请创建以下清单并将其保存到 <assets_directory>/openshift 文件夹中:

    示例 lso_namespace.yaml

      apiVersion: v1
      kind: Namespace
      metadata:
        annotations:
          openshift.io/cluster-monitoring: "true"
        name: openshift-local-storage

    示例 lso_operatorgroup.yaml

      apiVersion: operators.coreos.com/v1
      kind: OperatorGroup
      metadata:
        name: local-operator-group
        namespace: openshift-local-storage
      spec:
        targetNamespaces:
          - openshift-local-storage

    示例 lso_subscription.yaml

      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        name: local-storage-operator
        namespace: openshift-local-storage
      spec:
        installPlanApproval: Automatic
        name: local-storage-operator
        source: redhat-operators
        sourceNamespace: openshift-marketplace

    注意

    创建所有清单后,文件系统必须显示如下:

    文件系统示例

    <assets_directory>
        ├─ install-config.yaml
        ├─ agent-config.yaml
        └─ /openshift
            ├─ mce_namespace.yaml
            ├─ mce_operatorgroup.yaml
            ├─ mce_subscription.yaml
            ├─ lso_namespace.yaml
            ├─ lso_operatorgroup.yaml
            └─ lso_subscription.yaml

  4. 运行以下命令来创建代理 ISO 镜像:

    $ openshift-install agent create image --dir <assets_directory>
  5. 镜像就绪后,引导目标机器并等待安装完成。
  6. 要监控安装,请运行以下命令:

    $ openshift-install agent wait-for install-complete --dir <assets_directory>
    注意

    要配置功能齐全的 hub 集群,必须创建以下清单,并通过运行 $ oc apply -f <manifest-name> 命令手动应用它们。清单创建的顺序非常重要,如果需要,会显示等待条件。

  7. 对于 AI 服务所需的 PV,请创建以下清单:

      apiVersion: local.storage.openshift.io/v1
      kind: LocalVolume
      metadata:
       name: assisted-service
       namespace: openshift-local-storage
      spec:
       logLevel: Normal
       managementState: Managed
       storageClassDevices:
         - devicePaths:
             - /dev/vda
             - /dev/vdb
           storageClassName: assisted-service
           volumeMode: Filesystem
  8. 在应用后续清单前,使用以下命令等待 PV 的可用性:

    $ oc wait localvolume -n openshift-local-storage assisted-service --for condition=Available --timeout 10m
    注意
    The `devicePath` is an example and may vary depending on the actual hardware configuration used.
  9. 为多集群引擎实例创建清单。

    示例 MultiClusterEngine.yaml

      apiVersion: multicluster.openshift.io/v1
      kind: MultiClusterEngine
      metadata:
        name: multiclusterengine
      spec: {}

  10. 创建清单以启用 AI 服务。

    示例 agentserviceconfig.yaml

      apiVersion: agent-install.openshift.io/v1beta1
      kind: AgentServiceConfig
      metadata:
        name: agent
        namespace: assisted-installer
      spec:
       databaseStorage:
        storageClassName: assisted-service
        accessModes:
        - ReadWriteOnce
        resources:
         requests:
          storage: 10Gi
       filesystemStorage:
        storageClassName: assisted-service
        accessModes:
        - ReadWriteOnce
        resources:
         requests:
          storage: 10Gi

  11. 创建清单来部署后续 spoke 集群。

    示例 clusterimageset.yaml

      apiVersion: hive.openshift.io/v1
      kind: ClusterImageSet
      metadata:
        name: "4.13"
      spec:
        releaseImage: quay.io/openshift-release-dev/ocp-release:4.13.0-x86_64

  12. 创建一个清单来导入安装代理(托管多集群引擎和 Assisted Service)作为 hub 集群。

    示例 autoimport.yaml

      apiVersion: cluster.open-cluster-management.io/v1
      kind: ManagedCluster
      metadata:
       labels:
         local-cluster: "true"
         cloud: auto-detect
         vendor: auto-detect
       name: local-cluster
      spec:
       hubAcceptsClient: true

  13. 等待受管集群创建。

    $ oc wait -n multicluster-engine managedclusters local-cluster --for condition=ManagedClusterJoined=True --timeout 10m

验证

  • 要确认受管集群安装成功,请运行以下命令:

    $ oc get managedcluster
    NAME            HUB ACCEPTED   MANAGED CLUSTER URLS             JOINED   AVAILABLE  AGE
    local-cluster   true           https://<your cluster url>:6443   True     True       77m

Legal Notice

Copyright © Red Hat

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 the OpenJS Foundation.

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.

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部