在 RHV 上安装

OpenShift Container Platform 4.6

安装 OpenShift Container Platform RHV 集群

摘要

本文档提供在 Red Hat Virtualization 上安装和卸载 OpenShift Container Platform 集群的说明。

第 1 章 在 RHV 上安装

1.1. 在 {rh-virtualization} 上快速安装集群

您可以快速地在 Red Hat Virtualization(RHV)集群中安装默认、非自定义的 OpenShift Container Platform 集群,如下图所示。

RHV 集群上的 OpenShift Container Platform 集群图

安装程序使用安装程序置备的基础架构自动创建和部署集群。

要安装默认集群,请准备环境,运行安装程序并根据提示提供相应信息。然后,安装程序会创建 OpenShift Container Platform 集群。

有关安装默认集群的其他方法,请参阅 使用自定义安装集群

注意

这个安装程序只适用于 Linux 和 macOS。

1.1.1. 先决条件

1.1.2. OpenShift Container Platform 的互联网访问

在 OpenShift Container Platform 4.6 中,您需要访问互联网来安装集群。

您必须具有以下互联网访问权限:

  • 访问 OpenShift Cluster Manager 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
  • 访问 Quay.io,以获取安装集群所需的软件包。
  • 获取执行集群更新所需的软件包。
重要

如果您的集群无法直接访问互联网,则可以在置备的某些类基础架构上执行受限网络安装。在此过程中,您要下载所需的内容,并使用它在镜像 registry(mirror registry) 中填充安装集群并生成安装程序所需的软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群之前,要更新 registry 镜像系统中的内容。

1.1.3. RHV 环境的要求

要安装并运行 OpenShift Container Platform 集群,RHV 环境必须满足以下要求。

不满足这些要求会导致安装或进程失败。另外,无法满足这些要求可能会导致 OpenShift Container Platform 集群在安装后几天或几星期后失败。

对 CPU、内存和存储资源的以下要求是基于默认值乘以安装程序创建的默认虚拟机数。除了 RHV 环境用于非 OpenShift Container Platform 操作的资源外,这些资源还必须可用

默认情况下,安装程序会在安装过程中创建七台虚拟机。首先,它会创建一个 bootstrap 虚拟机来提供临时服务和 control plane,同时创建 OpenShift Container Platform 集群的其余部分。当安装程序完成集群创建时,删除 bootstrap 机器可释放其资源。

如果在 RHV 环境中增加虚拟机数量,则需要相应地增加资源。

要求

  • RHV 环境有一个数据中心,其状态是 Up
  • RHV 数据中心包含一个 RHV 集群。
  • RHV 集群具有专门用于 OpenShift Container Platform 集群的以下资源:

    • 最小 28 个 vCPU:在安装过程中创建的七个虚拟机,每个都需要 4 个。
    • 112 GiB RAM 或更多,包括:

      • 16 GiB 或更多用于提供临时 control plane 功能的 bootstrap 机器。
      • 每个提供 control plane 功能的三台 control plane 机器都需要16 GiB 或更多。
      • 每个用来运行应用程序负载的 compute 机器都需要 16 GiB 或更多。
  • RHV 存储域必须满足 etcd 后端性能要求
  • 在生产环境中,每个虚拟机必须具有 120 GiB 或更多存储。因此,存储域必须为默认的 OpenShift Container Platform 集群提供 840 GiB 或更多存储。在资源有限制或非生产环境中,每个虚拟机必须具有 32 GiB 或更多存储,因此对于默认的 OpenShift Container Platform 集群,存储域必须具有 230 GiB 或更多存储 。
  • 要在安装和更新过程中从红帽生态系统目录下载镜像,RHV 集群必须可以访问互联网。Telemetry 服务还需要互联网连接来简化订阅和权利的过程。
  • RHV 集群需要有一个虚拟网络,可访问 RHV Manager 上的 REST API。确保在这个网络中启用了 DHCP,因为安装程序创建的虚拟机会使用 DHCP 来获取他们的 IP 地址。
  • 具有以下最少权限的用户帐户和组,用于在目标 RHV 集群上安装和管理 OpenShift Container Platform 集群:

    • DiskOperator
    • DiskCreator
    • UserTemplateBasedVm
    • TemplateOwner
    • TemplateCreator
    • 目标集群的ClusterAdmin
警告

使用最少权限:在安装过程中,避免使用带有 RHV SuperUser 权限的管理员帐户。安装程序会将您提供的凭据保存到一个临时的 ovirt-config.yaml 文件中,这个凭证有被受到破坏的可能。

1.1.4. 验证 RHV 环境的要求

验证 RHV 环境是否满足安装和运行 OpenShift Container Platform 集群的要求。不满足这些要求会导致问题。

重要

这些要求基于安装程序用来创建 control plane 和计算机器的默认资源。这些资源包括 vCPU、内存和存储。如果更改这些资源或增加 OpenShift Container Platform 机器的数量,请相应调整这些要求。

流程

  1. 检查 RHV 版本。

    1. 在 RHV 管理门户中,点右上角的 ? 帮助图表,选 About
    2. 在打开的窗口中,记录下 RHV 软件版本
    3. 确认 OpenShift Container Platform 版本 4.6 和您记录的 RHV 版本组合是被支持的。 RHV 上支持的 OpenShift Container Platform
  2. 检查数据中心、集群和存储。

    1. 在 RHV 管理门户中,点 ComputeData Centers
    2. 确认可以访问您要安装 OpenShift Container Platform 的数据中心。
    3. 点击该数据中心的名称。
    4. 在数据中心详情中,存储 标签中确认您要安装 OpenShift Container Platform 的存储域是 Active
    5. 记录下域名以供以后使用。
    6. 确认 Free Space 至少为 230 GiB。
    7. 确认存储域满足 etcd 后端性能要求可以使用 fio 性能基准工具来评测
    8. 在数据中心详情中点击 Clusters 选项卡。
    9. 找到您要安装 OpenShift Container Platform 的 RHV 集群。记录集群名称,以供稍后使用。
  3. 检查 RHV 主机资源。

    1. 在 RHV 管理门户中,点 Compute > Clusters
    2. 点击要安装 OpenShift Container Platform 的集群。
    3. 在集群详情中点击 Hosts 标签页。
    4. 检查主机,确认这些主机有至少 28 个 逻辑 CPU 内核专门 用于 OpenShift Container Platform 集群。
    5. 记录逻辑 CPU 内核数以供稍后使用。
    6. 请确认这些 CPU 内核被正确分配,在安装过程中创建的七台虚拟机中的每一台都可以有四个内核。
    7. 确认主机总共有 112 GiB 的Max free Memory for scheduling new virtual machines,以满足以下每个 OpenShift Container Platform 机器的要求:

      • bootstrap 机器需要 16 GiB
      • 三个 control plane 机器每个机器都需要 16 GiB
      • 三个计算机器每个机器都需要 16 GiB
    8. 记录下 Max free Memory for scheduling new virtual machine 的值以便稍后使用。
  4. 验证安装 OpenShift Container Platform 的虚拟网络能否访问 RHV Manager 的 REST API。在这个网络的虚拟机上,使用 curl 来访问 RHV Manager 的 REST API:

    $ curl -k -u <username>@<profile>:<password> \ 1
    https://<engine-fqdn>/ovirt-engine/api 2
    1
    对于 <username>,指定具有在 RHV 上创建和管理 OpenShift Container Platform 集群的 RHV 帐户的用户名。对于 <profile>,请指定登录配置集,您可以登陆到 RHV 管理门户查看 Profile 下拉列表。对于 <password>,指定该用户的密码。
    2
    对于 <engine-fqdn>,请指定 RHV 环境的完全限定域名。

    例如:

    $ curl -k -u ocpadmin@internal:pw123 \
    https://rhv-env.virtlab.example.com/ovirt-engine/api

1.1.5. 在 RHV 中准备网络环境

为 OpenShift Container Platform 集群配置两个静态 IP 地址,并使用这些地址创建 DNS 条目。

流程

  1. 保留两个静态 IP 地址

    1. 在您要安装 OpenShift Container Platform 的网络上,标识 DHCP 租期池之外的两个静态 IP 地址。
    2. 连接到此网络中的主机,并确认每个 IP 地址都没有被使用。例如,使用地址解析协议(ARP)检查 IP 地址是否有条目:

      $ arp 10.35.1.19

      输出示例

      10.35.1.19 (10.35.1.19) -- no entry

    3. 为您的网络环境保留两个静态 IP 地址。
    4. 记录这些 IP 地址以备将来参考。
  2. 为 OpenShift Container Platform REST API 创建 DNS 条目,并使用以下格式应用域名:

    api.<cluster-name>.<base-domain>   <ip-address> 1
    *.apps.<cluster-name>.<base-domain>   <ip-address> 2
    1
    对于 <cluster-name><base-domain><ip-address>,请指定 OpenShift Container Platform API 的集群名称、基域和静态 IP 地址。
    2
    指定 Ingress 和负载均衡器的 OpenShift Container Platform 应用程序的集群名称、基域和静态 IP 地址。

    例如:

    api.my-cluster.virtlab.example.com	10.35.1.19
    *.apps.my-cluster.virtlab.example.com	10.35.1.20

1.1.6. 为 RHV 设置 CA 证书

从 Red Hat Virtualization (RHV) Manager 下载 CA 证书,并在安装机器中进行设置。

您可以使用 RHV Manager 的网页或使用 curl 命令下载该证书。

之后,您向安装程序提供证书。

流程

  1. 使用这两个方法之一下载 CA 证书:

    • 进入 Manager 的网页 https://<engine-fqdn>/ovirt-engine/。然后在 下载 中点击 CA 证书 链接。
    • 运行以下命令:

      $ curl -k 'https://<engine-fqdn>/ovirt-engine/services/pki-resource?resource=ca-certificate&format=X509-PEM-CA' -o /tmp/ca.pem  1
      1
      对于 <engine-fqdn>,请指定 RHV Manager 的全限定域名,如 rhv-env.virtlab.example.com
  2. 配置 CA 文件,为 Manager 授予无根用户访问权限。将 CA 文件权限设置为 0644 (symbolic 值: -rw-r—​r--):

    $ sudo chmod 0644 /tmp/ca.pem
  3. 对于 Linux,将 CA 证书复制到服务器证书目录中。使用 -p 保留权限:

    $ sudo cp -p /tmp/ca.pem /etc/pki/ca-trust/source/anchors/ca.pem
  4. 将证书添加到您操作系统的证书管理器:

    • 对于 macOS,请双击这个证书文件,并使用 Keychain Access 程序将该文件添加到 System 密钥链中。
    • 对于 Linux,更新 CA 信任:

      $ sudo update-ca-trust
      注意

      如果使用您自己的证书认证机构,请确定系统信任它。

其他资源

1.1.7. 生成 SSH 私钥并将其添加到代理中

如果要在集群上执行安装调试或灾难恢复,则必须为 ssh-agent 和安装程序提供 SSH 密钥。您可以使用此密钥访问公共集群中的 bootstrap 机器来排除安装问题。

注意

在生产环境中,您需要进行灾难恢复和调试。

您可以使用此密钥以 core 用户身份通过 SSH 连接到 master 节点。在部署集群时,此密钥会添加到 core 用户的 ~/.ssh/authorized_keys 列表中。

流程

  1. 如果还没有为计算机上免密码身份验证而配置的 SSH 密钥,请创建一个。例如,在使用 Linux 操作系统的计算机上运行以下命令:

    $ ssh-keygen -t ed25519 -N '' \
        -f <path>/<file_name> 1
    1
    指定新 SSH 密钥的路径和文件名,如 ~/.ssh/id_rsa。如果您已有密钥对,请确保您的公钥位于 ~/.ssh 目录中。

    运行此命令会在指定的位置生成不需要密码的 SSH 密钥。

    注意

    如果您计划在 x86_64 架构中安装使用 FIPS 验证的/Modules in Process 加密库的 OpenShift Container Platform 集群,不要创建使用 ed25519 算法的密钥。反之,创建一个使用 rsaecdsa 算法的密钥。

  2. 作为后台任务启动 ssh-agent 进程:

    $ eval "$(ssh-agent -s)"

    输出示例

    Agent pid 31874

    注意

    如果您的集群采用 FIPS 模式,则只使用 FIPS 兼容算法来生成 SSH 密钥。密钥必须是 RSA 或 ECDSA。

  3. 将 SSH 私钥添加到 ssh-agent

    $ ssh-add <path>/<file_name> 1

    输出示例

    Identity added: /home/<you>/<path>/<file_name> (<computer_name>)

    1
    指定 SSH 私钥的路径和文件名,如 ~/.ssh/id_rsa

后续步骤

  • 在安装 OpenShift Container Platform 时,为安装程序提供 SSH 公钥。

1.1.8. 获取安装程序

在安装 OpenShift Container Platform 之前,将安装文件下载到本地计算机上。

先决条件

  • 运行 Linux 或 macOS 的计算机,本地磁盘空间为 500 MB

流程

  1. 访问 OpenShift Cluster Manager 站点的 Infrastructure Provider 页面。如果您有红帽帐号,请使用自己的凭证登录。如果没有,请创建一个帐户。
  2. 选择您的基础架构供应商。
  3. 进入适用于您的安装类型的页面,下载您的操作系统的安装程序,并将文件放在要保存安装配置文件的目录中。。

    重要

    安装程序会在用来安装集群的计算机上创建若干文件。在完成集群安装后,您必须保留安装程序和安装程序所创建的文件。这两个文件都需要删除集群。

    重要

    删除安装程序创建的文件不会删除您的集群,即使集群在安装过程中失败也是如此。要删除集群,为特定云供应商完成 OpenShift Container Platform 卸载流程。

  4. 提取安装程序。例如,在使用 Linux 操作系统的计算机上运行以下命令:

    $ tar xvf openshift-install-linux.tar.gz
  5. 从 Red Hat OpenShift Cluster Manager 下载安装 pull secret。通过此 pull secret,您可以进行所含授权机构提供的服务的身份验证,这些服务包括为 OpenShift Container Platform 组件提供容器镜像的 Quay.io。

1.1.9. 部署集群

您可以在兼容云平台中安装 OpenShift Container Platform。

重要

安装程序的 create cluster 命令只能在初始安装过程中运行一次。

先决条件

  • 从运行安装程序的机器中打开到 Manager 的 ovirt-imageio 端口。默认情况下,端口为 54322
  • 获取 OpenShift Container Platform 安装程序以及集群的 pull secret。

