搜索

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

download PDF

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

14.3.1. 先决条件

14.3.2. 使用基于代理的安装程序安装 OpenShift Container Platform

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

14.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 中的目录中。

14.3.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 > ./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.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 公钥。
    注意

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

    注意

    使用断开连接的镜像 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 格式配置主机的网络接口。

14.3.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 目录中配置清单文件。

其他资源

14.3.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 镜像。

14.3.2.5. 验证当前安装主机是否可以拉取发行镜像

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

如果主拉取检查通过,您可以退出应用程序以继续安装。如果拉取检查失败,应用程序会执行额外的检查,如 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 退出代理控制台应用程序并继续安装。

14.3.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

其他资源

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

其他资源

14.3.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. 将从此流程收集的所有其他数据添加到您的支持问题单中。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.