第 1 章 OpenShift Container Platform 安装概述

1.1. 关于 OpenShift Container Platform 安装

OpenShift Container Platform 安装程序提供了四个部署集群的方法,相关信息包括在以下列表中:

  • 交互式 :您可以使用基于 Web 的 辅助安装程序(Assisted Installer)部署集群。对于可以连接到互联网的网络,这是一个理想的方法。Assisted Installer 是安装 OpenShift Container Platform 的最简单方法,它提供智能默认值,并在安装集群前执行预动态验证。它还提供了一个 RESTful API 用于自动化和高级配置场景。
  • 本地基于代理的 :对于断开连接的环境或有网络限制的环境,您可以使用基于代理的安装程序。它提供了 Assisted Installer 的许多优点,但您必须首先下载并配置基于代理的安装程序。使用命令行界面完成配置。这个方法适用于断开连接的环境。
  • 自动 :您可以在安装程序置备的基础架构中部署集群。安装程序使用每个集群主机的基板管理控制器 (BMC) 进行置备。您可以在有连接或断开连接的环境中部署集群。
  • 完全控制:您可以在自己准备和维护的基础架构上部署集群,这种方法提供了最大的定制性。您可以在有连接或断开连接的环境中部署集群。

每种方法部署的集群具有以下特征:

  • 没有单点故障的高可用性基础架构,默认可用。
  • 管理员可以控制要应用的更新,以及应用的时间。

1.1.1. 关于安装程序

您可以使用安装程序部署每种集群。安装程序会生成主要资产,如 bootstrap、control plane 和计算机器的 Ignition 配置文件。您可以使用这三个机器配置开始使用 OpenShift Container Platform 集群,它为您提供了正确配置的基础架构。

OpenShift Container Platform 安装程序使用一组目标和依赖项来管理集群安装。安装程序具有一组必须实现的目标,并且每个目标都有一组依赖项。因为每个目标仅关注其自己的依赖项,所以安装程序可以并行地实现多个目标,最终组成一个正常运行的集群。安装程序会识别并使用现有组件,而不是运行命令来再次创建它们,因为程序满足依赖项。

图 1.1. OpenShift Container Platform 安装目标和依赖项

OpenShift Container Platform 安装目标和依赖项

1.1.2. 关于 Red Hat Enterprise Linux CoreOS (RHCOS)

在安装后,每一个集群机器都将使用 Red Hat Enterprise Linux CoreOS (RHCOS) 作为操作系统。RHCOS 是 Red Hat Enterprise Linux (RHEL) 的不可变容器主机版本,具有默认启用 SELinux 的 RHEL 内核。RHCOS 包括作为 Kubernetes 节点代理的 kubelet,以及为 Kubernetes 优化的 CRI-O 容器运行时。

OpenShift Container Platform 4.12 集群中的每一 control plane 机器都必须使用 RHCOS,其中包括一个关键的首次启动置备工具,称为 Ignition。这一工具让集群能够配置机器。操作系统更新作为可引导容器镜像(使用 OSTree 作为后端)提供,该镜像由 Machine Config Operator 在集群中部署。实际的操作系统更改通过使用 rpm-ostree 在每台机器上作为原子操作原位进行。通过结合使用这些技术,OpenShift Container Platform 可以像管理集群上的任何其他应用程序一样管理操作系统,通过原位升级使整个平台保持最新状态。这些原位更新可以减轻运维团队的负担。

如果将 RHCOS 用作所有集群机器的操作系统,则集群将管理其组件和机器的所有方面,包括操作系统在内。因此,只有安装程序和 Machine Config Operator 才能更改机器。安装程序使用 Ignition 配置文件设置每台机器的确切状态,安装后则由 Machine Config Operator 完成对机器的更多更改,例如应用新证书或密钥等。

1.1.3. OpenShift Container Platform 安装的常见术语表

术语表定义了与安装内容相关的常用术语。参阅以下术语列表以更好地了解安装过程。