流程

  1. 更改为包含安装程序的目录并初始化集群部署:

    $ ./openshift-install create cluster --dir <installation_directory> \ 1
        --log-level=info 2
    1
    对于 <installation_directory>,请指定用于保存安装程序所创建的文件的目录名称。
    2
    要查看不同的安装详情,请指定 warndebugerror,而不要指定 info
    重要

    指定一个空目录。一些安装信息,如 bootstrap X.509 证书,有较短的过期间隔,因此不要重复使用安装目录。如果要重复使用另一个集群安装中的个别文件,可以将其复制到您的目录中。但是,一些安装数据的文件名可能会在发行版本之间有所改变。从 OpenShift Container Platform 老版本中复制安装文件时要格外小心。

    根据安装程序提示输入相关的值。

    1. 可选: SSH Public Key,请选择无密码公钥,如 ~/.ssh/id_rsa.pub。这个密钥被用来验证与新的 OpenShift Container Platform 集群的连接。

      注意

      如果您要在生产环境中执行安装调试或灾难恢复,请指定 ssh-agent 进程需要使用的 SSH 密钥。

    2. 对于 Platform,选择 ovirt
    3. 对于 Engine FQDN[:PORT],请输入 RHV 环境的完全限定域名(FQDN)。

      例如:

      rhv-env.virtlab.example.com:443
    4. 安装程序会自动生成 CA 证书。对于 Would you like to use the above certificate to connect to the Manager?,输入 yN。如果回答 N,则必须在不安全的模式安装 OpenShift Container Platform。
    5. 对于 Engine username,请使用以下格式输入 RHV 管理员的用户名和配置集:

      <username>@<profile> 1
      1
      对于 <username>,请指定 RHV 管理员的用户名。对于 <profile>,请指定登录配置集,您可以登陆到 RHV 管理门户查看 Profile 下拉列表。例如: admin@internal
    6. 对于 Engine 密码,请输入 RHV 管理密码。
    7. 对于 Cluster,请选择用于安装 OpenShift Container Platform 的 RHV 集群。
    8. 对于 Storage domain,请选择安装 OpenShift Container Platform 的存储域。
    9. 对于 Network,选择可访问 RHV Manager REST API 的虚拟网络。
    10. 对于 Internal API Virtual IP,请为集群的 REST API 输入您设置的静态 IP 地址。
    11. 对于 Ingress virtual IP,请为通配符应用程序域输入您保留的静态 IP 地址。
    12. 对于 Base Domain,请输入 OpenShift Container Platform 集群的基域。如果这个群集暴露于外部世界,这必须是 DNS 基础结构可识别的有效域。例如: 输入 virtlab.example.com
    13. 对于 Cluster Name,请输入集群名称。例如: my-cluster。使用您为 OpenShift Container Platform REST API 创建的外部注册/可解析 DNS 条目的集群名称,以及应用域名。安装程序也将此名称提供给 RHV 环境中的集群。
    14. 对于 Pull Secret,请从之前下载并粘贴的 pull-secret.txt 文件中复制 pull secret。您还可以从 Red Hat OpenShift Cluster Manager 获取同一 pull secret 的副本。
    注意

    如果您在主机上配置的云供应商帐户没有足够的权限来部署集群,安装过程将会停止,并且显示缺少的权限。

    集群部署完成后,终端会显示访问集群的信息,包括指向其 Web 控制台的链接和 kubeadmin 用户的凭证。

    输出示例

    ...
    INFO Install complete!
    INFO To access the cluster as the system:admin user when using 'oc', run 'export KUBECONFIG=/home/myuser/install_dir/auth/kubeconfig'
    INFO Access the OpenShift web-console here: https://console-openshift-console.apps.mycluster.example.com
    INFO Login to the console with user: "kubeadmin", and password: "4vYBz-Ee6gm-ymBZj-Wt5AL"
    INFO Time elapsed: 36m22s

    注意

    当安装成功时,集群访问和凭证信息还会输出到 <installation_directory>/.openshift_install.log

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

    您不得删除安装程序或安装程序所创建的文件。需要这两者才能删除集群。

重要

您已完成了安装集群所需的步骤。余下的步骤演示了如何验证集群并对安装进行故障排除。

1.1.10. 通过下载二进制文件安装 OpenShift CLI

您需要安装 CLI(oc) 来使用命令行界面与 OpenShift Container Platform 进行交互。您可在 Linux 、Windows 或 macOS 上安装 oc

重要

如果安装了旧版本的 oc,则无法使用 OpenShift Container Platform 4.6 中的所有命令。下载并安装新版本的 oc

1.1.10.1. 在 Linux 上安装 OpenShift CLI

您可以按照以下流程在 Linux 上安装 OpenShift CLI(oc)二进制文件。

流程

  1. 进入到红帽客户门户网站上的 OpenShift Container Platform 下载页面
  2. Version 下拉菜单中选择相应的版本。
  3. 单击 OpenShift v4.6 Linux 客户端 条目旁边的 Download Now,再保存文件。
  4. 解包存档:

    $ tar xvzf <file>
  5. oc 二进制代码放到 PATH 中的目录中。

    执行以下命令可以查看当前的 PATH 设置:

    $ echo $PATH

安装 OpenShift CLI 后,可以使用 oc 命令:

$ oc <command>

1.1.10.2. 在 Windows 上安装 OpenShift CLI

您可以按照以下流程在 Windows 上安装 OpenShift CLI(oc)二进制代码。

流程

  1. 进入到红帽客户门户网站上的 OpenShift Container Platform 下载页面
  2. Version 下拉菜单中选择相应的版本。
  3. 单击 OpenShift v4.6 Windows 客户端条目旁边的 Download Now,再保存文件。
  4. 使用 ZIP 程序解压存档。
  5. oc 二进制代码放到 PATH 中的目录中。

    要查看您的 PATH,请打开命令提示窗口并执行以下命令:

    C:\> path

安装 OpenShift CLI 后,可以使用 oc 命令:

C:\> oc <command>

1.1.10.3. 在 macOS 上安装 OpenShift CLI

您可以按照以下流程在 macOS 上安装 OpenShift CLI(oc)二进制代码。

流程

  1. 进入到红帽客户门户网站上的 OpenShift Container Platform 下载页面
  2. Version 下拉菜单中选择相应的版本。
  3. 单击 OpenShift v4.6 MacOSX 客户端条目旁边的 Download Now,再保存文件。
  4. 解包和解压存档。
  5. oc 二进制文件移到 PATH 的目录中。

    要查看您的 PATH,打开一个终端窗口并执行以下命令:

    $ echo $PATH

安装 OpenShift CLI 后,可以使用 oc 命令:

$ oc <command>

如需更多信息,请参阅 OpenShift CLI 入门

1.1.11. 使用 CLI 登录到集群

您可以通过导出集群 kubeconfig 文件,以默认系统用户身份登录集群。kubeconfig 文件包含关于集群的信息,供 CLI 用于将客户端连接到正确集群和 API 服务器。该文件特只适用于一个特定的集群,在 OpenShift Container Platform 安装过程中创建。

先决条件

  • 已部署了 OpenShift Container Platform 集群。
  • 已安装 oc CLI。

流程

  1. 导出 kubeadmin 凭证:

    $ export KUBECONFIG=<installation_directory>/auth/kubeconfig 1
    1
    对于 <installation_directory>,请指定安装文件保存到的目录的路径。
  2. 使用导出的配置,验证能否成功运行 oc 命令:

    $ oc whoami

    输出示例

    system:admin

其他资源

  • 如需有关访问和了解 OpenShift Container Platform Web 控制台的更多信息,请参阅访问 Web 控制台

1.1.12. 验证集群状态

您可以在安装过程中或安装后验证 OpenShift Container Platform 集群的状态:

流程

  1. 在集群环境中,导出管理员的 kubeconfig 文件:

    $ export KUBECONFIG=<installation_directory>/auth/kubeconfig 1
    1
    对于 <installation_directory>,请指定安装文件保存到的目录的路径。

    kubeconfig 文件包含关于集群的信息,供 CLI 用于将客户端连接到正确集群和 API 服务器。

  2. 查看部署后创建的 control plane 和计算机器:

    $ oc get nodes
  3. 查看集群的版本:

    $ oc get clusterversion
  4. 查看 Operator 的状态:

    $ oc get clusteroperator
  5. 查看集群中的所有正在运行的 pod:

    $ oc get pods -A

故障排除

如果安装失败,安装程序会超时并显示出错信息。如需了解更多相关信息,请参阅故障排除安装问题

1.1.13. 访问 RHV 上的 OpenShift Container Platform Web 控制台。

在 OpenShift Container Platform 集群初始化后,您可以登录到 OpenShift Container Platform Web 控制台。

流程

  1. 可选: 在 Red Hat Virtualization (RHV) 管理门户中,打开 ComputeCluster
  2. 验证安装程序是否创建了虚拟机。
  3. 返回到安装程序正在运行的命令行。当安装程序完成后,它会显示登录到 OpenShift Container Platform Web 控制台的用户名和临时密码。
  4. 在浏览器中,打开 OpenShift Container Platform web 控制台的 URL。URL 使用以下格式:

    console-openshift-console.apps.<clustername>.<basedomain> 1
    1
    对于 <clustername>.<baseDomain>,请指定集群名称和基域。

    例如:

    console-openshift-console.apps.my-cluster.virtlab.example.com

1.1.14. OpenShift Container Platform 的 Telemetry 访问

在 OpenShift Container Platform 4.6 中,默认运行的 Telemetry 服务提供有关集群健康状况和成功更新的指标,需要访问互联网。如果您的集群连接到互联网,Telemetry 会自动运行,而且集群会注册到 OpenShift Cluster Manager

确认 OpenShift Cluster Manager 清单正确后,可以由 Telemetry 自动维护,也可以使用 OpenShift Cluster Manager 手动维护,使用订阅监控来跟踪帐户或多集群级别的 OpenShift Container Platform 订阅。

其他资源

1.1.15. 在 Red Hat Virtualization (RHV) 上安装时的常见问题

以下是您可能会遇到的一些常见问题,以及推荐的原因和解决方案。

1.1.15.1. CPU 负载增加和节点进入非就绪状态

  • 症状: CPU 负载显著增加,节点开始处于 Not Ready 状态。
  • 原因: 存储域延迟可能太大,特别是针对 control plane 节点(也称为 master 节点)。
  • 解决方案:

    通过重启 kubelet 服务使节点再次就绪:

    $ systemctl restart kubelet

    检查 OpenShift Container Platform 指标服务,该服务可自动收集并报告一些重要数据,如 etcd 磁盘同步持续时间。如果集群是可操作的,使用这个数据来帮助确定这个问题是否是因为存储延迟或吞吐量造成的。如果是这样,请考虑使用一个较低延迟和更高吞吐量的存储资源。

    要获得原始指标,请以 kubeadmin 或具有 cluster-admin 特权的用户身份输入以下命令:

    $ oc get --insecure-skip-tls-verify --server=https://localhost:<port> --raw=/metrics

    如需了解更多相关信息,请参阅 使用 OpenShift 4.x 调试应用程序端点

1.1.15.2. 连接到 OpenShift Container Platform 集群 API 存在问题

  • 症状: 安装程序完成,但无法使用 OpenShift Container Platform 集群 API。在 bootstrap 过程完成后,bootstrap 虚拟机仍处于在线状态。当您输入以下命令时,回复会超时。

    $ oc login -u kubeadmin -p *** <apiurl>
  • 原因: 安装程序没有删除 bootstrap VM,因此没有释放集群的 API IP 地址。
  • 解决方法:使用 wait-for 子命令,在 bootstrap 过程完成后获得通知:

    $ ./openshift-install wait-for bootstrap-complete

    当 bootstrap 过程完成后,删除 bootstrap 虚拟机:

    $ ./openshift-install destroy bootstrap

1.1.16. 安装后的任务

在 OpenShift Container Platform 集群初始化后,您可以执行以下任务。

  • 可选: 在部署后,使用 OpenShift Container Platform 中的 Machine Config Operator (MCO) 添加或替换 SSH 密钥。
  • 可选:删除 kubeadmin 用户。使用身份验证提供程序创建具有 cluster-admin 权限的用户。

1.2. 使用自定义在 RHV 上安装集群

您可以在 Red Hat Virtualization(RHV)上自定义并安装 OpenShift Container Platform 集群,如下图所示类似。

RHV 集群上的 OpenShift Container Platform 集群图

安装程序使用安装程序置备的基础架构自动创建和部署集群。

要安装自定义集群,请准备环境并执行以下步骤:

  1. 通过运行安装程序并根据提示提供信息来创建安装配置文件 install-config.yaml
  2. 检查并修改 install-config.yaml 文件中的参数。
  3. 生成 install-config.yaml 文件的一个工作副本。
  4. 在运行安装程序时,使用 install-config.yaml 文件的副本。

然后,安装程序会创建 OpenShift Container Platform 集群。

有关安装自定义集群的其他方法,请参阅安装默认集群

注意

这个安装程序只适用于 Linux 和 macOS。

1.2.1. 先决条件

1.2.2. OpenShift Container Platform 的互联网访问

在 OpenShift Container Platform 4.6 中,您需要访问互联网来安装集群。

您必须具有以下互联网访问权限:

  • 访问 OpenShift Cluster Manager 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
  • 访问 Quay.io,以获取安装集群所需的软件包。
  • 获取执行集群更新所需的软件包。
重要

如果您的集群无法直接访问互联网,则可以在置备的某些类基础架构上执行受限网络安装。在此过程中,您要下载所需的内容,并使用它在镜像 registry(mirror registry) 中填充安装集群并生成安装程序所需的软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群之前,要更新 registry 镜像系统中的内容。

1.2.3. RHV 环境的要求

要安装并运行 OpenShift Container Platform 集群,RHV 环境必须满足以下要求。

不满足这些要求会导致安装或进程失败。另外,无法满足这些要求可能会导致 OpenShift Container Platform 集群在安装后几天或几星期后失败。

对 CPU、内存和存储资源的以下要求是基于默认值乘以安装程序创建的默认虚拟机数。除了 RHV 环境用于非 OpenShift Container Platform 操作的资源外,这些资源还必须可用

默认情况下,安装程序会在安装过程中创建七台虚拟机。首先,它会创建一个 bootstrap 虚拟机来提供临时服务和 control plane,同时创建 OpenShift Container Platform 集群的其余部分。当安装程序完成集群创建时,删除 bootstrap 机器可释放其资源。

如果在 RHV 环境中增加虚拟机数量,则需要相应地增加资源。

要求

  • RHV 环境有一个数据中心,其状态是 Up
  • RHV 数据中心包含一个 RHV 集群。
  • RHV 集群具有专门用于 OpenShift Container Platform 集群的以下资源:

    • 最小 28 个 vCPU:在安装过程中创建的七个虚拟机,每个都需要 4 个。
    • 112 GiB RAM 或更多,包括:

      • 16 GiB 或更多用于提供临时 control plane 功能的 bootstrap 机器。
      • 每个提供 control plane 功能的三台 control plane 机器都需要16 GiB 或更多。
      • 每个用来运行应用程序负载的 compute 机器都需要 16 GiB 或更多。
  • RHV 存储域必须满足 etcd 后端性能要求
  • 在生产环境中,每个虚拟机必须具有 120 GiB 或更多存储。因此,存储域必须为默认的 OpenShift Container Platform 集群提供 840 GiB 或更多存储。在资源有限制或非生产环境中,每个虚拟机必须具有 32 GiB 或更多存储,因此对于默认的 OpenShift Container Platform 集群,存储域必须具有 230 GiB 或更多存储 。
  • 要在安装和更新过程中从红帽生态系统目录下载镜像,RHV 集群必须可以访问互联网。Telemetry 服务还需要互联网连接来简化订阅和权利的过程。
  • RHV 集群需要有一个虚拟网络,可访问 RHV Manager 上的 REST API。确保在这个网络中启用了 DHCP,因为安装程序创建的虚拟机会使用 DHCP 来获取他们的 IP 地址。
  • 具有以下最少权限的用户帐户和组,用于在目标 RHV 集群上安装和管理 OpenShift Container Platform 集群:

    • DiskOperator
    • DiskCreator
    • UserTemplateBasedVm
    • TemplateOwner
    • TemplateCreator
    • 目标集群的ClusterAdmin
警告

使用最少权限:在安装过程中,避免使用带有 RHV SuperUser 权限的管理员帐户。安装程序会将您提供的凭据保存到一个临时的 ovirt-config.yaml 文件中,这个凭证有被受到破坏的可能。

1.2.4. 验证 RHV 环境的要求

验证 RHV 环境是否满足安装和运行 OpenShift Container Platform 集群的要求。不满足这些要求会导致问题。

重要

这些要求基于安装程序用来创建 control plane 和计算机器的默认资源。这些资源包括 vCPU、内存和存储。如果更改这些资源或增加 OpenShift Container Platform 机器的数量,请相应调整这些要求。

流程

  1. 检查 RHV 版本。

    1. 在 RHV 管理门户中,点右上角的 ? 帮助图表,选 About
    2. 在打开的窗口中,记录下 RHV 软件版本
    3. 确认 OpenShift Container Platform 版本 4.6 和您记录的 RHV 版本组合是被支持的。 RHV 上支持的 OpenShift Container Platform
  2. 检查数据中心、集群和存储。

    1. 在 RHV 管理门户中,点 ComputeData Centers
    2. 确认可以访问您要安装 OpenShift Container Platform 的数据中心。
    3. 点击该数据中心的名称。
    4. 在数据中心详情中,存储 标签中确认您要安装 OpenShift Container Platform 的存储域是 Active
    5. 记录下域名以供以后使用。
    6. 确认 Free Space 至少为 230 GiB。
    7. 确认存储域满足 etcd 后端性能要求可以使用 fio 性能基准工具来评测
    8. 在数据中心详情中点击 Clusters 选项卡。
    9. 找到您要安装 OpenShift Container Platform 的 RHV 集群。记录集群名称,以供稍后使用。
  3. 检查 RHV 主机资源。

    1. 在 RHV 管理门户中,点 Compute > Clusters
    2. 点击要安装 OpenShift Container Platform 的集群。
    3. 在集群详情中点击 Hosts 标签页。
    4. 检查主机,确认这些主机有至少 28 个 逻辑 CPU 内核专门 用于 OpenShift Container Platform 集群。
    5. 记录逻辑 CPU 内核数以供稍后使用。
    6. 请确认这些 CPU 内核被正确分配,在安装过程中创建的七台虚拟机中的每一台都可以有四个内核。
    7. 确认主机总共有 112 GiB 的Max free Memory for scheduling new virtual machines,以满足以下每个 OpenShift Container Platform 机器的要求:

      • bootstrap 机器需要 16 GiB
      • 三个 control plane 机器每个机器都需要 16 GiB
      • 三个计算机器每个机器都需要 16 GiB
    8. 记录下 Max free Memory for scheduling new virtual machine 的值以便稍后使用。
  4. 验证安装 OpenShift Container Platform 的虚拟网络能否访问 RHV Manager 的 REST API。在这个网络的虚拟机上,使用 curl 来访问 RHV Manager 的 REST API:

    $ curl -k -u <username>@<profile>:<password> \ 1
    https://<engine-fqdn>/ovirt-engine/api 2
    1
    对于 <username>,指定具有在 RHV 上创建和管理 OpenShift Container Platform 集群的 RHV 帐户的用户名。对于 <profile>,请指定登录配置集,您可以登陆到 RHV 管理门户查看 Profile 下拉列表。对于 <password>,指定该用户的密码。
    2
    对于 <engine-fqdn>,请指定 RHV 环境的完全限定域名。

    例如:

    $ curl -k -u ocpadmin@internal:pw123 \
    https://rhv-env.virtlab.example.com/ovirt-engine/api

1.2.5. 在 RHV 中准备网络环境

为 OpenShift Container Platform 集群配置两个静态 IP 地址,并使用这些地址创建 DNS 条目。

流程

  1. 保留两个静态 IP 地址

    1. 在您要安装 OpenShift Container Platform 的网络上,标识 DHCP 租期池之外的两个静态 IP 地址。
    2. 连接到此网络中的主机,并确认每个 IP 地址都没有被使用。例如,使用地址解析协议(ARP)检查 IP 地址是否有条目:

      $ arp 10.35.1.19

      输出示例

      10.35.1.19 (10.35.1.19) -- no entry

    3. 为您的网络环境保留两个静态 IP 地址。
    4. 记录这些 IP 地址以备将来参考。
  2. 为 OpenShift Container Platform REST API 创建 DNS 条目,并使用以下格式应用域名:

    api.<cluster-name>.<base-domain>   <ip-address> 1
    *.apps.<cluster-name>.<base-domain>   <ip-address> 2
    1
    对于 <cluster-name><base-domain><ip-address>,请指定 OpenShift Container Platform API 的集群名称、基域和静态 IP 地址。
    2
    指定 Ingress 和负载均衡器的 OpenShift Container Platform 应用程序的集群名称、基域和静态 IP 地址。

    例如:

    api.my-cluster.virtlab.example.com	10.35.1.19
    *.apps.my-cluster.virtlab.example.com	10.35.1.20

1.2.6. 为 RHV 设置 CA 证书

从 Red Hat Virtualization (RHV) Manager 下载 CA 证书,并在安装机器中进行设置。

您可以使用 RHV Manager 的网页或使用 curl 命令下载该证书。

之后,您向安装程序提供证书。

流程

  1. 使用这两个方法之一下载 CA 证书:

    • 进入 Manager 的网页 https://<engine-fqdn>/ovirt-engine/。然后在 下载 中点击 CA 证书 链接。
    • 运行以下命令:

      $ curl -k 'https://<engine-fqdn>/ovirt-engine/services/pki-resource?resource=ca-certificate&format=X509-PEM-CA' -o /tmp/ca.pem  1
      1
      对于 <engine-fqdn>,请指定 RHV Manager 的全限定域名,如 rhv-env.virtlab.example.com
  2. 配置 CA 文件,为 Manager 授予无根用户访问权限。将 CA 文件权限设置为 0644 (symbolic 值: -rw-r—​r--):

    $ sudo chmod 0644 /tmp/ca.pem
  3. 对于 Linux,将 CA 证书复制到服务器证书目录中。使用 -p 保留权限:

    $ sudo cp -p /tmp/ca.pem /etc/pki/ca-trust/source/anchors/ca.pem
  4. 将证书添加到您操作系统的证书管理器:

    • 对于 macOS,请双击这个证书文件,并使用 Keychain Access 程序将该文件添加到 System 密钥链中。
    • 对于 Linux,更新 CA 信任:

      $ sudo update-ca-trust
      注意

      如果使用您自己的证书认证机构,请确定系统信任它。

其他资源

1.2.7. 生成 SSH 私钥并将其添加到代理中

如果要在集群上执行安装调试或灾难恢复,则必须为 ssh-agent 和安装程序提供 SSH 密钥。您可以使用此密钥访问公共集群中的 bootstrap 机器来排除安装问题。

注意

在生产环境中,您需要进行灾难恢复和调试。

您可以使用此密钥以 core 用户身份通过 SSH 连接到 master 节点。在部署集群时,此密钥会添加到 core 用户的 ~/.ssh/authorized_keys 列表中。

流程

  1. 如果还没有为计算机上免密码身份验证而配置的 SSH 密钥,请创建一个。例如,在使用 Linux 操作系统的计算机上运行以下命令:

    $ ssh-keygen -t ed25519 -N '' \
        -f <path>/<file_name> 1
    1
    指定新 SSH 密钥的路径和文件名,如 ~/.ssh/id_rsa。如果您已有密钥对,请确保您的公钥位于 ~/.ssh 目录中。

    运行此命令会在指定的位置生成不需要密码的 SSH 密钥。

    注意

    如果您计划在 x86_64 架构中安装使用 FIPS 验证的/Modules in Process 加密库的 OpenShift Container Platform 集群,不要创建使用 ed25519 算法的密钥。反之,创建一个使用 rsaecdsa 算法的密钥。

  2. 作为后台任务启动 ssh-agent 进程:

    $ eval "$(ssh-agent -s)"

    输出示例

    Agent pid 31874

    注意

    如果您的集群采用 FIPS 模式,则只使用 FIPS 兼容算法来生成 SSH 密钥。密钥必须是 RSA 或 ECDSA。

  3. 将 SSH 私钥添加到 ssh-agent

    $ ssh-add <path>/<file_name> 1

    输出示例

    Identity added: /home/<you>/<path>/<file_name> (<computer_name>)

    1
    指定 SSH 私钥的路径和文件名,如 ~/.ssh/id_rsa

后续步骤

  • 在安装 OpenShift Container Platform 时,为安装程序提供 SSH 公钥。

1.2.8. 获取安装程序

在安装 OpenShift Container Platform 之前,将安装文件下载到本地计算机上。

先决条件

  • 运行 Linux 或 macOS 的计算机,本地磁盘空间为 500 MB

流程

  1. 访问 OpenShift Cluster Manager 站点的 Infrastructure Provider 页面。如果您有红帽帐号,请使用自己的凭证登录。如果没有,请创建一个帐户。
  2. 选择您的基础架构供应商。
  3. 进入适用于您的安装类型的页面,下载您的操作系统的安装程序,并将文件放在要保存安装配置文件的目录中。。

    重要

    安装程序会在用来安装集群的计算机上创建若干文件。在完成集群安装后,您必须保留安装程序和安装程序所创建的文件。这两个文件都需要删除集群。

    重要

    删除安装程序创建的文件不会删除您的集群,即使集群在安装过程中失败也是如此。要删除集群,为特定云供应商完成 OpenShift Container Platform 卸载流程。

  4. 提取安装程序。例如,在使用 Linux 操作系统的计算机上运行以下命令:

    $ tar xvf openshift-install-linux.tar.gz
  5. 从 Red Hat OpenShift Cluster Manager 下载安装 pull secret。通过此 pull secret,您可以进行所含授权机构提供的服务的身份验证,这些服务包括为 OpenShift Container Platform 组件提供容器镜像的 Quay.io。

1.2.9. 创建安装配置文件

您可以自定义在 Red Hat Virtualization (RHV) 上安装的 OpenShift Container Platform 集群。

先决条件

  • 获取 OpenShift Container Platform 安装程序以及集群的 pull secret。

流程

  1. 创建 install-config.yaml 文件。

    1. 更改到包含安装程序的目录,再运行以下命令:

      $ ./openshift-install create install-config --dir <installation_directory> 1
      1
      对于 <installation_directory>,请指定用于保存安装程序所创建的文件的目录名称。
      重要

      指定一个空目录。一些安装信息,如 bootstrap X.509 证书,有较短的过期间隔,因此不要重复使用安装目录。如果要重复使用另一个集群安装中的个别文件,可以将其复制到您的目录中。但是,一些安装数据的文件名可能会在发行版本之间有所改变。从 OpenShift Container Platform 老版本中复制安装文件时要格外小心。

    2. 根据安装程序提示输入相关的值。

      1. 对于 SSH 公钥,请选择免密码公钥,如 ~/.ssh/id_rsa.pub。这个密钥被用来验证与新的 OpenShift Container Platform 集群的连接。

        注意

        如果您要在生产环境中执行安装调试或灾难恢复,请指定 ssh-agent 进程需要使用的 SSH 密钥。

      2. 对于 Platform,选择 ovirt
      3. 对于 Enter oVirt’s API endpoint URL,使用以下格式输入 RHV API 的 URL:

        https://<engine-fqdn>/ovirt-engine/api 1
        1
        对于 <engine-fqdn>,请指定 RHV 环境的完全限定域名。

        例如:

        $ curl -k -u ocpadmin@internal:pw123 \
        https://rhv-env.virtlab.example.com/ovirt-engine/api
      4. 对于 Is the oVirt CA local?,输入 Yes,因为您已经设置了一个 CA 证书。否则,请输入 No
      5. 对于 oVirt 的 CA bundle,如果您为前一个问题输入的是 Yes,请从 /etc/pki/ca-trust/source/anchors/ca.pem 中复制证书内容并粘贴到这里。然后按两次 Enter 键。如果您就前一个问题输入 No,则不会出现这个问题。
      6. 对于 oVirt engine username,请使用以下格式输入 RHV 管理员的用户名和配置文件:

        <username>@<profile> 1
        1
        对于 <username>,请指定 RHV 管理员的用户名。对于 <profile>,请指定登录配置集,您可以登陆到 RHV 管理门户查看 Profile 下拉列表。用户名和配置集应与以下示例相似:
        ocpadmin@internal
      7. 对于 oVirt engine password,请输入 RHV admin 密码。
      8. 对于 oVirt cluster,请选择用于安装 OpenShift Container Platform 的集群。
      9. 对于 oVirt storage domain,请选择安装 OpenShift Container Platform 的存储域。
      10. 对于 oVirt network,请选择可访问 Manager REST API 的虚拟网络。
      11. 对于 Internal API Virtual IP,请为集群的 REST API 输入您设置的静态 IP 地址。
      12. 对于 Ingress virtual IP,请为通配符应用程序域输入您保留的静态 IP 地址。
      13. 对于 Base Domain,请输入 OpenShift Container Platform 集群的基域。如果这个群集暴露于外部世界,这必须是 DNS 基础结构可识别的有效域。例如: 输入 virtlab.example.com
      14. 对于 Cluster Name,请输入集群名称。例如: my-cluster。使用您为 OpenShift Container Platform REST API 创建的外部注册/可解析 DNS 条目的集群名称,以及应用域名。安装程序也将此名称提供给 RHV 环境中的集群。
      15. 对于 Pull Secret,请从之前下载并粘贴的 pull-secret.txt 文件中复制 pull secret。您还可以从 Red Hat OpenShift Cluster Manager 获取同一 pull secret 的副本。
  2. 修改 install-config.yaml 文件。您可以在安装配置参数部分中找到有关可用参数的更多信息。
  3. 备份 install-config.yaml 文件,以便用于安装多个集群。

    重要

    install-config.yaml 文件会在安装过程中消耗掉。如果要重复使用此文件,必须现在备份。