支持的安装程序
console.redhat.com 中托管的安装程序,它提供基于 web 用户界面或 RESTful API 用于创建集群配置。Assisted Installer 会生成一个发现镜像。集群机器使用发现镜像进行引导,它会安装 RHCOS 和代理。Assisted Installer 和代理一起为集群提供了预安装验证和安装功能。
基于代理的安装程序
与 Assisted Installer 类似的安装程序,但您必须首先下载基于代理的安装程序。基于代理的安装程序是断开连接的环境的理想选择。
Bootstrap 节点
一个临时的机器,它运行最小需要的 Kubernetes 配置来部署 OpenShift Container Platform 控制平面(control plane)。
Control plane(控制平面)
一个容器编配层,用于公开 API 和接口来定义、部署和管理容器的生命周期。也称为 control plane 机器。
Compute 节点
负责执行集群用户工作负载的节点。也称为 worker 节点。
断开连接的安装
在有些情况下,数据中心的部分环境可能无法访问互联网,甚至无法通过代理服务器访问。您仍可在这些环境中安装 OpenShift Container Platform,但需要先下载所需的软件和镜像,并将其保存在离线环境中。
OpenShift Container Platform 安装程序
置备基础架构并部署集群的程序。
安装程序置备的基础架构
安装程序部署并配置运行集群的基础架构。
Ignition 配置文件
Ignition 工具用于在操作系统初始化过程中配置 Red Hat Enterprise Linux CoreOS (RHCOS)的文件。安装程序生成不同的 Ignition 配置文件来初始化 bootstrap、control plane 和 worker 节点。
Kubernetes 清单
JSON 或 YAML 格式的 Kubernetes API 对象的规格。配置文件可以包含部署、配置映射、secret 和 daemonset 等。
Kubelet
在集群的每个节点上运行的一个主节点代理,以确保容器在 pod 中运行。
负载均衡器
负载均衡器是客户端的单点联系。API 的负载均衡器在 control plane 节点之间分布传入的流量。
Machine Config Operator
一个 Operator,管理并应用基本操作系统和容器运行时的配置和更新,包括内核和 kubelet 之间的所有配置和更新。
Operator
在 OpenShift Container Platform 集群中打包、部署和管理 Kubernetes 应用程序的首选方法。Operator 将人类操作知识编码到一个软件程序中,易于打包并与客户共享。
用户置备的基础架构
您可以在自己提供的基础架构上安装 OpenShift Container Platform。您可以使用安装程序来生成置备集群基础架构所需的资产,再创建集群基础架构,然后将集群部署到您提供的基础架构中。

1.1.4. 安装过程

除了 Assisted Installer 外,当安装 OpenShift Container Platform 集群时,您必须从 OpenShift Cluster Manager Hybrid Cloud Console 上的适当的 Cluster Type 页面下载安装程序。此控制台管理:

  • 帐户的 REST API。
  • registry 令牌,这是用于获取所需组件的 pull secret。
  • 集群注册,将集群身份与您的红帽帐户相关联,以便收集使用指标。

在 OpenShift Container Platform 4.12 中,安装程序是对一组资产执行一系列文件转换的 Go 二进制文件。与安装程序交互的方式因您的安装类型而异。考虑以下安装用例:

  • 要使用 Assisted Installer 部署集群,您可以使用 Assisted Installer 配置集群设置。没有安装程序可以下载和配置。设置完集群配置后,您可以下载发现 ISO,然后使用该镜像引导集群机器。您可以使用 Assisted Installer 在完全集成的 Nutanix、vSphere 和裸机上安装集群,以及以前没有集成的环境中安装集群。如果在裸机上安装,您需要提供所有集群基础架构和资源,包括网络、负载均衡、存储和所有集群机器。
  • 要使用基于代理的安装程序部署集群,您可以首先下载基于代理的安装程序。然后,您可以配置集群并生成发现镜像。您可以使用发现镜像引导集群机器,它会安装一个与安装程序进行通信的代理,并为您处理置备,您不需要与安装程序进行交互或自行设置置备程序机器。您需要提供所有集群基础架构和资源,包括网络、负载均衡、存储和单个集群机器。这个方法适用于断开连接的环境。
  • 对于具有安装程序置备的基础架构集群,您可以将基础架构启动和置备委派给安装程序,而不是亲自执行。安装程序将创建支持集群所需的所有网络、机器和操作系统,除非您载裸机上安装。如果在裸机上安装,您必须提供所有集群基础架构和资源,包括 bootstrap 机器、网络、负载均衡、存储和单个集群机器。
  • 如果亲自为集群置备和管理基础架构,则必须提供所有集群基础架构和资源,包括 Bootstrap 机器、网络、负载均衡、存储和独立的集群机器。

对于安装程序,在安装过程中会使用三组文件:名为 install-config.yaml 的安装配置文件、Kubernetes 清单,以及您的集群类型的 Ignition 配置文件。

重要

在安装过程中,您可以修改控制基础 RHCOS 操作系统的 Kubernetes 和 Ignition 配置文件。但是,没有可用的验证机制来确认您对这些对象所做修改是适当的。如果修改了这些对象,集群可能会无法运行。由于存在这种风险,修改 Kubernetes 和 Ignition 配置文件不受支持,除非您遵循记录的流程或在红帽支持指示下操作。