1.2.9.1. Red Hat Virtualization(RHV)的 install-config.yaml 文件示例

您可以通过更改 install-config.yaml 文件中的参数和参数值来自定义安装程序创建的 OpenShift Container Platform 集群。

以下示例专用于在 RHV 上安装 OpenShift Container Platform。

该文件位于您运行以下命令时指定的 <installation_directory> 中。

$ ./openshift-install create install-config --dir <installation_directory>
注意
  • 这些示例文件仅供参考。您必须使用安装程序来获取 install-config.yaml 文件。
  • 更改 install-config.yaml 文件可以增加集群所需的资源。验证您的 RHV 环境是否具有这些其他资源。否则,安装或集群将失败。

示例:这是默认的 install-config.yaml 文件

apiVersion: v1
baseDomain: example.com
compute:
- architecture: amd64
  hyperthreading: Enabled
  name: worker
  platform: {}
  replicas: 3
controlPlane:
  architecture: amd64
  hyperthreading: Enabled
  name: master
  platform: {}
  replicas: 3
metadata:
  creationTimestamp: null
  name: my-cluster
networking:
  clusterNetwork:
  - cidr: 10.128.0.0/14
    hostPrefix: 23
  machineNetwork:
  - cidr: 10.0.0.0/16
  networkType: OpenShiftSDN
  serviceNetwork:
  - 172.30.0.0/16
platform:
  ovirt:
    api_vip: 10.46.8.230
    ingress_vip: 192.168.1.5
    ovirt_cluster_id: 68833f9f-e89c-4891-b768-e2ba0815b76b
    ovirt_storage_domain_id: ed7b0f4e-0e96-492a-8fff-279213ee1468
    ovirt_network_name: ovirtmgmt
    vnicProfileID: 3fa86930-0be5-4052-b667-b79f0a729692
publish: External
pullSecret: '{"auths": ...}'
sshKey: ssh-ed12345 AAAA...

示例:最小 install-config.yaml 文件

apiVersion: v1
baseDomain: example.com
metadata:
  name: test-cluster
platform:
  ovirt:
    api_vip: 10.46.8.230
    ingress_vip: 10.46.8.232
    ovirt_cluster_id: 68833f9f-e89c-4891-b768-e2ba0815b76b
    ovirt_storage_domain_id: ed7b0f4e-0e96-492a-8fff-279213ee1468
    ovirt_network_name: ovirtmgmt
    vnicProfileID: 3fa86930-0be5-4052-b667-b79f0a729692
pullSecret: '{"auths": ...}'
sshKey: ssh-ed12345 AAAA...

示例: install-config.yaml 文件中的自定义机器池

apiVersion: v1
baseDomain: example.com
controlPlane:
  name: master
  platform:
    ovirt:
      cpu:
        cores: 4
        sockets: 2
      memoryMB: 65536
      osDisk:
        sizeGB: 100
      vmType: server
  replicas: 3
compute:
- name: worker
  platform:
    ovirt:
      cpu:
        cores: 4
        sockets: 4
      memoryMB: 65536
      osDisk:
        sizeGB: 200
      vmType: server
  replicas: 5
metadata:
  name: test-cluster
platform:
  ovirt:
    api_vip: 10.46.8.230
    ingress_vip: 10.46.8.232
    ovirt_cluster_id: 68833f9f-e89c-4891-b768-e2ba0815b76b
    ovirt_storage_domain_id: ed7b0f4e-0e96-492a-8fff-279213ee1468
    ovirt_network_name: ovirtmgmt
    vnicProfileID: 3fa86930-0be5-4052-b667-b79f0a729692
pullSecret: '{"auths": ...}'
sshKey: ssh-ed25519 AAAA...

1.2.9.2. 安装配置参数

在部署 OpenShift Container Platform 集群前,您可以提供参数值,以描述托管集群的云平台的帐户并选择性地自定义集群平台。在创建 install-config.yaml 安装配置文件时,您可以通过命令行来提供所需的参数的值。如果要自定义集群,可以修改 install-config.yaml 文件来提供关于平台的更多信息。

注意

安装之后,您无法修改 install-config.yaml 文件中的这些参数。

重要

openshift-install 命令不验证参数的字段名称。如果指定了不正确的名称,则不会创建相关的文件或对象,且不会报告错误。确保所有指定的参数的字段名称都正确。

1.2.9.2.1. 所需的配置参数

下表描述了所需的安装配置参数:

表 1.1. 所需的参数

参数描述

apiVersion

install-config.yaml 内容的 API 版本。当前版本是 v1。安装程序还可能支持旧的 API 版本。

字符串

baseDomain

云供应商的基域。此基础域用于创建到 OpenShift Container Platform 集群组件的路由。集群的完整 DNS 名称是 baseDomainmetadata.name 参数值的组合,其格式为 <metadata.name>.<baseDomain>

完全限定域名或子域名,如 example.com

metadata

Kubernetes 资源 ObjectMeta,其中只消耗 name 参数。

对象

metadata.name

集群的名称。集群的 DNS 记录是 {{.metadata.name}}.{{.baseDomain}} 的子域。

小写字母,连字符(-)和句点(.)的字符串,如 dev

platform

执行安装的具体平台配置: awsbaremetalazureopenstackovirtvsphere。有关 platform.<platform> 参数的额外信息,请参考下表来了解您的具体平台。

对象

pullSecret

从 Red Hat OpenShift Cluster Manager 获取 pull secret,验证从 Quay.io 等服务中下载 OpenShift Container Platform 组件的容器镜像。

{
   "auths":{
      "cloud.openshift.com":{
         "auth":"b3Blb=",
         "email":"you@example.com"
      },
      "quay.io":{
         "auth":"b3Blb=",
         "email":"you@example.com"
      }
   }
}
1.2.9.2.2. 网络配置参数

您可以根据现有网络基础架构的要求自定义安装配置。例如,您可以扩展集群网络的 IP 地址块,或者提供不同于默认值的不同 IP 地址块。

只支持 IPv4 地址。

表 1.2. 网络参数

参数描述

networking

集群网络的配置。

对象

注意

您不能在安装后修改 networking 对象指定的参数。

networking.networkType

要安装的集群网络供应商 Container Network Interface(CNI)插件。

OpenShiftSDNOVNKubernetes。默认值为 OpenShiftSDN

networking.clusterNetwork

pod 的 IP 地址块。

默认值为 10.128.0.0/14,主机前缀为 /23

如果您指定多个 IP 地址块,则块不得互相重叠。

一个对象数组。例如:

networking:
  clusterNetwork:
  - cidr: 10.128.0.0/14
    hostPrefix: 23

networking.clusterNetwork.cidr

使用 networking.clusterNetwork 时需要此项。IP 地址块。

一个 IPv4 网络。

使用 CIDR 形式的 IP 地址块。IPv4 块的前缀长度介于 032 之间。

networking.clusterNetwork.hostPrefix

分配给每个单独节点的子网前缀长度。例如,如果 hostPrefix 设为 23,则每个节点从所给的 cidr 中分配一个 /23 子网。hostPrefix23 提供 510(2^(32 - 23)- 2)个 pod IP 地址。

子网前缀。

默认值为 23

networking.serviceNetwork

服务的 IP 地址块。默认值为 172.30.0.0/16

OpenShift SDN 和 OVN-Kubernetes 网络供应商只支持服务网络的一个 IP 地址块。

CIDR 格式具有 IP 地址块的数组。例如:

networking:
  serviceNetwork:
   - 172.30.0.0/16

networking.machineNetwork

机器的 IP 地址块。

如果您指定多个 IP 地址块,则块不得互相重叠。

一个对象数组。例如:

networking:
  machineNetwork:
  - cidr: 10.0.0.0/16

networking.machineNetwork.cidr

使用 networking.machineNetwork 时需要。IP 地址块。libvirt 以外的所有平台的默认值为 10.0.0.0/16。对于 libvirt,默认值为 192.168.126.0/24

CIDR 表示法中的 IP 网络块。

例如: 10.0.0.0/16

注意

networking.machineNetwork 设置为与首选 NIC 所在的 CIDR 匹配。

1.2.9.2.3. 可选配置参数

下表描述了可选安装配置参数:

表 1.3. 可选参数

参数描述

additionalTrustBundle

添加到节点可信证书存储中的 PEM 编码 X.509 证书捆绑包。配置了代理时,也可以使用这个信任捆绑包。

字符串

compute

组成计算节点的机器的配置。

machine-pool 对象的数组。详情请查看以下"Machine-pool"表。

compute.architecture

决定池中机器的指令集合架构。目前不支持异构集群,因此所有池都必须指定相同的架构。有效值为 amd64 (默认值)。

字符串

compute.hyperthreading

是否在计算机器上启用或禁用并发多线程或超线程。默认情况下,启用并发多线程以提高机器内核的性能。

重要

如果禁用并发多线程,请确保在容量规划时考虑到机器性能可能会显著降低的问题。

EnabledDisabled

compute.name

使用 compute 时需要此值。机器池的名称。

worker

compute.platform

使用 compute 时需要此值。使用此参数指定托管 worker 机器的云供应商。此参数值必须与 controlPlane.platform 参数值匹配。

awsazuregcpopenstackovirtvsphere{}

compute.replicas

要置备的计算机器数量,也称为 worker 机器。

大于或等于 2 的正整数。默认值为 3

controlPlane

组成 control plane 的机器的配置。

MachinePool 对象的数组。详情请查看以下"Machine-pool"表。

controlPlane.architecture

决定池中机器的指令集合架构。目前不支持异构集群,因此所有池都必须指定相同的架构。有效值为 amd64 (默认值)。

字符串

controlPlane.hyperthreading

是否在 control plane 机器上启用或禁用并发多线程或超线程。默认情况下,启用并发多线程以提高机器内核的性能。

重要

如果禁用并发多线程,请确保在容量规划时考虑到机器性能可能会显著降低的问题。

EnabledDisabled

controlPlane.name

使用 controlPlane 时需要。机器池的名称。

master

controlPlane.platform

使用 controlPlane 时需要。使用此参数指定托管 control plane 机器的云供应商。此参数值必须与 compute.platform 参数值匹配。

awsazuregcpopenstackovirtvsphere{}

controlPlane.replicas

要置备的 control plane 机器数量。

唯一支持的值是 3,它是默认值。

credentialsMode

Cloud Credential Operator(CCO)模式。如果没有指定任何模式,CCO 会动态地尝试决定提供的凭证的功能,在支持多个模式的平台上使用 mint 模式。

注意

不是所有 CCO 模式都支持所有云供应商。如需有关 CCO 模式的更多信息,请参阅Red Hat Operator 参考指南内容中的 Cloud Credential Operator 条目。

MintPassthroughManual 或空字符串("")。

fips

启用或禁用 FIPS 模式。默认为 false (禁用)。如果启用了 FIPS 模式,运行 OpenShift Container Platform 的 Red Hat Enterprise Linux CoreOS (RHCOS) 机器会绕过默认的 Kubernetes 加密套件,并使用由 RHCOS 提供的加密模块。

重要

只有在 x86_64 架构中的 OpenShift Container Platform 部署支持 FIPS 验证的/Modules in Process 加密库。

注意

如果使用 Azure File 存储,则无法启用 FIPS 模式。

falsetrue

imageContentSources

release-image 内容的源和仓库。

对象数组。包括一个 source 以及可选的 mirrors,如下表所示。

imageContentSources.source

使用 imageContentSources 时需要。指定用户在镜像拉取规格中引用的仓库。

字符串

imageContentSources.mirrors

指定可能还包含同一镜像的一个或多个仓库。

字符串数组

publish

如何发布或公开集群的面向用户的端点,如 Kubernetes API、OpenShift 路由。

InternalExternal。默认值为 External

在非云平台上不支持将此字段设置为 Internal

重要

如果将字段的值设为 Internal,集群将无法运行。如需更多信息,请参阅 BZ#1953035

sshKey

用于验证集群机器访问的 SSH 密钥或密钥。

注意

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

一个或多个密钥。例如:

sshKey:
  <key1>
  <key2>
  <key3>
1.2.9.2.4. 其他 Red Hat Virtualization(RHV)配置参数

下表描述了额外的 RHV 配置参数:

表 1.4. 集群的其他 RHV 参数

参数描述

platform.ovirt.ovirt_cluster_id

必需。创建虚拟机的集群。

字符串。例如:68833 f9f-e89c-4891-b768-e2ba0815b76b

platform.ovirt.ovirt_storage_domain_id

必需。创建虚拟机磁盘的存储域 ID。

字符串。例如: ed7b0f4e-0e96-492a-8fff-279213ee1468

platform.ovirt.ovirt_network_name

必需。创建 VM nics 的网络名称。

字符串。例如: ocpcluster

platform.ovirt.vnicProfileID

必需。VM 网络接口的 vNIC 配置集 ID。如果集群网络只有一个配置集,则可以推断出这个值。

字符串。例如: 3fa86930-0be5-4052-b667-b79f0a729692

platform.ovirt.api_vip

必需。分配给 API 虚拟 IP(VIP)的机器网络上的 IP 地址。您可以在此端点访问 OpenShift API。

字符串。示例: 10.46.8.230

platform.ovirt.ingress_vip

必需。分配给 Ingress 虚拟 IP(VIP)的机器网络上的 IP 地址。

字符串。示例: 10.46.8.232

1.2.9.2.5. 机器池的其他 RHV 参数

下表描述了机器池的其他 RHV 配置参数:

表 1.5. 机器池的其他 RHV 参数

参数描述

<machine-pool>.platform.ovirt.cpu

可选。定义虚拟机的 CPU。

对象

<machine-pool>.platform.ovirt.cpu.cores

使用 <machine-pool>.platform.ovirt.cpu 时需要此项。内核数。虚拟 CPU 总数(vCPU)是内核 * 插槽。

整数

<machine-pool>.platform.ovirt.cpu.sockets

使用 <machine-pool>.platform.ovirt.cpu 时需要此项。每个内核的插槽数。虚拟 CPU 总数(vCPU)是内核 * 插槽。

整数

<machine-pool>.platform.ovirt.memoryMB

可选。MiB 中虚拟机的内存。

整数

<machine-pool>.platform.ovirt.instanceTypeID

可选。一个实例类型 UUID,如 00000009-0009-0009-0009-0000000000f1,它可以从 https://<engine-fqdn>/ovirt-engine/api/instancetypes 端点获得。

UUID 字符串

<machine-pool>.platform.ovirt.osDisk

可选。定义虚拟机的第一个和可引导磁盘。

字符串

<machine-pool>.platform.ovirt.osDisk.sizeGB

如果您使用 <machine-pool>.platform.ovirt.osDisk,则需要此操作。GiB 中磁盘的大小。

数字

<machine-pool>.platform.ovirt.vmType

可选。VM 工作负载类型,如 high-performanceserverdesktop

字符串

注意

您可以将 <machine-pool> 替换为 controlPlanecompute

1.2.10. 部署集群

您可以在兼容云平台中安装 OpenShift Container Platform。

重要

安装程序的 create cluster 命令只能在初始安装过程中运行一次。

先决条件

  • 从运行安装程序的机器中打开到 Manager 的 ovirt-imageio 端口。默认情况下,端口为 54322
  • 获取 OpenShift Container Platform 安装程序以及集群的 pull secret。

流程

  1. 更改为包含安装程序的目录并初始化集群部署:

    $ ./openshift-install create cluster --dir <installation_directory> \ 1
        --log-level=info 2
    1
    对于 <installation_directory>,请指定自定义 ./install-config.yaml 文件的位置。
    2
    要查看不同的安装详情,请指定 warndebugerror,而不要指定 info
    注意

    如果您在主机上配置的云供应商帐户没有足够的权限来部署集群,安装过程将会停止,并且显示缺少的权限。

    集群部署完成后,终端会显示访问集群的信息,包括指向其 Web 控制台的链接和 kubeadmin 用户的凭证。

    输出示例

    ...
    INFO Install complete!
    INFO To access the cluster as the system:admin user when using 'oc', run 'export KUBECONFIG=/home/myuser/install_dir/auth/kubeconfig'
    INFO Access the OpenShift web-console here: https://console-openshift-console.apps.mycluster.example.com
    INFO Login to the console with user: "kubeadmin", and password: "4vYBz-Ee6gm-ymBZj-Wt5AL"
    INFO Time elapsed: 36m22s

    注意

    当安装成功时,集群访问和凭证信息还会输出到 <installation_directory>/.openshift_install.log

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

    您不得删除安装程序或安装程序所创建的文件。需要这两者才能删除集群。

重要

您已完成了安装集群所需的步骤。余下的步骤演示了如何验证集群并对安装进行故障排除。

1.2.11. 通过下载二进制文件安装 OpenShift CLI

您需要安装 CLI(oc) 来使用命令行界面与 OpenShift Container Platform 进行交互。您可在 Linux 、Windows 或 macOS 上安装 oc

重要

如果安装了旧版本的 oc,则无法使用 OpenShift Container Platform 4.6 中的所有命令。下载并安装新版本的 oc

1.2.11.1. 在 Linux 上安装 OpenShift CLI

您可以按照以下流程在 Linux 上安装 OpenShift CLI(oc)二进制文件。

流程

  1. 进入到红帽客户门户网站上的 OpenShift Container Platform 下载页面
  2. Version 下拉菜单中选择相应的版本。
  3. 单击 OpenShift v4.6 Linux 客户端 条目旁边的 Download Now,再保存文件。
  4. 解包存档:

    $ tar xvzf <file>
  5. oc 二进制代码放到 PATH 中的目录中。

    执行以下命令可以查看当前的 PATH 设置:

    $ echo $PATH

安装 OpenShift CLI 后,可以使用 oc 命令:

$ oc <command>

1.2.11.2. 在 Windows 上安装 OpenShift CLI

您可以按照以下流程在 Windows 上安装 OpenShift CLI(oc)二进制代码。

流程

  1. 进入到红帽客户门户网站上的 OpenShift Container Platform 下载页面
  2. Version 下拉菜单中选择相应的版本。
  3. 单击 OpenShift v4.6 Windows 客户端条目旁边的 Download Now,再保存文件。
  4. 使用 ZIP 程序解压存档。
  5. oc 二进制代码放到 PATH 中的目录中。

    要查看您的 PATH,请打开命令提示窗口并执行以下命令:

    C:\> path

安装 OpenShift CLI 后,可以使用 oc 命令:

C:\> oc <command>

1.2.11.3. 在 macOS 上安装 OpenShift CLI

您可以按照以下流程在 macOS 上安装 OpenShift CLI(oc)二进制代码。

流程

  1. 进入到红帽客户门户网站上的 OpenShift Container Platform 下载页面
  2. Version 下拉菜单中选择相应的版本。
  3. 单击 OpenShift v4.6 MacOSX 客户端条目旁边的 Download Now,再保存文件。
  4. 解包和解压存档。
  5. oc 二进制文件移到 PATH 的目录中。

    要查看您的 PATH,打开一个终端窗口并执行以下命令:

    $ echo $PATH

安装 OpenShift CLI 后,可以使用 oc 命令:

$ oc <command>

1.2.12. 使用 CLI 登录到集群

您可以通过导出集群 kubeconfig 文件,以默认系统用户身份登录集群。kubeconfig 文件包含关于集群的信息,供 CLI 用于将客户端连接到正确集群和 API 服务器。该文件特只适用于一个特定的集群,在 OpenShift Container Platform 安装过程中创建。

先决条件

  • 已部署了 OpenShift Container Platform 集群。
  • 已安装 oc CLI。

流程

  1. 导出 kubeadmin 凭证:

    $ export KUBECONFIG=<installation_directory>/auth/kubeconfig 1
    1
    对于 <installation_directory>,请指定安装文件保存到的目录的路径。
  2. 使用导出的配置,验证能否成功运行 oc 命令:

    $ oc whoami

    输出示例

    system:admin

如需更多信息,请参阅 OpenShift CLI 入门

1.2.13. 验证集群状态

您可以在安装过程中或安装后验证 OpenShift Container Platform 集群的状态:

流程

  1. 在集群环境中,导出管理员的 kubeconfig 文件:

    $ export KUBECONFIG=<installation_directory>/auth/kubeconfig 1
    1
    对于 <installation_directory>,请指定安装文件保存到的目录的路径。

    kubeconfig 文件包含关于集群的信息,供 CLI 用于将客户端连接到正确集群和 API 服务器。

  2. 查看部署后创建的 control plane 和计算机器:

    $ oc get nodes
  3. 查看集群的版本:

    $ oc get clusterversion
  4. 查看 Operator 的状态:

    $ oc get clusteroperator
  5. 查看集群中的所有正在运行的 pod:

    $ oc get pods -A

故障排除

如果安装失败,安装程序会超时并显示出错信息。如需了解更多相关信息,请参阅故障排除安装问题

1.2.14. 访问 RHV 上的 OpenShift Container Platform Web 控制台。

在 OpenShift Container Platform 集群初始化后,您可以登录到 OpenShift Container Platform Web 控制台。

流程

  1. 可选: 在 Red Hat Virtualization (RHV) 管理门户中,打开 ComputeCluster
  2. 验证安装程序是否创建了虚拟机。
  3. 返回到安装程序正在运行的命令行。当安装程序完成后,它会显示登录到 OpenShift Container Platform Web 控制台的用户名和临时密码。
  4. 在浏览器中,打开 OpenShift Container Platform web 控制台的 URL。URL 使用以下格式:

    console-openshift-console.apps.<clustername>.<basedomain> 1
    1
    对于 <clustername>.<baseDomain>,请指定集群名称和基域。

    例如:

    console-openshift-console.apps.my-cluster.virtlab.example.com

1.2.15. OpenShift Container Platform 的 Telemetry 访问

在 OpenShift Container Platform 4.6 中,默认运行的 Telemetry 服务提供有关集群健康状况和成功更新的指标,需要访问互联网。如果您的集群连接到互联网,Telemetry 会自动运行,而且集群会注册到 OpenShift Cluster Manager

确认 OpenShift Cluster Manager 清单正确后,可以由 Telemetry 自动维护,也可以使用 OpenShift Cluster Manager 手动维护,使用订阅监控来跟踪帐户或多集群级别的 OpenShift Container Platform 订阅。

其他资源

1.2.16. 在 Red Hat Virtualization (RHV) 上安装时的常见问题

以下是您可能会遇到的一些常见问题,以及推荐的原因和解决方案。

1.2.16.1. CPU 负载增加和节点进入非就绪状态

  • 症状: CPU 负载显著增加,节点开始处于 Not Ready 状态。
  • 原因: 存储域延迟可能太大,特别是针对 control plane 节点(也称为 master 节点)。
  • 解决方案:

    通过重启 kubelet 服务使节点再次就绪:

    $ systemctl restart kubelet

    检查 OpenShift Container Platform 指标服务,该服务可自动收集并报告一些重要数据,如 etcd 磁盘同步持续时间。如果集群是可操作的,使用这个数据来帮助确定这个问题是否是因为存储延迟或吞吐量造成的。如果是这样,请考虑使用一个较低延迟和更高吞吐量的存储资源。

    要获得原始指标,请以 kubeadmin 或具有 cluster-admin 特权的用户身份输入以下命令:

    $ oc get --insecure-skip-tls-verify --server=https://localhost:<port> --raw=/metrics

    如需了解更多相关信息,请参阅 使用 OpenShift 4.x 调试应用程序端点

1.2.16.2. 连接到 OpenShift Container Platform 集群 API 存在问题

  • 症状: 安装程序完成,但无法使用 OpenShift Container Platform 集群 API。在 bootstrap 过程完成后,bootstrap 虚拟机仍处于在线状态。当您输入以下命令时,回复会超时。

    $ oc login -u kubeadmin -p *** <apiurl>
  • 原因: 安装程序没有删除 bootstrap VM,因此没有释放集群的 API IP 地址。
  • 解决方法:使用 wait-for 子命令,在 bootstrap 过程完成后获得通知:

    $ ./openshift-install wait-for bootstrap-complete

    当 bootstrap 过程完成后,删除 bootstrap 虚拟机:

    $ ./openshift-install destroy bootstrap

1.2.17. 安装后的任务

在 OpenShift Container Platform 集群初始化后,您可以执行以下任务。

  • 可选: 在部署后,使用 OpenShift Container Platform 中的 Machine Config Operator (MCO) 添加或替换 SSH 密钥。
  • 可选:删除 kubeadmin 用户。使用身份验证提供程序创建具有 cluster-admin 权限的用户。

1.2.18. 后续步骤

1.3. 使用用户置备的基础架构在 RHV 上安装集群

在 OpenShift Container Platform 版本 4.6 中,您可以在 Red Hat Virtualization(RHV)和其他您提供的基础架构上安装自定义的 OpenShift Container Platform 集群。OpenShift Container Platform 文档使用用户置备的基础架构来引用此基础架构类型。

下图显示了在 RHV 集群上运行的潜在 OpenShift Container Platform 集群示例。

RHV 集群上的 OpenShift Container Platform 集群图

RHV 主机运行包含 control plane 和计算 pod 的虚拟机。其中一个主机还运行 Manager 虚拟机和包含临时 control plane pod 的 bootstrap 虚拟机。]

1.3.1. 先决条件

在 RHV 环境上安装 OpenShift Container Platform 集群需要满足以下条件。

1.3.2. OpenShift Container Platform 的互联网访问

在 OpenShift Container Platform 4.6 中,您需要访问互联网来安装集群。

您必须具有以下互联网访问权限:

  • 访问 OpenShift Cluster Manager 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
  • 访问 Quay.io,以获取安装集群所需的软件包。
  • 获取执行集群更新所需的软件包。
重要

如果您的集群无法直接访问互联网,则可以在置备的某些类基础架构上执行受限网络安装。在此过程中,您要下载所需的内容,并使用它在镜像 registry(mirror registry) 中填充安装集群并生成安装程序所需的软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群之前,要更新 registry 镜像系统中的内容。

1.3.3. RHV 环境的要求

要安装并运行 OpenShift Container Platform 集群,RHV 环境必须满足以下要求。

不满足这些要求会导致安装或进程失败。另外,无法满足这些要求可能会导致 OpenShift Container Platform 集群在安装后几天或几星期后失败。

对 CPU、内存和存储资源的以下要求是基于默认值乘以安装程序创建的默认虚拟机数。除了 RHV 环境用于非 OpenShift Container Platform 操作的资源外,这些资源还必须可用

默认情况下,安装程序会在安装过程中创建七台虚拟机。首先,它会创建一个 bootstrap 虚拟机来提供临时服务和 control plane,同时创建 OpenShift Container Platform 集群的其余部分。当安装程序完成集群创建时,删除 bootstrap 机器可释放其资源。

如果在 RHV 环境中增加虚拟机数量,则需要相应地增加资源。

要求

  • RHV 环境有一个数据中心,其状态是 Up
  • RHV 数据中心包含一个 RHV 集群。
  • RHV 集群具有专门用于 OpenShift Container Platform 集群的以下资源:

    • 最小 28 个 vCPU:在安装过程中创建的七个虚拟机,每个都需要 4 个。
    • 112 GiB RAM 或更多,包括:

      • 16 GiB 或更多用于提供临时 control plane 功能的 bootstrap 机器。
      • 每个提供 control plane 功能的三台 control plane 机器都需要16 GiB 或更多。
      • 每个用来运行应用程序负载的 compute 机器都需要 16 GiB 或更多。
  • RHV 存储域必须满足 etcd 后端性能要求
  • 在生产环境中,每个虚拟机必须具有 120 GiB 或更多存储。因此,存储域必须为默认的 OpenShift Container Platform 集群提供 840 GiB 或更多存储。在资源有限制或非生产环境中,每个虚拟机必须具有 32 GiB 或更多存储,因此对于默认的 OpenShift Container Platform 集群,存储域必须具有 230 GiB 或更多存储 。
  • 要在安装和更新过程中从红帽生态系统目录下载镜像,RHV 集群必须可以访问互联网。Telemetry 服务还需要互联网连接来简化订阅和权利的过程。
  • RHV 集群需要有一个虚拟网络,可访问 RHV Manager 上的 REST API。确保在这个网络中启用了 DHCP,因为安装程序创建的虚拟机会使用 DHCP 来获取他们的 IP 地址。
  • 具有以下最少权限的用户帐户和组,用于在目标 RHV 集群上安装和管理 OpenShift Container Platform 集群:

    • DiskOperator
    • DiskCreator
    • UserTemplateBasedVm
    • TemplateOwner
    • TemplateCreator
    • 目标集群的ClusterAdmin
警告