安装配置文件转换为 Kubernetes 清单,然后清单嵌套到 Ignition 配置文件中。安装程序使用这些 Ignition 配置文件来创建集群。

运行安装程序时,所有配置文件会被修剪,因此请务必备份需要再次使用的所有配置文件。

重要

安装之后,您无法修改在安装过程中设置的参数,但可以修改一些集群属性。

使用辅助安装程序的安装过程

使用辅助安装程序进行安装涉及使用基于 Web 的用户界面或使用 RESTful API 以互动方式创建集群配置。Assisted Installer 用户界面会提示您输入所需的值,并为其余参数提供合理的默认值,除非在用户界面或使用 API 中更改它们。Assisted Installer 生成发现镜像,您可以下载并用来引导集群机器。镜像安装 RHCOS 和代理,代理会为您处理置备。您可以使用 Assisted Installer 安装 OpenShift Container Platform,并在 Nutanix、vSphere 和裸机上完全集成。另外,您可以在其他没有集成的情况下使用 Assisted Installer 安装 OpenShift Container Platform。

OpenShift Container Platform 管理集群的所有方面,包括操作系统本身。每台机器在启动时使用的配置引用其加入的集群中托管的资源。此配置允许集群在应用更新时自行管理。

如果可能,请使用 Assisted Installer 功能来避免下载和配置基于代理的安装程序。

基于代理的基础架构的安装过程

基于代理的安装与使用 Assisted Installer 类似,唯一的不同是需要在最初下载并安装基于代理的安装程序。当您希望利用 Assisted Installer 所带来的变量,并需要在断开连接的环境中安装集群时,可以使用基于代理的安装。

如果可能,请使用基于代理的安装功能来避免创建带有 bootstrap 虚拟机的置备程序机器,然后置备和维护集群基础架构。

采用安装程序置备的基础架构的安装过程

默认安装类型为使用安装程序置备的基础架构。默认情况下,安装程序充当安装向导,提示您输入它无法自行确定的值,并为其余参数提供合理的默认值。您还可以自定义安装过程来支持高级基础架构场景。安装程序将为集群置备底层基础架构。

您可以安装标准集群或自定义集群。对于标准集群,您要提供安装集群所需的最低限度详细信息。对于自定义集群,您可以指定有关平台的更多详细信息,如 control plane 使用的机器数量、集群部署的虚拟机的类型,或 Kubernetes 服务网络的 CIDR 范围。

若有可能,可以使用此功能来避免置备和维护集群基础架构。在所有其他环境中,可以使用安装程序来生成置备集群基础架构所需的资产。

对于安装程序置备的基础架构的集群,OpenShift Container Platform 可以管理集群的所有方面,包括操作系统本身。每台机器在启动时使用的配置引用其加入的集群中托管的资源。此配置允许集群在应用更新时自行管理。

采用用户置备的基础架构的安装过程

您还可以在自己提供的基础架构上安装 OpenShift Container Platform。您可以使用安装程序来生成置备集群基础架构所需的资产,再创建集群基础架构,然后将集群部署到您提供的基础架构中。

如果不使用安装程序置备的基础架构,您必须自己管理和维护集群资源。以下列表详细介绍了其中一些自我管理的资源:

  • 组成集群的 control plane 和计算机器的底层基础架构
  • 负载均衡器
  • 集群网络,包括 DNS 记录和所需的子网
  • 集群基础架构和应用程序的存储

如果您的集群使用用户置备的基础架构,您可以选择将 RHEL 计算机器添加到集群中。

安装过程详细信息

置备集群时,集群中的每台机器都需要有关集群的信息。OpenShift Container Platform 在初始配置过程中使用临时 bootstrap 机器为永久 control plane 提供所需的信息。临时 bootstrap 机器使用一个带有描述如何创建集群的 Ignition 配置文件进行引导。bootstrap 机器创建组成控制平面(control plane)的 control plane 机器。然后,control plane 机器创建计算(compute)机器。下图说明了这一过程:

图 1.2. 创建 bootstrap、control plane 和计算机器

创建 Bootstrap

集群机器初始化后,Bootstrap 机器将被销毁。所有集群都使用 Bootstrap 过程来初始化集群,但若您自己置备集群的基础架构,则必须手动完成许多步骤。

重要
  • 安装程序生成的 Ignition 配置文件包含在 24 小时后过期的证书,然后在过期时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的 node-bootstrapper 证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。
  • 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。