使用最少权限:在安装过程中,避免使用带有 RHV SuperUser 权限的管理员帐户。安装程序会将您提供的凭据保存到一个临时的 ovirt-config.yaml 文件中,这个凭证有被受到破坏的可能。

1.3.4. 验证 RHV 环境的要求

验证 RHV 环境是否满足安装和运行 OpenShift Container Platform 集群的要求。不满足这些要求会导致问题。

重要

这些要求基于安装程序用来创建 control plane 和计算机器的默认资源。这些资源包括 vCPU、内存和存储。如果更改这些资源或增加 OpenShift Container Platform 机器的数量,请相应调整这些要求。

流程

  1. 检查 RHV 版本。

    1. 在 RHV 管理门户中,点右上角的 ? 帮助图表,选 About
    2. 在打开的窗口中,记录下 RHV 软件版本
    3. 确认 OpenShift Container Platform 版本 4.6 和您记录的 RHV 版本组合是被支持的。 RHV 上支持的 OpenShift Container Platform
  2. 检查数据中心、集群和存储。

    1. 在 RHV 管理门户中,点 ComputeData Centers
    2. 确认可以访问您要安装 OpenShift Container Platform 的数据中心。
    3. 点击该数据中心的名称。
    4. 在数据中心详情中,存储 标签中确认您要安装 OpenShift Container Platform 的存储域是 Active
    5. 记录下域名以供以后使用。
    6. 确认 Free Space 至少为 230 GiB。
    7. 确认存储域满足 etcd 后端性能要求可以使用 fio 性能基准工具来评测
    8. 在数据中心详情中点击 Clusters 选项卡。
    9. 找到您要安装 OpenShift Container Platform 的 RHV 集群。记录集群名称,以供稍后使用。
  3. 检查 RHV 主机资源。

    1. 在 RHV 管理门户中,点 Compute > Clusters
    2. 点击要安装 OpenShift Container Platform 的集群。
    3. 在集群详情中点击 Hosts 标签页。
    4. 检查主机,确认这些主机有至少 28 个 逻辑 CPU 内核专门 用于 OpenShift Container Platform 集群。
    5. 记录逻辑 CPU 内核数以供稍后使用。
    6. 请确认这些 CPU 内核被正确分配,在安装过程中创建的七台虚拟机中的每一台都可以有四个内核。
    7. 确认主机总共有 112 GiB 的Max free Memory for scheduling new virtual machines,以满足以下每个 OpenShift Container Platform 机器的要求:

      • bootstrap 机器需要 16 GiB
      • 三个 control plane 机器每个机器都需要 16 GiB
      • 三个计算机器每个机器都需要 16 GiB
    8. 记录下 Max free Memory for scheduling new virtual machine 的值以便稍后使用。
  4. 验证安装 OpenShift Container Platform 的虚拟网络能否访问 RHV Manager 的 REST API。在这个网络的虚拟机上,使用 curl 来访问 RHV Manager 的 REST API:

    $ curl -k -u <username>@<profile>:<password> \ 1
    https://<engine-fqdn>/ovirt-engine/api 2
    1
    对于 <username>,指定具有在 RHV 上创建和管理 OpenShift Container Platform 集群的 RHV 帐户的用户名。对于 <profile>,请指定登录配置集,您可以登陆到 RHV 管理门户查看 Profile 下拉列表。对于 <password>,指定该用户的密码。
    2
    对于 <engine-fqdn>,请指定 RHV 环境的完全限定域名。

    例如:

    $ curl -k -u ocpadmin@internal:pw123 \
    https://rhv-env.virtlab.example.com/ovirt-engine/api

1.3.5. 用户置备的基础架构对网络的要求

所有 Red Hat Enterprise Linux CoreOS(RHCOS)机器在启动过程中需要 initramfs 中的网络从机器配置服务器获取 Ignition 配置。

在初次启动过程中,需要一个 DHCP 服务器或集群中的每个机器都设置了静态 IP 地址来建立网络连接,以下载它们的 Ignition 配置文件。

建议您使用 DHCP 服务器为集群进行长期机器管理。确保 DHCP 服务器已配置为向集群机器提供持久 IP 地址和主机名。

Kubernetes API 服务器必须能够解析集群机器的节点名称。如果 API 服务器和 worker 节点位于不同的区域中,您可以配置默认 DNS 搜索区域,以便 API 服务器能够解析节点名称。另一种支持的方法是始终在节点对象和所有 DNS 请求中使用完全限定域名来指代主机。

您必须配置机器间的网络连接,以便集群组件进行通信。每台机器都必须能够解析集群中所有其他机器的主机名。

防火墙

配置防火墙以便集群能够访问所需的站点。

另请参阅:

负载均衡器

配置一个(最好为两个)L4 负载均衡器:

  • 为 control-plane 和 bootstrap 机器上的端口 644322623 提供负载均衡。端口 6443 提供对 Kubernetes API 服务器的访问,且必须在内部和外部访问。集群内的节点必须能够访问端口 22623
  • 为运行入口路由器(通常是默认配置中的计算节点)的机器提供端口 44380 的负载均衡。这两个端口都必须从集群内部和外部访问。

DNS

配置基础架构提供的 DNS 以便正确解析主要组件和服务。如果您只使用一个负载均衡器,这些 DNS 记录可以指向相同的 IP 地址。

  • api.<cluster_name>.<base_domain> (内部和外部解析)和 api-int.<cluster_name>.<base_domain> (内部解析)创建 DNS 记录,指向 control plane 机器的负载均衡器。
  • *.apps.<cluster_name>.<base_domain> 创建一个 DNS 记录,指向入口路由器的负载均衡器。例如,计算机器的端口 44380

表 1.6. 所有机器到所有机器

协议端口描述

ICMP

N/A

网络可访问性测试

TCP

1936

指标

9000-9999

主机级别的服务,包括端口 9100-9101 上的节点导出器和端口 9099 上的 Cluster Version Operator。

10250-10259

Kubernetes 保留的默认端口

10256

openshift-sdn

UDP

4789

VXLAN 和 Geneve

6081

VXLAN 和 Geneve

9000-9999

主机级别的服务,包括端口 9100-9101 上的节点导出器。

TCP/UDP

30000-32767

Kubernetes 节点端口

表 1.7. 要通过控制平面的所有机器

协议端口描述

TCP

6443

Kubernetes API

表 1.8. control plane 机器到 control plane 机器

协议端口描述

TCP

2379-2380

etcd 服务器和对等端口

网络拓扑要求

您为集群置备的基础架构必须满足下列网络拓扑要求。

重要

OpenShift Container Platform 要求所有节点都能访问互联网,以便为平台容器提取镜像并向红帽提供遥测数据。

负载均衡器

在安装 OpenShift Container Platform 前,您必须置备两个满足以下要求的负载均衡器:

  1. API 负载均衡器:提供一个通用端点,供用户(包括人和机器)与平台交互和配置。配置以下条件:

    • 只适用于第 4 层负载均衡。这可被称为 Raw TCP、SSL Passthrough 或者 SSL 桥接模式。如果使用 SSL Bridge 模式,必须为 API 路由启用 Server Name Indication(SNI)。
    • 无状态负载平衡算法。这些选项根据负载均衡器的实现而有所不同。
    重要

    不要为 API 负载均衡器配置会话持久性。

    在负载均衡器的前端和后台配置以下端口:

    表 1.9. API 负载均衡器

    端口后端机器(池成员)内部外部描述

    6443

    Bootstrap 和 control plane.bootstrap 机器初始化集群 control plane 后,您要从负载均衡器中删除 bootstrap 机器。您必须为 API 服务器健康检查探测配置 /readyz 端点。

    X

    X

    Kubernetes API 服务器

    22623

    Bootstrap 和 control plane.bootstrap 机器初始化集群 control plane 后,您要从负载均衡器中删除 bootstrap 机器。

    X

     

    机器配置服务器

    注意

    负载均衡器必须配置为,从 API 服务器关闭 /readyz 端点到从池中删除 API 服务器实例时最多需要 30 秒。在 /readyz 返回错误或处于健康状态后的时间范围内,端点必须被删除或添加。每 5 秒或 10 秒探测一次,有两个成功请求处于健康状态,三个成为不健康的请求经过测试。

  2. 应用程序入口负载均衡器:提供来自集群外部的应用程序流量流量的 Ingress 点。配置以下条件:

    • 只适用于第 4 层负载均衡。这可被称为 Raw TCP、SSL Passthrough 或者 SSL 桥接模式。如果使用 SSL Bridge 模式,您必须为 Ingress 路由启用Server Name Indication(SNI)。
    • 建议根据可用选项以及平台上托管的应用程序类型,使用基于连接的或者基于会话的持久性。

    在负载均衡器的前端和后台配置以下端口:

    表 1.10. 应用程序入口负载均衡器

    端口后端机器(池成员)内部外部描述

    443

    默认运行入口路由器 Pod、计算或 worker 的机器。

    X

    X

    HTTPS 流量

    80

    默认运行入口路由器 Pod、计算或 worker 的机器。

    X

    X

    HTTP 流量

提示

如果负载均衡器可以看到客户端的真实 IP 地址,启用基于 IP 的会话持久性可提高使用端到端 TLS 加密的应用程序的性能。

注意

OpenShift Container Platform 集群需要正确配置入口路由器。control plane 初始化后,您必须配置入口路由器。

NTP 配置

OpenShift Container Platform 集群默认配置为使用公共网络时间协议(NTP)服务器。如果要使用本地企业 NTP 服务器,或者集群部署在断开连接的网络中,您可以将集群配置为使用特定的时间服务器。如需更多信息,请参阅配置 chrony 时间服务的文档。

如果 DHCP 服务器提供 NTP 服务器信息,Red Hat Enterprise Linux CoreOS(RHCOS)机器上的 chrony 时间服务会读取信息,并可与 NTP 服务器同步时钟。

1.3.6. 设置安装机器

要运行二进制 openshift-install 安装程序和 Ansible 脚本,请设置 RHV Manager 或具有网络访问 RHV 环境的 Red Hat Enterprise Linux (RHEL) 计算机以及 Manager 上的 REST API。

流程

  1. 更新或安装 Python3 和 Ansible。例如:

    # dnf update python3 ansible
  2. 安装 python3-ovirt-engine-sdk4 软件包 来获取 Python 软件开发组件。
  3. 安装 ovirt.image-template Ansible 角色。在 RHV Manager 和其他 Red Hat Enterprise Linux (RHEL) 机器上,这个角色作为 ovirt-ansible-image-template 软件包发布。例如,输入:

    # dnf install ovirt-ansible-image-template
  4. 安装 ovirt.vm-infra Ansible 角色。在 RHV Manager 和其他 RHEL 机器上,此角色作为 ovirt-ansible-vm-infra 软件包发布。

    # dnf install ovirt-ansible-vm-infra
  5. 创建环境变量并为其分配绝对或相对路径。例如,输入:

    $ export ASSETS_DIR=./wrk
    注意

    安装程序使用这个变量创建保存重要安装相关文件的目录。之后,安装过程会重复使用此变量来定位这些资产文件。避免删除这个资产目录 ; 卸载集群时需要此目录。

1.3.7. 为 RHV 设置 CA 证书

从 Red Hat Virtualization (RHV) Manager 下载 CA 证书,并在安装机器中进行设置。

您可以使用 RHV Manager 的网页或使用 curl 命令下载该证书。

之后,您向安装程序提供证书。

流程

  1. 使用这两个方法之一下载 CA 证书:

    • 进入 Manager 的网页 https://<engine-fqdn>/ovirt-engine/。然后在 下载 中点击 CA 证书 链接。
    • 运行以下命令:

      $ curl -k 'https://<engine-fqdn>/ovirt-engine/services/pki-resource?resource=ca-certificate&format=X509-PEM-CA' -o /tmp/ca.pem  1
      1
      对于 <engine-fqdn>,请指定 RHV Manager 的全限定域名,如 rhv-env.virtlab.example.com
  2. 配置 CA 文件,为 Manager 授予无根用户访问权限。将 CA 文件权限设置为 0644 (symbolic 值: -rw-r—​r--):

    $ sudo chmod 0644 /tmp/ca.pem
  3. 对于 Linux,将 CA 证书复制到服务器证书目录中。使用 -p 保留权限:

    $ sudo cp -p /tmp/ca.pem /etc/pki/ca-trust/source/anchors/ca.pem
  4. 将证书添加到您操作系统的证书管理器:

    • 对于 macOS,请双击这个证书文件,并使用 Keychain Access 程序将该文件添加到 System 密钥链中。
    • 对于 Linux,更新 CA 信任:

      $ sudo update-ca-trust
      注意

      如果使用您自己的证书认证机构,请确定系统信任它。

其他资源

1.3.8. 生成 SSH 私钥并将其添加到代理中

如果要在集群上执行安装调试或灾难恢复,则必须为 ssh-agent 和安装程序提供 SSH 密钥。您可以使用此密钥访问公共集群中的 bootstrap 机器来排除安装问题。

注意

在生产环境中,您需要进行灾难恢复和调试。

您可以使用此密钥以 core 用户身份通过 SSH 连接到 master 节点。在部署集群时,此密钥会添加到 core 用户的 ~/.ssh/authorized_keys 列表中。

注意

您必须使用一个本地密钥,而不要使用在特定平台上配置的密钥,如 AWS 密钥对

流程

  1. 如果还没有为计算机上免密码身份验证而配置的 SSH 密钥,请创建一个。例如,在使用 Linux 操作系统的计算机上运行以下命令:

    $ ssh-keygen -t ed25519 -N '' \
        -f <path>/<file_name> 1
    1
    指定新 SSH 密钥的路径和文件名,如 ~/.ssh/id_rsa。如果您已有密钥对,请确保您的公钥位于 ~/.ssh 目录中。

    运行此命令会在指定的位置生成不需要密码的 SSH 密钥。

    注意

    如果您计划在 x86_64 架构中安装使用 FIPS 验证的/Modules in Process 加密库的 OpenShift Container Platform 集群,不要创建使用 ed25519 算法的密钥。反之,创建一个使用 rsaecdsa 算法的密钥。

  2. 作为后台任务启动 ssh-agent 进程:

    $ eval "$(ssh-agent -s)"

    输出示例

    Agent pid 31874

    注意

    如果您的集群采用 FIPS 模式,则只使用 FIPS 兼容算法来生成 SSH 密钥。密钥必须是 RSA 或 ECDSA。

  3. 将 SSH 私钥添加到 ssh-agent

    $ ssh-add <path>/<file_name> 1

    输出示例

    Identity added: /home/<you>/<path>/<file_name> (<computer_name>)

    1
    指定 SSH 私钥的路径和文件名,如 ~/.ssh/id_rsa