bootstrapp 集群涉及以下步骤:

  1. bootstrap 机器启动并开始托管 control plane 机器引导所需的远程资源。如果您置备基础架构,此步骤需要人工干预。
  2. bootstrap 机器启动单节点 etcd 集群和一个临时 Kubernetes control plane。
  3. control plane 机器从 bootstrap 机器获取远程资源并完成启动。如果您置备基础架构,此步骤需要人工干预。
  4. 临时 control plane 将生产环境的 control plane 调度到生产环境 control plane 机器。
  5. Cluster Version Operator(CVO)在线并安装 etcd Operator。etcd Operator 在所有 control plane 节点上扩展 etcd。
  6. 临时 control plane 关机,并将控制权交给生产环境 control plane。
  7. bootstrap 机器将 OpenShift Container Platform 组件注入生产环境 control plane。
  8. 安装程序关闭 bootstrap 机器。如果您置备基础架构,此步骤需要人工干预。
  9. control plane 设置计算节点。
  10. control plane 以一组 Operator 的形式安装其他服务。

完成此 bootstrap 过程后,将生成一个全面运作的 OpenShift Container Platform 集群。然后,集群会下载并配置日常运作所需的其余组件,包括在受支持的环境中创建计算(compute)机器。

1.1.5. 安装后验证节点状态

当以下安装健康检查成功时,OpenShift Container Platform 安装会完成:

  • 置备程序可以访问 OpenShift Container Platform Web 控制台。
  • 所有 control plane 节点都已就绪。
  • 所有集群 Operator 都可用。
注意

安装完成后,负责 worker 节点的特定集群 Operator 持续尝试置备所有 worker 节点。在所有 worker 节点都报告为 READY 之前需要一段时间。对于在裸机上的安装,请等待至少 60 分钟,然后对 worker 节点进行故障排除。对于所有其他平台上安装,请等待至少 40 分钟后再对 worker 节点进行故障排除。负责 worker 节点的集群 Operator 的 DEGRADED 状态取决于 Operator 自己的资源,而不是节点的状态。

安装完成后,您可以继续监控集群中的节点条件。

先决条件

  • 安装程序在终端中成功解决。

流程

  1. 显示所有 worker 节点的状态:

    $ oc get nodes

    输出示例

    NAME                           STATUS   ROLES    AGE   VERSION
    example-compute1.example.com   Ready    worker   13m   v1.21.6+bb8d50a
    example-compute2.example.com   Ready    worker   13m   v1.21.6+bb8d50a
    example-compute4.example.com   Ready    worker   14m   v1.21.6+bb8d50a
    example-control1.example.com   Ready    master   52m   v1.21.6+bb8d50a
    example-control2.example.com   Ready    master   55m   v1.21.6+bb8d50a
    example-control3.example.com   Ready    master   55m   v1.21.6+bb8d50a

  2. 显示所有 worker 机器节点的阶段:

    $ oc get machines -A

    输出示例

    NAMESPACE               NAME                           PHASE         TYPE   REGION   ZONE   AGE
    openshift-machine-api   example-zbbt6-master-0         Running                              95m
    openshift-machine-api   example-zbbt6-master-1         Running                              95m
    openshift-machine-api   example-zbbt6-master-2         Running                              95m
    openshift-machine-api   example-zbbt6-worker-0-25bhp   Running                              49m
    openshift-machine-api   example-zbbt6-worker-0-8b4c2   Running                              49m
    openshift-machine-api   example-zbbt6-worker-0-jkbqt   Running                              49m
    openshift-machine-api   example-zbbt6-worker-0-qrl5b   Running                              49m

安装范围

OpenShift Container Platform 安装程序的作用范围特意设计得比较狭窄。它旨在简化操作并确保成功。安装完成后,您可以完成更多的配置任务。

其他资源

1.1.6. OpenShift Local 概述

OpenShift Local 支持快速应用程序开发,以开始构建 OpenShift Container Platform 集群。OpenShift Local 设计为在本地计算机上运行,以简化设置和测试,并使用开发基于容器的应用所需的所有工具在本地模拟云环境。

无论您使用什么编程语言,OpenShift Local 都可以托管您的应用程序,并将最小预配置的 Red Hat OpenShift Container Platform 集群引入本地 PC,而无需基于服务器的基础架构。

在托管环境中,OpenShift Local 可以创建微服务,将它们转换为镜像,并在运行 Linux、macOS 或 Windows 10 或更高版本的笔记本电脑或桌面上直接运行它们。

如需有关 OpenShift Local 的更多信息,请参阅 Red Hat OpenShift Local Overview