后续步骤

  • 在安装 OpenShift Container Platform 时,为安装程序提供 SSH 公钥。

1.3.9. 获取安装程序

在安装 OpenShift Container Platform 之前,将安装文件下载到本地计算机上。

先决条件

  • 运行 Linux 或 macOS 的计算机,本地磁盘空间为 500 MB

流程

  1. 访问 OpenShift Cluster Manager 站点的 Infrastructure Provider 页面。如果您有红帽帐号,请使用自己的凭证登录。如果没有,请创建一个帐户。
  2. 选择您的基础架构供应商。
  3. 进入适用于您的安装类型的页面,下载您的操作系统的安装程序,并将文件放在要保存安装配置文件的目录中。。

    重要

    安装程序会在用来安装集群的计算机上创建若干文件。在完成集群安装后,您必须保留安装程序和安装程序所创建的文件。这两个文件都需要删除集群。

    重要

    删除安装程序创建的文件不会删除您的集群,即使集群在安装过程中失败也是如此。要删除集群,为特定云供应商完成 OpenShift Container Platform 卸载流程。

  4. 提取安装程序。例如,在使用 Linux 操作系统的计算机上运行以下命令:

    $ tar xvf openshift-install-linux.tar.gz
  5. 从 Red Hat OpenShift Cluster Manager 下载安装 pull secret。通过此 pull secret,您可以进行所含授权机构提供的服务的身份验证,这些服务包括为 OpenShift Container Platform 组件提供容器镜像的 Quay.io。

1.3.10. 下载 Ansible playbook

下载 Ansible playbook 以在 RHV 上安装 OpenShift Container Platform 版本 4.6。

流程

  • 在您的安装机器中运行以下命令:

    $ mkdir playbooks
    $ cd playbooks
    $ curl -s -L -X GET https://api.github.com/repos/openshift/installer/contents/upi/ovirt?ref=release-4.6 |
    grep 'download_url.*\.yml' |
    awk '{ print $2 }' | sed -r 's/("|",)//g' |
    xargs -n 1 curl -O

后续步骤

  • 下载这些 Ansible playbook 后,还必须为资产目录创建环境变量,并在运行安装程序创建安装配置文件前自定义 inventory.yml 文件。

1.3.11. inventory.yml 文件

您可以使用 inventory.yml 文件来定义并创建您要安装的 OpenShift Container Platform 集群的元素。这包括 Red Hat Enterprise Linux CoreOS(RHCOS)镜像、虚拟机模板、bootstrap 机器、control plane 节点和 worker 节点等元素。您还可以使用 inventory.yml 来销毁集群。

以下 inventory.yml 示例显示参数及其默认值。这些默认值中的数量和数字满足在 RHV 环境中运行生产 OpenShift Container Platform 集群的要求。

inventory.yml 文件示例

---
all:
  vars:

    ovirt_cluster: "Default"
    ocp:
      assets_dir: "{{ lookup('env', 'ASSETS_DIR') }}"
      ovirt_config_path: "{{ lookup('env', 'HOME') }}/.ovirt/ovirt-config.yaml"

    # ---
    # {op-system} section
    # ---
    rhcos:
      image_url: "https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.6/latest/rhcos-openstack.x86_64.qcow2.gz"
      local_cmp_image_path: "/tmp/rhcos.qcow2.gz"
      local_image_path: "/tmp/rhcos.qcow2"

    # ---
    # Profiles section
    # ---
    control_plane:
      cluster: "{{ ovirt_cluster }}"
      memory: 16GiB
      sockets: 4
      cores: 1
      template: rhcos_tpl
      operating_system: "rhcos_x64"
      type: high_performance
      graphical_console:
        headless_mode: false
        protocol:
        - spice
        - vnc
      disks:
      - size: 120GiB
        name: os
        interface: virtio_scsi
        storage_domain: depot_nvme
      nics:
      - name: nic1
        network: lab
        profile: lab

    compute:
      cluster: "{{ ovirt_cluster }}"
      memory: 16GiB
      sockets: 4
      cores: 1
      template: worker_rhcos_tpl
      operating_system: "rhcos_x64"
      type: high_performance
      graphical_console:
        headless_mode: false
        protocol:
        - spice
        - vnc
      disks:
      - size: 120GiB
        name: os
        interface: virtio_scsi
        storage_domain: depot_nvme
      nics:
      - name: nic1
        network: lab
        profile: lab

    # ---
    # Virtual machines section
    # ---
    vms:
    - name: "{{ metadata.infraID }}-bootstrap"
      ocp_type: bootstrap
      profile: "{{ control_plane }}"
      type: server
    - name: "{{ metadata.infraID }}-master0"
      ocp_type: master
      profile: "{{ control_plane }}"
    - name: "{{ metadata.infraID }}-master1"
      ocp_type: master
      profile: "{{ control_plane }}"
    - name: "{{ metadata.infraID }}-master2"
      ocp_type: master
      profile: "{{ control_plane }}"
    - name: "{{ metadata.infraID }}-worker0"
      ocp_type: worker
      profile: "{{ compute }}"
    - name: "{{ metadata.infraID }}-worker1"
      ocp_type: worker
      profile: "{{ compute }}"
    - name: "{{ metadata.infraID }}-worker2"
      ocp_type: worker
      profile: "{{ compute }}"

重要

为描述以 "Enter" 开头的参数输入值。 否则,您可以使用默认值或将其替换为新值。

常规部分

  • ovirt_cluster:输入现有 RHV 集群的名称,在其中安装 OpenShift Container Platform 集群。
  • OCP.assets_diropenshift-install 安装程序创建的目录的路径以存储它生成的文件。
  • OCP.ovirt_config_path:安装程序生成的 ovirt-config.yaml 文件的路径,如 ./wrk/install-config.yaml。此文件包含与管理器的 REST API 交互所需的凭据。

Red Hat Enterprise Linux CoreOS(RHCOS)部分

  • image_url:输入您指定的用于下载的 RHCOS 镜像的 URL。
  • local_cmp_image_path:压缩的 RHCOS 镜像的本地下载目录的路径。
  • local_image_path:提取的 RHCOS 镜像的本地目录路径。

配置集部分

本节由两个配置集组成:

  • control_plane:bootstrap 和 control plane 节点的配置集。
  • compute:compute plane 中 worker 节点的配置集。

这些配置集有以下参数。参数的默认值满足运行生产集群的最低要求。您可以增加或自定义这些值来满足您的工作负载要求。

  • Cluster:这个值从 General Section 中的 ovirt_cluster 获取集群名称。
  • memory:虚拟机的内存量(以 GB 为单位)。
  • socket:虚拟机的插槽数。
  • cores:虚拟机的内核数。
  • template:虚拟机模板的名称。如果计划安装多个集群,且这些集群使用包含不同规格的模板,则使用集群 ID 前附加模板名称。
  • operating_system:虚拟机中客户端操作系统的类型。对于 oVirt/RHV 版本 4.4,此值必须是 rhcos_x64,以便 Ignition 脚本的值可以传递给虚拟机。
  • type:输入 server 作为虚拟机的类型。

    重要

    您必须将 type 参数的值从 high_performance 改为 server

  • disks:磁盘规格。control_planecompute 节点可以有不同的存储域。
  • size:最小磁盘大小。
  • name:输入连接到 RHV 中目标集群的磁盘名称。
  • interface:输入您指定的磁盘接口类型。
  • storage_domain:输入您指定的磁盘的存储域。
  • nics:输入虚拟机使用的名称网络。您还可以指定虚拟网络接口配置集。默认情况下,NIC 从 oVirt/RHV MAC 池中获取其 MAC 地址。

虚拟机部分

最后部分 vms 定义您要在集群中创建和部署的虚拟机。默认情况下,它为生产环境提供最少的 control plane 和 worker 节点数量。

虚拟机包含三个所需的元素:

  • name:虚拟机的名称。在这种情况下, metadata.infraID 会使用 metadata.yml 文件中的基础架构 ID 预先填充虚拟机名称。
  • ocp_type:OCP 集群中的虚拟机的角色。可能的值有 bootstrapmasterworker
  • profile:每个虚拟机从中继承规格的配置集名称。本例中可能的值是 control_planecompute

    您可以覆盖虚拟机从其配置集中继承的值。要做到这一点,您要将配置集属性的名称添加到 inventory.yml 中的虚拟机,并为它分配一个覆盖值。要查看这个示例,请检查前面的 inventory .yml 示例中的 name: "{{ metadata.infraID }}-bootstrap" 虚拟机:它有一个 type 属性,其值为 server,这会覆盖虚拟机从control_plane 配置集继承的 type 属性的值。

元数据变量

对于虚拟机,metadata.infraID 会利用构建 Ignition 文件时创建的 metadata.json 文件中的基础架构 ID 来附加虚拟机的名称。

playbook 使用以下代码从 ocp.assets_dir 的特定文件中读取 infraID

---
- name: include metadata.json vars
  include_vars:
    file: "{{ ocp.assets_dir }}/metadata.json"
    name: metadata

  ...

1.3.12. 指定 RHCOS 镜像设置

更新 inventory.yml 文件的 Red Hat Enterprise Linux CoreOS(RHCOS)镜像设置。之后,当您运行此文件之一时,它会将压缩的 Red Hat Enterprise Linux CoreOS(RHCOS)镜像从 image_url URL 下载到 local_cmp_image_path 目录。然后,playbook 会将镜像解压缩到 local_image_path 目录,并使用它来创建 oVirt/RHV 模板。

流程

  1. 找到您要安装的 OpenShift Container Platform 版本的 RHCOS 镜像下载页面,如 /pub/openshift-v4/dependencies/rhcos/latest/latest
  2. 在该下载页面中复制 OpenStack qcow2 镜像的 URL,如 https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.6/latest/rhcos-openstack.x86_64.qcow2.gz
  3. 编辑之前下载的 inventory.yml playbook。此时会粘贴 URL 作为 image_url 的值。例如:

    rhcos:
      "https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.6/latest/rhcos-openstack.x86_64.qcow2.gz"

1.3.13. 创建安装配置文件

您可以通过运行安装程序(openshift-install)并使用之前指定或收集的信息响应其提示来创建安装配置文件。

当完成对提示的响应后,安装程序会在之前指定的 asset 目录中创建 install-config.yaml 文件的初始版本,如 ./wrk/install-config.yaml

安装程序还会创建一个文件 $HOME/.ovirt/ovirt-config.yaml,其中包含访问 Manager 并使用其 REST API 所需的所有连接参数。

注: 安装过程不使用您为一些参数提供的值,如内部 API 虚拟 IPIngress 虚拟 IP,因为您已在基础架构 DNS 中配置了这些参数。

它还使用您在 inventory.yml 中为参数提供的值,如 oVirt clusteroVirt storageoVirt network。使用一个脚本删除或替换 install-config.yaml 中的相同值,使用前面提到的虚拟 IP

流程

  1. 运行安装程序:

    $ openshift-install create install-config --dir $ASSETS_DIR
  2. 根据安装程序的提示输入您系统的信息。

    输出示例

    ? SSH Public Key /home/user/.ssh/id_dsa.pub
    ? Platform <ovirt>
    ? Engine FQDN[:PORT] [? for help] <engine.fqdn>
    ? Enter ovirt-engine username <ocpadmin@internal>
    ? Enter password <******>
    ? oVirt cluster <cluster>
    ? oVirt storage <storage>
    ? oVirt network <net>
    ? Internal API virtual IP <172.16.0.252>
    ? Ingress virtual IP <172.16.0.251>
    ? Base Domain <example.org>
    ? Cluster Name <ocp4>
    ? Pull Secret [? for help] <********>

? SSH Public Key /home/user/.ssh/id_dsa.pub
? Platform <ovirt>
? Engine FQDN[:PORT] [? for help] <engine.fqdn>
? Enter ovirt-engine username <ocpadmin@internal>
? Enter password <******>
? oVirt cluster <cluster>
? oVirt storage <storage>
? oVirt network <net>
? Internal API virtual IP <172.16.0.252>
? Ingress virtual IP <172.16.0.251>
? Base Domain <example.org>
? Cluster Name <ocp4>
? Pull Secret [? for help] <********>

对于 Internal API 虚拟 IPIngress 虚拟 IP,请提供您在配置 DNS 服务时指定的 IP 地址。

您输入 oVirt 集群Base Domain 的值一起形成 REST API 的 URL 的 FQDN 部分以及您创建的所有应用程序,如 https://api.ocp4.example.org:6443/https://console-openshift-console.apps.ocp4.example.org

您可以从 Red Hat OpenShift Cluster Manager 获取 pull secret

1.3.14. 自定义 install-config.yaml

在这里,您使用三个 Python 脚本覆盖一些安装程序的默认行为:

  • 默认情况下,安装程序使用机器 API 创建节点。要覆盖此默认行为,将计算节点数量设置为零个副本。之后,您可以使用 Ansible playbook 创建计算节点。
  • 默认情况下,安装程序为节点设置机器网络的 IP 范围。要覆盖这个默认行为,您可以将 IP 范围设置为与您的基础架构匹配。
  • 默认情况下,安装程序将平台设置为 ovirt。但是,在用户置备的基础架构上安装集群和在裸机上安装集群更为相似。因此,您可以从 install-config.yaml 中删除 ovirt platform 部分,并将平台改为 none。然后,使用 inventory.yml 指定所有所需的设置。
注意

这些片断可用于 Python 3 和 Python 2。

流程

  1. 将计算节点数量设置为零副本:

    $ python3 -c 'import os, yaml
    path = "%s/install-config.yaml" % os.environ["ASSETS_DIR"]
    conf = yaml.safe_load(open(path))
    conf["compute"][0]["replicas"] = 0
    open(path, "w").write(yaml.dump(conf, default_flow_style=False))'
  2. 设置机器网络的 IP 范围。例如,要将范围设置为 172.16.0.0/16,请输入:

    $ python3 -c 'import os, yaml
    path = "%s/install-config.yaml" % os.environ["ASSETS_DIR"]
    conf = yaml.safe_load(open(path))
    conf["networking"]["machineNetwork"][0]["cidr"] = "172.16.0.0/16"
    open(path, "w").write(yaml.dump(conf, default_flow_style=False))'
  3. 删除 ovirt 部分,把平台改为 none:

    $ python3 -c 'import os, yaml
    path = "%s/install-config.yaml" % os.environ["ASSETS_DIR"]
    conf = yaml.safe_load(open(path))
    platform = conf["platform"]
    del platform["ovirt"]
    platform["none"] = {}
    open(path, "w").write(yaml.dump(conf, default_flow_style=False))'

1.3.15. 生成清单文件

使用安装程序在 asset 目录中生成一组清单文件。

生成清单文件的命令在消耗 install-config.yaml 文件前会显示警告消息。

如果您计划重复使用 install-config.yaml 文件,请在生成清单文件前生成备份副本。

流程

  1. 可选:创建 install-config.yaml 文件的备份副本:

    $ cp install-config.yaml install-config.yaml.backup
  2. 在资产目录中生成一组清单:

    $ openshift-install create manifests --dir $ASSETS_DIR

    该命令显示以下信息。

    输出示例

    INFO Consuming Install Config from target directory
    WARNING Making control-plane schedulable by setting MastersSchedulable to true for Scheduler cluster settings

    该命令生成以下清单文件:

    输出示例

    $ tree
    .
    └── wrk
        ├── manifests
        │   ├── 04-openshift-machine-config-operator.yaml
        │   ├── cluster-config.yaml
        │   ├── cluster-dns-02-config.yml
        │   ├── cluster-infrastructure-02-config.yml
        │   ├── cluster-ingress-02-config.yml
        │   ├── cluster-network-01-crd.yml
        │   ├── cluster-network-02-config.yml
        │   ├── cluster-proxy-01-config.yaml
        │   ├── cluster-scheduler-02-config.yml
        │   ├── cvo-overrides.yaml
        │   ├── etcd-ca-bundle-configmap.yaml
        │   ├── etcd-client-secret.yaml
        │   ├── etcd-host-service-endpoints.yaml
        │   ├── etcd-host-service.yaml
        │   ├── etcd-metric-client-secret.yaml
        │   ├── etcd-metric-serving-ca-configmap.yaml
        │   ├── etcd-metric-signer-secret.yaml
        │   ├── etcd-namespace.yaml
        │   ├── etcd-service.yaml
        │   ├── etcd-serving-ca-configmap.yaml
        │   ├── etcd-signer-secret.yaml
        │   ├── kube-cloud-config.yaml
        │   ├── kube-system-configmap-root-ca.yaml
        │   ├── machine-config-server-tls-secret.yaml
        │   └── openshift-config-secret-pull-secret.yaml
        └── openshift
            ├── 99_kubeadmin-password-secret.yaml
            ├── 99_openshift-cluster-api_master-user-data-secret.yaml
            ├── 99_openshift-cluster-api_worker-user-data-secret.yaml
            ├── 99_openshift-machineconfig_99-master-ssh.yaml
            ├── 99_openshift-machineconfig_99-worker-ssh.yaml
            └── openshift-install-manifests.yaml

后续步骤

  • 使 control-plane 节点不可调度。

1.3.16. 使 control-plane 节点不可调度

由于要手动创建和部署 control plane 机器,所以您必须配置清单文件,使 control-plane 节点不可调度。

流程

  1. 要使 control-plane 节点不可调度,请输入:

    $ python3 -c 'import os, yaml
    path = "%s/manifests/cluster-scheduler-02-config.yml" % os.environ["ASSETS_DIR"]
    data = yaml.safe_load(open(path))
    data["spec"]["mastersSchedulable"] = False
    open(path, "w").write(yaml.dump(data, default_flow_style=False))'

1.3.17. 构建 Ignition 文件

要从您刚才生成和修改的清单文件构建 Ignition 文件,请运行安装程序。此操作会创建一个 Red Hat Enterprise Linux CoreOS(RHCOS)机器 initramfs,它将获取 Ignition 文件并执行创建节点所需的配置。

除了 Ignition 文件外,安装程序还会生成以下内容:

  • 包含使用 ockubectl 工具连接到集群的 admin 凭证的 auth 目录。
  • 包含当前安装的 OpenShift Container Platform 集群名称、集群 ID 和基础架构 ID 的 metadata.json 文件。

此安装过程的 Ansible playbook 使用 infraID 值作为它们创建的虚拟机的前缀。这可防止在同一 oVirt/RHV 集群中有多个安装时的命名冲突。

注意

Ignition 配置文件中的证书会在 24 小时后过期。完成集群安装,并将集群以非降级状态持续运行 24 小时,以便完成第一次证书轮转。

流程

  1. 要构建 Ignition 文件,请输入:

    $ openshift-install create ignition-configs --dir $ASSETS_DIR

    输出示例

    $ tree
    .
    └── wrk
        ├── auth
        │   ├── kubeadmin-password
        │   └── kubeconfig
        ├── bootstrap.ign
        ├── master.ign
        ├── metadata.json
        └── worker.ign

1.3.18. 创建模板和虚拟机

在确认 inventory.yml 中的变量后,您要运行第一个 Ansible 置备 playbook create-templates-and-vms.yml

此 playbook 使用 $HOME/.ovirt/ovirt-config.yaml 中的 RHV Manager 的连接参数,并在资产目录中读取 metadata.json

如果本地 Red Hat Enterprise Linux CoreOS(RHCOS)镜像不存在,则 playbook 会从您为 inventory.yml 中的 image_url 指定的 URL 下载一个。它提取镜像并将其上传到 RHV 以创建模板。

playbook 根据 inventory.yml 文件中的 control_planecompute 配置集创建一个模板。如果这些配置集有不同的名称,它会创建两个模板。

playbook 完成后,其创建的虚拟机将停止。您可以从中获取信息来帮助配置其他基础架构元素。例如,您可以获取虚拟机的 MAC 地址来配置 DHCP,为虚拟机分配永久 IP 地址。

流程

  1. inventory.yml 中,在 control_planecompute 变量下,将 type: high_performance 的两个实例更改为 type: server
  2. 可选: 如果您计划在同一集群上执行多个安装,请为每个 OCP 安装创建不同的模板。在 inventory.yml 文件中,使用 infraID 预先填充 模板 值。例如:

      control_plane:
        cluster: "{{ ovirt_cluster }}"
        memory: 16GiB
        sockets: 4
        cores: 1
        template: "{{ metadata.infraID }}-rhcos_tpl"
        operating_system: "rhcos_x64"
        ...
  3. 创建模板和虚拟机:

    $ ansible-playbook -i inventory.yml create-templates-and-vms.yml

1.3.19. 创建 bootstrap 机器

您可以通过运行 bootstrap.yml playbook 创建 bootstrap 机器。此 playbook 启动 bootstrap 虚拟机,并从 asset 目录中传递 bootstrap.ign Ignition 文件。bootstrap 节点配置自己,使其能为 control plane 节点提供 Ignition 文件。

要监控 bootstrap 过程,您可以使用 RHV 管理门户中的控制台或使用 SSH 连接到虚拟机。

流程

  1. 创建 bootstrap 机器:

    $ ansible-playbook -i inventory.yml bootstrap.yml
  2. 使用管理入口或 SSH 中的控制台连接到 bootstrap 机器。将 <bootstrap_ip> 替换为 bootstrap 节点的 IP 地址。要使用 SSH,请输入:

    $ ssh core@<boostrap.ip>
  3. 从 bootstrap 节点收集发行镜像服务的 bootkube.service journald 单元日志:

    [core@ocp4-lk6b4-bootstrap ~]$ journalctl -b -f -u release-image.service -u bootkube.service
    注意

    bootstrap 节点上的 bootkube.service 日志会输出 etcd connection refused 错误,这表示 bootstrap 服务器无法在 control plane 节点(也称为 master 节点)上连接到 etcd。在各个 control plane 节点上启动 etcd 且节点已加入集群后,这个错误应该会停止。

1.3.20. 创建 control plane 节点

您可以通过运行 masters.yml playbook 来创建 control plane 节点。此 playbook 将 master.ign Ignition 文件传递给每个虚拟机。Ignition 文件包含 control plane 节点的指令,可从 URL(如 https://api-int.ocp4.example.org:22623/config/master)获取 Ignition。这个 URL 中的端口号由负载均衡器管理,且只能在集群中访问。

流程

  1. 创建 control plane 节点:

    $ ansible-playbook -i inventory.yml masters.yml
  2. 在 playbook 创建 control plane 时,监控 bootstrap 过程:

    $ openshift-install wait-for bootstrap-complete --dir $ASSETS_DIR

    输出示例

    INFO API v1.18.3+b74c5ed up
    INFO Waiting up to 40m0s for bootstrapping to complete...

  3. 当 control plane 节点上所有 pod 都启动并运行 etcd 时,安装程序会显示以下输出。

    输出示例

    INFO It is now safe to remove the bootstrap resources

1.3.21. 验证集群状态

您可以在安装过程中或安装后验证 OpenShift Container Platform 集群的状态:

流程

  1. 在集群环境中,导出管理员的 kubeconfig 文件:

    $ export KUBECONFIG=$ASSETS_DIR/auth/kubeconfig

    kubeconfig 文件包含关于集群的信息,供 CLI 用于将客户端连接到正确集群和 API 服务器。

  2. 查看部署后创建的 control plane 和计算机器:

    $ oc get nodes
  3. 查看集群的版本:

    $ oc get clusterversion
  4. 查看 Operator 的状态:

    $ oc get clusteroperator
  5. 查看集群中的所有正在运行的 pod:

    $ oc get pods -A

1.3.22. 删除 bootstrap 机器

wait-for 命令显示 bootstrap 过程完成后,您必须删除 bootstrap 虚拟机来释放计算、内存和存储资源。另外,从负载均衡器指令中删除 bootstrap 机器的设置。

流程

  1. 要从集群中删除 bootstrap 机器,请输入:

    $ ansible-playbook -i inventory.yml retire-bootstrap.yml
  2. 从负载均衡器指令中删除 bootstrap 机器的设置。

1.3.23. 创建 worker 节点并完成安装

创建 worker 节点与创建 control plane 节点类似。但是,worker 节点 worker 不会自动加入集群。要将其添加到集群中,请检查并批准 worker 的待处理的 CSR(Certificate Signing Requests)。

批准第一个请求后,您将继续批准 CSR,直到所有 worker 节点都被批准为止。完成此过程后,worker 节点就变为 Ready,并且可以调度在其上运行的 pod。

最后,使用命令行查看安装过程何时完成。

流程

  1. 创建 worker 节点:

    $ ansible-playbook -i inventory.yml workers.yml
  2. 要列出所有 CSR,请输入:

    $ oc get csr -A

    最后,这个命令会显示每个节点的一个 CSR。例如:

    输出示例

    NAME        AGE    SIGNERNAME                                    REQUESTOR                                                                   CONDITION
    csr-2lnxd   63m    kubernetes.io/kubelet-serving                 system:node:ocp4-lk6b4-master0.ocp4.example.org                             Approved,Issued
    csr-hff4q   64m    kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper   Approved,Issued
    csr-hsn96   60m    kubernetes.io/kubelet-serving                 system:node:ocp4-lk6b4-master2.ocp4.example.org                             Approved,Issued
    csr-m724n   6m2s   kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper   Pending
    csr-p4dz2   60m    kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper   Approved,Issued
    csr-t9vfj   60m    kubernetes.io/kubelet-serving                 system:node:ocp4-lk6b4-master1.ocp4.example.org                             Approved,Issued
    csr-tggtr   61m    kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper   Approved,Issued
    csr-wcbrf   7m6s   kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper   Pending

  3. 要过滤列表并只查看待处理的 CSR,请输入:

    $ watch "oc get csr -A | grep pending -i"

    此命令每两秒钟刷新输出一次,仅显示待处理的 CSR。例如:

    输出示例

    Every 2.0s: oc get csr -A | grep pending -i
    
    csr-m724n   10m   kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper   Pending
    csr-wcbrf   11m   kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper   Pending

  4. 检查每个待处理的请求。例如:

    输出示例

    $ oc describe csr csr-m724n

    输出示例

    Name:               csr-m724n
    Labels:             <none>
    Annotations:        <none>
    CreationTimestamp:  Sun, 19 Jul 2020 15:59:37 +0200
    Requesting User:    system:serviceaccount:openshift-machine-config-operator:node-bootstrapper
    Signer:             kubernetes.io/kube-apiserver-client-kubelet
    Status:             Pending
    Subject:
             Common Name:    system:node:ocp4-lk6b4-worker1.ocp4.example.org
             Serial Number:
             Organization:   system:nodes
    Events:  <none>

  5. 如果 CSR 信息正确,则批准请求:

    $ oc adm certificate approve csr-m724n
  6. 等待安装过程完成:

    $ openshift-install wait-for install-complete --dir $ASSETS_DIR --log-level debug

    安装完成后,命令行会显示 OpenShift Container Platform Web 控制台以及管理员用户名和密码的 URL。

1.3.24. OpenShift Container Platform 的 Telemetry 访问

在 OpenShift Container Platform 4.6 中,默认运行的 Telemetry 服务提供有关集群健康状况和成功更新的指标,需要访问互联网。如果您的集群连接到互联网,Telemetry 会自动运行,而且集群会注册到 OpenShift Cluster Manager

确认 OpenShift Cluster Manager 清单正确后,可以由 Telemetry 自动维护,也可以使用 OpenShift Cluster Manager 手动维护,使用订阅监控来跟踪帐户或多集群级别的 OpenShift Container Platform 订阅。

其他资源

1.4. 在 RHV 上卸载集群

您可以从 Red Hat Virtualization (RHV) 中删除 OpenShift Container Platform 集群。

1.4.1. 删除使用安装程序置备的基础架构的集群

您可以从云中删除使用安装程序置备的基础架构的集群。

注意

卸载后,检查云供应商是否有没有被正确移除的资源,特别是 User Provisioned Infrastructure(UPI)集群。可能存在安装程序没有创建的资源,或者安装程序无法访问的资源。

先决条件

  • 有部署集群时所用的安装程序副本。
  • 有创建集群时安装程序所生成的文件。

流程

  1. 在用来安装集群的计算机中包含安装程序的目录中,运行以下命令:

    $ ./openshift-install destroy cluster \
    --dir <installation_directory> --log-level info 1 2
    1
    对于 <installation_directory>,请指定安装文件保存到的目录的路径。
    2
    要查看不同的详情,请指定 warndebugerror,而不要指定 info
    注意

    您必须为集群指定包含集群定义文件的目录。安装程序需要此目录中的 metadata.json 文件来删除集群。

  2. 可选:删除 <installation_directory> 目录和 OpenShift Container Platform 安装程序。

1.4.2. 删除使用用户置备的基础架构的集群

在使用完集群后,您可以从云中删除使用用户置备的基础架构的集群。

先决条件

  • 具有用于安装集群的原始 playbook 文件、资产目录文件以及 $ASSETS_DIR 环境变量。通常,您可以通过使用安装集群时所用的同一计算机来达到此目的。

流程

  1. 要删除集群,请输入:

    $ ansible-playbook -i inventory.yml \
        retire-bootstrap.yml \
        retire-masters.yml   \
        retire-workers.yml
  2. 删除您添加到 DNS、负载均衡器以及此集群的任何其他基础架构的任何配置。