2.11. 安装 RHCOS 并启动 OpenShift Container Platform bootstrap 过程


要在您置备的裸机基础架构上安装 OpenShift Container Platform,您必须在机器上安装 Red Hat Enterprise Linux CoreOS(RHCOS)。安装 RHCOS 时,您必须为您要安装的机器类型提供 OpenShift Container Platform 安装程序生成的 Ignition 配置文件。如果您配置了适当的网络、DNS 和负载均衡基础架构,OpenShift Container Platform bootstrap 过程会在 RHCOS 机器重启后自动启动。

要在机器上安装 RHCOS,请按照以下步骤使用 ISO 镜像或网络 PXE 引导。

注意

本安装文档中包括的计算节点部署步骤特定于 RHCOS。如果您选择部署基于 RHEL 的计算节点,您需要负责所有操作系统生命周期管理和维护,包括执行系统更新、应用补丁和完成所有其他必要的任务。仅支持 RHEL 8 计算机器。

您可以使用以下方法在 ISO 和 PXE 安装过程中配置 RHCOS:

  • 内核参数: 您可以使用内核参数来提供特定于安装的信息。例如,您可以指定上传到 HTTP 服务器的 RHCOS 安装文件的位置以及您要安装的节点类型的 Ignition 配置文件的位置。对于 PXE 安装,您可以使用 APPEND 参数将参数传递给 live 安装程序的内核。对于 ISO 安装,您可以中断实时安装引导过程来添加内核参数。在这两个安装情形中,您可以使用特殊的 coreos.inst.* 参数来指示实时安装程序,以及标准安装引导参数来打开或关闭标准内核服务。
  • Ignition 配置:OpenShift Container Platform Ignition 配置文件(*.ign)特定于您要安装的节点类型。您可以在 RHCOS 安装过程中传递 bootstrap、control plane 或计算节点 Ignition 配置文件的位置,以便在首次启动时生效。特殊情况下,您可以创建单独的、有限的 Ignition 配置以传递给 live 系统。该 Ignition 配置可以执行特定的任务,如在安装完成后向置备系统报告成功。此特殊的 Ignition 配置由 coreos-installer 使用,以便在首次引导安装的系统时应用。不要直接为实时 ISO 提供标准 control plane 和计算节点 Ignition 配置。
  • coreos-installer :您可以将 live ISO 安装程序引导到 shell 提示符,这可让您在第一次引导前以多种方式准备持久性系统。特别是,您可以运行 coreos-installer 命令来识别要包含的各种工件、使用磁盘分区和设置网络。在某些情况下,您可以配置 live 系统上的功能并将其复制到安装的系统中。

使用 ISO 安装还是 PXE 安装取决于您的情况。PXE 安装需要可用的 DHCP 服务并进行更多准备,但可以使安装过程更加自动化。ISO 安装是一个更手动的过程,如果您设置的机器数超过几台,则可能不方便。

注意

从 OpenShift Container Platform 4.6 开始,RHCOS ISO 和其他安装工件支持在带有 4K 扇区的磁盘上安装。

2.11.1. 使用 ISO 镜像安装 RHCOS

您可以使用 ISO 镜像在机器上安装 RHCOS。

先决条件

  • 已为集群创建 Ignition 配置文件。
  • 您已配置了适当的网络、DNS 和负载平衡基础架构。
  • 您有一个可以从计算机以及您创建的机器访问的 HTTP 服务器。
  • 您已参阅 Advanced RHCOS 安装配置 部分来了解配置功能的不同方法,如网络和磁盘分区。

流程

  1. 获取每个 Ignition 配置文件的 SHA512 摘要。例如,您可以在运行 Linux 的系统上使用以下内容来获取 bootstrap.ign Ignition 配置文件的 SHA512 摘要:

    $ sha512sum <installation_directory>/bootstrap.ign

    后续步骤中会向 coreos-installer 提供摘要,以验证集群节点上 Ignition 配置文件的真实性。

  2. 将安装程序创建的 bootstrap、control plane 和计算节点 Ignition 配置文件上传到 HTTP 服务器。注意这些文件的 URL。

    重要

    您可以在 Ignition 配置中添加或更改配置设置,然后将其保存到 HTTP 服务器。如果您计划在安装完成后在集群中添加更多计算机器,请不要删除这些文件。

  3. 从安装主机上,验证 Ignition 配置文件是否在 URL 上可用。以下示例获取 bootstrap 节点的 Ignition 配置文件:

    $ curl -k http://<HTTP_server>/bootstrap.ign 1

    输出示例

      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
      0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0{"ignition":{"version":"3.2.0"},"passwd":{"users":[{"name":"core","sshAuthorizedKeys":["ssh-rsa...

    在命令中将 bootstrap.ign 替换为 master.ignworker.ign,以验证 control plane 和计算节点的 Ignition 配置文件是否可用。

  4. 虽然可以从 RHCOS 镜像镜像页面获取您选择的操作系统实例安装方法所需的 RHCOS 镜像,但推荐的方法是从 openshift-install 命令的输出获取 RHCOS 镜像的正确版本:

    $ openshift-install coreos print-stream-json | grep '\.iso[^.]'

    输出示例

    "location": "<url>/art/storage/releases/rhcos-4.13-aarch64/<release>/aarch64/rhcos-<release>-live.aarch64.iso",
    "location": "<url>/art/storage/releases/rhcos-4.13-ppc64le/<release>/ppc64le/rhcos-<release>-live.ppc64le.iso",
    "location": "<url>/art/storage/releases/rhcos-4.13-s390x/<release>/s390x/rhcos-<release>-live.s390x.iso",
    "location": "<url>/art/storage/releases/rhcos-4.13/<release>/x86_64/rhcos-<release>-live.x86_64.iso",

    重要

    RHCOS 镜像可能不会随着 OpenShift Container Platform 的每个发行版本而改变。您必须下载最高版本的镜像,其版本号应小于或等于您安装的 OpenShift Container Platform 版本。如果可用,请使用与 OpenShift Container Platform 版本匹配的镜像版本。这个过程只使用 ISO 镜像。此安装类型不支持 RHCOS qcow2 镜像。

    ISO 文件名类似以下示例:

    rhcos-<version>-live.<architecture>.iso

  5. 使用 ISO 启动 RHCOS 安装。使用以下安装选项之一:

    • 将 ISO 映像刻录到磁盘并直接启动。
    • 使用 light-out 管理(LOM)接口使用 ISO 重定向。
  6. 在不指定任何选项或中断实时引导序列的情况下引导 RHCOS ISO 镜像。等待安装程序在 RHCOS live 环境中引导进入 shell 提示符。

    注意

    可以中断 RHCOS 安装引导过程来添加内核参数。但是,在这个 ISO 过程中,您应该使用以下步骤中所述的 coreos-installer 命令,而不是添加内核参数。

  7. 运行 coreos-installer 命令并指定满足您的安装要求的选项。您至少必须指定指向节点类型的 Ignition 配置文件的 URL,以及您要安装到的设备:

    $ sudo coreos-installer install --ignition-url=http://<HTTP_server>/<node_type>.ign <device> --ignition-hash=sha512-<digest> 12
    1 1
    您必须使用 sudo 运行 coreos-installer 命令,因为 core 用户没有执行安装所需的 root 权限。
    2
    当 Ignition 配置文件通过 HTTP URL 获取时,需要 --ignition-hash 选项来验证集群节点上 Ignition 配置文件的真实性。<digest> 是上一步中获取的 Ignition 配置文件 SHA512 摘要。
    注意

    如果要通过使用 TLS 的 HTTPS 服务器提供 Ignition 配置文件,您可以在运行 coreos-installer 前将内部证书颁发机构(CA)添加到系统信任存储中。

    以下示例将引导节点安装初始化到 /dev/sda 设备。bootstrap 节点的 Ignition 配置文件从 IP 地址 192.168.1.2 的 HTTP Web 服务器获取:

    $ sudo coreos-installer install --ignition-url=http://192.168.1.2:80/installation_directory/bootstrap.ign /dev/sda --ignition-hash=sha512-a5a2d43879223273c9b60af66b44202a1d1248fc01cf156c46d4a79f552b6bad47bc8cc78ddf0116e80c59d2ea9e32ba53bc807afbca581aa059311def2c3e3b
  8. 在机器的控制台上监控 RHCOS 安装的进度。

    重要

    在开始安装 OpenShift Container Platform 之前,确保每个节点中安装成功。观察安装过程可以帮助确定可能会出现 RHCOS 安装问题的原因。

  9. 安装 RHCOS 后,您必须重启系统。系统重启过程中,它会应用您指定的 Ignition 配置文件。
  10. 检查控制台输出,以验证 Ignition 是否运行。

    示例命令

    Ignition: ran on 2022/03/14 14:48:33 UTC (this boot)
    Ignition: user-provided config was applied

  11. 继续为集群创建其他机器。

    重要

    此时您必须创建 bootstrap 和 control plane 机器。如果 control plane 机器不可调度,请在安装 OpenShift Container Platform 前至少创建两台计算机器。

    如果存在所需的网络、DNS 和负载均衡器基础架构,OpenShift Container Platform bootstrap 过程会在 RHCOS 节点重启后自动启动。

    注意

    RHCOS 节点不包含 core 用户的默认密码。您可以使用可访问 SSH 私钥的用户的身份运行 ssh core@<node>.<cluster_name>.<base_domain > 来访问节点,该私钥与您在 install_config.yaml 文件中指定的公钥配对。运行 RHCOS 的 OpenShift Container Platform 4 集群节点不可变,它依赖于 Operator 来应用集群更改。不建议使用 SSH 访问集群节点。但是,当调查安装问题时,如果 OpenShift Container Platform API 不可用,或者 kubelet 在目标节点上无法正常工作,则调试或灾难恢复可能需要 SSH 访问。

2.11.2. 使用 PXE 或 iPXE 启动安装 RHCOS

您可以使用 PXE 或 iPXE 启动在机器上安装 RHCOS。

先决条件

  • 已为集群创建 Ignition 配置文件。
  • 您已配置了适当的网络、DNS 和负载平衡基础架构。
  • 您已配置了合适的 PXE 或 iPXE 基础架构。
  • 您有一个可以从计算机以及您创建的机器访问的 HTTP 服务器。
  • 您已参阅 Advanced RHCOS 安装配置 部分来了解配置功能的不同方法,如网络和磁盘分区。

流程

  1. 将安装程序创建的 bootstrap、control plane 和计算节点 Ignition 配置文件上传到 HTTP 服务器。注意这些文件的 URL。

    重要

    您可以在 Ignition 配置中添加或更改配置设置,然后将其保存到 HTTP 服务器。如果您计划在安装完成后在集群中添加更多计算机器,请不要删除这些文件。

  2. 从安装主机上,验证 Ignition 配置文件是否在 URL 上可用。以下示例获取 bootstrap 节点的 Ignition 配置文件:

    $ curl -k http://<HTTP_server>/bootstrap.ign 1

    输出示例

      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
      0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0{"ignition":{"version":"3.2.0"},"passwd":{"users":[{"name":"core","sshAuthorizedKeys":["ssh-rsa...

    在命令中将 bootstrap.ign 替换为 master.ignworker.ign,以验证 control plane 和计算节点的 Ignition 配置文件是否可用。

  3. 虽然可以从 RHCOS image mirror 页面获取您选择的操作系统实例所需的 RHCOS kernelinitramfsrootfs 文件,但推荐的方法是从 openshift-install 命令的输出中获取 RHCOS 文件的正确版本:

    $ openshift-install coreos print-stream-json | grep -Eo '"https.*(kernel-|initramfs.|rootfs.)\w+(\.img)?"'

    输出示例

    "<url>/art/storage/releases/rhcos-4.13-aarch64/<release>/aarch64/rhcos-<release>-live-kernel-aarch64"
    "<url>/art/storage/releases/rhcos-4.13-aarch64/<release>/aarch64/rhcos-<release>-live-initramfs.aarch64.img"
    "<url>/art/storage/releases/rhcos-4.13-aarch64/<release>/aarch64/rhcos-<release>-live-rootfs.aarch64.img"
    "<url>/art/storage/releases/rhcos-4.13-ppc64le/49.84.202110081256-0/ppc64le/rhcos-<release>-live-kernel-ppc64le"
    "<url>/art/storage/releases/rhcos-4.13-ppc64le/<release>/ppc64le/rhcos-<release>-live-initramfs.ppc64le.img"
    "<url>/art/storage/releases/rhcos-4.13-ppc64le/<release>/ppc64le/rhcos-<release>-live-rootfs.ppc64le.img"
    "<url>/art/storage/releases/rhcos-4.13-s390x/<release>/s390x/rhcos-<release>-live-kernel-s390x"
    "<url>/art/storage/releases/rhcos-4.13-s390x/<release>/s390x/rhcos-<release>-live-initramfs.s390x.img"
    "<url>/art/storage/releases/rhcos-4.13-s390x/<release>/s390x/rhcos-<release>-live-rootfs.s390x.img"
    "<url>/art/storage/releases/rhcos-4.13/<release>/x86_64/rhcos-<release>-live-kernel-x86_64"
    "<url>/art/storage/releases/rhcos-4.13/<release>/x86_64/rhcos-<release>-live-initramfs.x86_64.img"
    "<url>/art/storage/releases/rhcos-4.13/<release>/x86_64/rhcos-<release>-live-rootfs.x86_64.img"

    重要

    RHCOS 工件可能不会随着 OpenShift Container Platform 的每个发行版本而改变。您必须下载最高版本的镜像,其版本号应小于或等于您安装的 OpenShift Container Platform 版本。这个过程只使用下面描述的适当 kernelinitram fs 和 rootfs 工件。此安装类型不支持 RHCOS QCOW2 镜像。

    文件名包含 OpenShift Container Platform 版本号。它们类似以下示例:

    • kernel:rhcos-<version>-live-kernel-<architecture>
    • initramfs: rhcos-<version>-live-initramfs.<architecture>.img
    • rootfs: rhcos-<version>-live-rootfs.<architecture>.img
  4. rootfskernelinitramfs 文件上传到 HTTP 服务器。

    重要

    如果您计划在安装完成后在集群中添加更多计算机器,请不要删除这些文件。

  5. 配置网络引导基础架构,以便在安装 RHCOS 后机器从本地磁盘启动。
  6. 为 RHCOS 镜像配置 PXE 或 iPXE 安装并开始安装。

    为环境修改以下示例菜单条目之一,并验证能否正确访问镜像和 Ignition 文件:

    • 对于 PXE(x86_64)

      DEFAULT pxeboot
      TIMEOUT 20
      PROMPT 0
      LABEL pxeboot
          KERNEL http://<HTTP_server>/rhcos-<version>-live-kernel-<architecture> 1
          APPEND initrd=http://<HTTP_server>/rhcos-<version>-live-initramfs.<architecture>.img coreos.live.rootfs_url=http://<HTTP_server>/rhcos-<version>-live-rootfs.<architecture>.img coreos.inst.install_dev=/dev/sda coreos.inst.ignition_url=http://<HTTP_server>/bootstrap.ign 2 3
      1 1
      指定上传到 HTTP 服务器的 live kernel 文件位置。URL 必须是 HTTP、TFTP 或 FTP;不支持 HTTPS 和 NFS。
      2
      如果您使用多个 NIC,请在 ip 选项中指定一个接口。例如,要在名为 eno1 的 NIC 上使用 DHCP,请设置 ip=eno1:dhcp
      3
      指定上传到 HTTP 服务器的 RHCOS 文件的位置。initrd 参数值是 initramfs 文件的位置,coreos.live.rootfs_url 参数值是 rootfs 文件的位置,coreos.inst.ignition_url 参数值则是 bootstrap Ignition 配置文件的位置。您还可以在 APPEND 行中添加更多内核参数来配置联网或其他引导选项。
      注意

      此配置不会在图形控制台的机器上启用串行控制台访问。要配置不同的控制台,请在 APPEND 行中添加一个或多个 console= 参数。例如,添加 console=tty0 console=ttyS0 以将第一个 PC 串口设置为主控制台,并将图形控制台设置为二级控制台。如需更多信息,请参阅如何在 Red Hat Enterprise Linux 中设置串行终端和/或控制台? 和"启用 PXE 和 ISO 安装的串行控制台"部分。

    • 对于 iPXE (x86_64 + aarch64 ):

      kernel http://<HTTP_server>/rhcos-<version>-live-kernel-<architecture> initrd=main coreos.live.rootfs_url=http://<HTTP_server>/rhcos-<version>-live-rootfs.<architecture>.img coreos.inst.install_dev=/dev/sda coreos.inst.ignition_url=http://<HTTP_server>/bootstrap.ign 1 2
      initrd --name main http://<HTTP_server>/rhcos-<version>-live-initramfs.<architecture>.img 3
      boot
      1
      指定上传到 HTTP 服务器的 RHCOS 文件的位置。kernel 参数值是 kernel 文件的位置,init rd=main 参数用于在 UEFI 系统中引导,coreos.live.rootfs_url 参数值是 rootfs 文件的位置,coreos.inst.ignition_url 参数值则是 bootstrap Ignition 配置文件的位置。
      2
      如果您使用多个 NIC,请在 ip 选项中指定一个接口。例如,要在名为 eno1 的 NIC 上使用 DHCP,请设置 ip=eno1:dhcp
      3
      指定上传到 HTTP 服务器的 initramfs 文件的位置。
      注意

      此配置不会在图形控制台的机器上启用串行控制台访问。要配置不同的控制台,请在 内核参数 中添加一个或多个 console= 参数。例如,添加 console=tty0 console=ttyS0 以将第一个 PC 串口设置为主控制台,并将图形控制台设置为二级控制台。如需更多信息,请参阅如何在 Red Hat Enterprise Linux 中设置串行终端和/或控制台? 和"启用 PXE 和 ISO 安装的串行控制台"部分。

      注意

      要在 aarch64 架构中网络引导 CoreOS 内核,您需要使用启用了 IMAGE_GZIP 选项的 iPXE 构建版本。请参阅 iPXE 中的IMAGE_GZIP 选项

    • 对于 aarch64 中的 PXE(使用 UEFI 和 Grub 作为第二阶段):

      menuentry 'Install CoreOS' {
          linux rhcos-<version>-live-kernel-<architecture>  coreos.live.rootfs_url=http://<HTTP_server>/rhcos-<version>-live-rootfs.<architecture>.img coreos.inst.install_dev=/dev/sda coreos.inst.ignition_url=http://<HTTP_server>/bootstrap.ign 1 2
          initrd rhcos-<version>-live-initramfs.<architecture>.img 3
      }
      1
      指定上传到 HTTP/TFTP 服务器的 RHCOS 文件的位置。kernel 参数值是 TFTP 服务器中的 kernel 文件的位置。coreos.live.rootfs_url 参数值是 rootfs 文件的位置,coreos.inst.ignition_url 参数值是 HTTP 服务器上的 bootstrap Ignition 配置文件的位置。
      2
      如果您使用多个 NIC,请在 ip 选项中指定一个接口。例如,要在名为 eno1 的 NIC 上使用 DHCP,请设置 ip=eno1:dhcp
      3
      指定上传到 TFTP 服务器的 initramfs 文件的位置。
  7. 在机器的控制台上监控 RHCOS 安装的进度。

    重要

    在开始安装 OpenShift Container Platform 之前,确保每个节点中安装成功。观察安装过程可以帮助确定可能会出现 RHCOS 安装问题的原因。

  8. 安装 RHCOS 后,系统会重启。在重启过程中,系统会应用您指定的 Ignition 配置文件。
  9. 检查控制台输出,以验证 Ignition 是否运行。

    示例命令

    Ignition: ran on 2022/03/14 14:48:33 UTC (this boot)
    Ignition: user-provided config was applied

  10. 继续为集群创建机器。

    重要

    此时您必须创建 bootstrap 和 control plane 机器。如果 control plane 机器不可调度,请在安装集群前至少创建两台计算机器。

    如果存在所需的网络、DNS 和负载均衡器基础架构,OpenShift Container Platform bootstrap 过程会在 RHCOS 节点重启后自动启动。

    注意

    RHCOS 节点不包含 core 用户的默认密码。您可以使用可访问 SSH 私钥的用户的身份运行 ssh core@<node>.<cluster_name>.<base_domain > 来访问节点,该私钥与您在 install_config.yaml 文件中指定的公钥配对。运行 RHCOS 的 OpenShift Container Platform 4 集群节点不可变,它依赖于 Operator 来应用集群更改。不建议使用 SSH 访问集群节点。但是,当调查安装问题时,如果 OpenShift Container Platform API 不可用,或者 kubelet 在目标节点上无法正常工作,则调试或灾难恢复可能需要 SSH 访问。

2.11.3. 高级 RHCOS 安装配置

为 OpenShift Container Platform 手动置备 Red Hat Enterprise Linux CoreOS(RHCOS)节点的一个关键优点是能够进行通过默认的 OpenShift Container Platform 安装方法无法进行的配置。本节介绍了您可以使用的一些技术进行配置,其中包括:

  • 将内核参数传递给实时安装程序
  • 从 live 系统手动运行 coreos-installer
  • 自定义实时 ISO 或 PXE 引导镜像

本节详述了与 Red Hat Enterprise Linux CoreOS(RHCOS)手动安装的高级配置相关的内容,如磁盘分区、网络以及使用 Ignition 配置的不同方式相关。

2.11.3.1. 使用高级网络选项进行 PXE 和 ISO 安装

OpenShift Container Platform 节点的网络默认使用 DHCP 来收集所有必要的配置设置。要设置静态 IP 地址或配置特殊设置,如绑定,您可以执行以下操作之一:

  • 引导 live 安装程序时传递特殊内核参数。
  • 使用机器配置将网络文件复制到安装的系统中。
  • 从 live 安装程序 shell 提示符配置网络,然后将这些设置复制到安装的系统上,以便在安装的系统第一次引导时生效。

要配置 PXE 或 iPXE 安装,请使用以下选项之一:

  • 请参阅"高级 RHCOS 安装参考"表。
  • 使用机器配置将网络文件复制到安装的系统中。

要配置 ISO 安装,请使用以下步骤:

流程

  1. 引导 ISO 安装程序.
  2. 在 live 系统 shell 提示符下,使用可用的 RHEL 工具(如 nmclinmtui )为 live 系统配置网络。
  3. 运行 coreos-installer 命令以安装系统,添加 --copy-network 选项来复制网络配置。例如:

    $ sudo coreos-installer install --copy-network \
         --ignition-url=http://host/worker.ign /dev/disk/by-id/scsi-<serial_number>
    重要

    copy-network 选项仅复制在 /etc/NetworkManager/system-connections 下找到的网络配置。特别是,它不会复制系统主机名。

  4. 重启安装的系统。

其他资源

2.11.3.2. 磁盘分区

磁盘分区是在 Red Hat Enterprise Linux CoreOS(RHCOS)安装过程中在 OpenShift Container Platform 集群节点上创建的。特定架构的每个 RHCOS 节点使用相同的分区布局,除非覆盖默认的分区配置。在 RHCOS 安装过程中,根文件系统的大小会增加,以使用目标设备中剩余的可用空间。

重要

在节点上使用自定义分区方案可能会导致 OpenShift Container Platform 在某些节点分区上监控或警报。如果要覆盖默认分区,请参阅 了解 OpenShift 文件系统监控(驱除条件) 以了解有关 OpenShift Container Platform 如何监控主机文件系统的更多信息。

OpenShift Container Platform 监控以下两个文件系统标识符:

  • nodefs,这是包含 /var/lib/kubelet 的文件系统
  • imagefs,这是包含 /var/lib/containers 的文件系统

对于默认分区方案,nodefsimagefs 监控相同的根文件系统 /

要在 OpenShift Container Platform 集群节点上安装 RHCOS 时覆盖默认分区,您必须创建单独的分区。

重要

对于大于 100GB 的磁盘大小,特别是磁盘大小大于 1TB,请创建一个独立的 /var 分区。如需更多信息,请参阅"创建独立 /var 分区"和 红帽知识库文章

您可能想要为容器和容器镜像添加单独的存储分区。例如,通过在独立分区中挂载 /var/lib/containers,kubelet 会单独监控 /var/lib/containers 作为 imagefs 目录,以及 root 文件系统作为 nodefs 目录。

重要

如果您已将磁盘大小调整为托管更大的文件系统,请考虑创建单独的 /var/lib/containers 分区。考虑重新定义具有 xfs 格式的磁盘大小,以减少大量分配组导致的 CPU 时间问题。

2.11.3.2.1. 创建独立 /var 分区

通常,您应该使用在 RHCOS 安装过程中创建的默认磁盘分区。然而,在有些情况下您可能需要为预期增长的目录创建独立分区。

OpenShift Container Platform 支持添加单个分区将存储附加到 /var 目录或 /var 的子目录中。例如:

  • /var/lib/containers :保存随着系统中添加更多镜像和容器而增长的容器相关内容。
  • /var/lib/etcd :保存您可能希望独立保留的数据,比如 etcd 存储的性能优化。
  • /var :保存您可能希望独立保留的数据,以满足审计等目的。

    重要

    对于大于 100GB 的磁盘大小,特别是磁盘大小大于 1TB,请创建一个独立的 /var 分区。

通过单独存储 /var 目录的内容,可以更轻松地根据需要为区域扩展存储,并在以后重新安装 OpenShift Container Platform,并保持该数据的完整性。使用这个方法,您不必再次拉取所有容器,在更新系统时也不必复制大量日志文件。

将独立分区用于 /var 目录或 /var 的子目录也会防止分区目录中的数据增加填充根文件系统。

以下流程通过添加机器配置清单来设置独立的 /var 分区,该清单会在安装准备阶段封装到节点类型的 Ignition 配置文件中。

流程

  1. 在安装主机上,切换到包含 OpenShift Container Platform 安装程序的目录,并为集群生成 Kubernetes 清单:

    $ openshift-install create manifests --dir <installation_directory>
  2. 创建用于配置额外分区的 Butane 配置。例如,将文件命名为 $HOME/clusterconfig/98-var-partition.bu,将磁盘设备名称改为 worker 系统上存储设备的名称,并根据情况设置存储大小。这个示例将 /var 目录放在一个单独的分区中:

    variant: openshift
    version: 4.13.0
    metadata:
      labels:
        machineconfiguration.openshift.io/role: worker
      name: 98-var-partition
    storage:
      disks:
      - device: /dev/disk/by-id/<device_name> 1
        partitions:
        - label: var
          start_mib: <partition_start_offset> 2
          size_mib: <partition_size> 3
          number: 5
      filesystems:
        - device: /dev/disk/by-partlabel/var
          path: /var
          format: xfs
          mount_options: [defaults, prjquota] 4
          with_mount_unit: true
    1
    要分区的磁盘的存储设备名称。
    2
    当在引导磁盘中添加数据分区时,推荐最少使用偏移值 25000 兆字节。root 文件系统会自动调整大小以填充所有可用空间(最多到指定的偏移值)。如果没有指定偏移值,或者指定的值小于推荐的最小值,则生成的 root 文件系统会太小,而在以后进行的 RHCOS 重新安装可能会覆盖数据分区的开始部分。
    3
    以兆字节为单位的数据分区大小。
    4
    对于用于容器存储的文件系统,必须启用 prjquota 挂载选项。
    注意

    在创建单独的 /var 分区时,如果不同的实例类型没有相同的设备名称,则无法将不同的实例类型用于计算节点。

  3. 从 Butane 配置创建一个清单,并将它保存到 clusterconfig/openshift 目录中。例如,运行以下命令:

    $ butane $HOME/clusterconfig/98-var-partition.bu -o $HOME/clusterconfig/openshift/98-var-partition.yaml
  4. 创建 Ignition 配置文件:

    $ openshift-install create ignition-configs --dir <installation_directory> 1
    1
    对于 <installation_directory>,请指定相同的安装目录。

    为安装目录中的 bootstrap、control plane 和计算节点创建 Ignition 配置文件:

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

    <installation_directory>/manifest<installation_directory>/openshift 目录中的文件被嵌套到 Ignition 配置文件中,包括包含 98-var-partition 自定义 MachineConfig 对象的文件。

后续步骤

  • 您可以通过在 RHCOS 安装过程中引用 Ignition 配置文件来应用自定义磁盘分区。
2.11.3.2.2. 保留现有分区

对于 ISO 安装,您可以在 coreos-installer 命令中添加可让安装程序维护一个或多个现有分区的选项。对于 PXE 安装,您可以在 APPEND 参数中添加 coreos.inst.* 选项来保留分区。

保存的分区可能是来自现有 OpenShift Container Platform 系统的数据分区。您可以通过分区标签或编号识别您要保留的磁盘分区。

注意

如果您保存了现有分区,且这些分区没有为 RHCOS 留下足够空间,则安装将失败,而不影响保存的分区。

在 ISO 安装过程中保留现有分区

这个示例保留分区标签以 数据开头的任何分区(data *):

# coreos-installer install --ignition-url http://10.0.2.2:8080/user.ign \
        --save-partlabel 'data*' /dev/disk/by-id/scsi-<serial_number>

以下示例演示了在运行 coreos-installer 时要保留磁盘上的第 6 个分区:

# coreos-installer install --ignition-url http://10.0.2.2:8080/user.ign \
        --save-partindex 6 /dev/disk/by-id/scsi-<serial_number>

这个示例保留分区 5 及更高分区:

# coreos-installer install --ignition-url http://10.0.2.2:8080/user.ign
        --save-partindex 5- /dev/disk/by-id/scsi-<serial_number>

在前面已保存分区的示例中,coreos-installer 会立即重新创建分区。

在 PXE 安装过程中保留现有分区

这个 APPEND 选项保留分区标签以 'data'('data*')开头的任何分区:

coreos.inst.save_partlabel=data*

这个 APPEND 选项保留分区 5 及更高分区:

coreos.inst.save_partindex=5-

这个 APPEND 选项保留分区 6:

coreos.inst.save_partindex=6

2.11.3.3. 识别 Ignition 配置

在进行 RHCOS 手动安装时,您可以提供两种 Ignition 配置类型,它们有不同的原因:

  • 永久安装 Ignition 配置 :每个手动 RHCOS 安装都需要传递 openshift-installer 生成的 Ignition 配置文件之一,如 bootstrap.ignmaster.ignworker.ign,才能进行安装。

    重要

    不建议直接修改这些 Ignition 配置文件。您可以更新嵌套到 Ignition 配置文件中的清单文件,如上一节示例中所述。

    对于 PXE 安装,您可以使用 coreos.inst.ignition_url= 选项在 APPEND 行上传递 Ignition 配置。对于 ISO 安装,在 ISO 引导至 shell 提示符后,您可以使用带有 --ignition-url= 选项的 coreos-installer 命令行。在这两种情况下,只支持 HTTP 和 HTTPS 协议。

  • 实时安装 Ignition 配置 :可使用 coreos-installer customize 子命令及其各种选项来创建此类型。使用此方法,Ignition 配置会传递到 live 安装介质,在引导时立即运行,并在 RHCOS 系统安装到磁盘之前或之后执行设置任务。这个方法只用于必须执行一次且之后不能再次应用的任务,比如不能使用机器配置进行的高级分区。

    对于 PXE 或 ISO 引导,您可以创建 Ignition 配置,APP END ignition.config.url= 选项来标识 Ignition 配置的位置。您还需要附加 ignition.firstboot ignition.platform.id=metalignition.config.url 选项。

2.11.3.4. 默认控制台配置

从 OpenShift Container Platform 4.13 引导镜像安装的 Red Hat Enterprise Linux CoreOS (RHCOS) 节点使用默认控制台,旨在识别大多数虚拟化和裸机设置。不同的云和虚拟化平台可能会根据所选的架构使用不同的默认设置。裸机安装使用内核默认设置,这通常意味着图形控制台是主控制台,并且禁用串行控制台。

默认控制台可能与特定的硬件配置不匹配,或者您可能具有需要调整默认控制台的特定需求。例如:

  • 您希望访问控制台上的紧急 shell 进行调试。
  • 您的云平台没有提供到图形控制台的互动访问,但提供了一个串行控制台。
  • 您需要启用多个控制台。

控制台配置继承自引导镜像。这意味着现有集群中的新节点不受默认控制台的影响。

您可以使用以下方法为裸机安装配置控制台:

  • 在命令行中手动使用 coreos-installer
  • 使用带有 --dest-console 选项的 coreos-installer iso customizecoreos-installer pxe customize 子命令,以创建可自动执行进程的自定义镜像。
注意

对于高级自定义,请使用 coreos-installer isocoreos-installer pxe 子命令而不是内核参数来执行控制台配置。

2.11.3.5. 为 PXE 和 ISO 安装启用串行控制台

默认情况下,Red Hat Enterprise Linux CoreOS (RHCOS) 串行控制台被禁用,所有输出都会写入图形控制台。您可以为 ISO 安装启用串行控制台并重新配置引导装载程序,以便输出同时发送到串行控制台和图形控制台。

流程

  1. 引导 ISO 安装程序.
  2. 运行 coreos-installer 命令来安装系统,添加 --console 选项一次来指定图形控制台,然后第二次指定串行控制台:

    $ coreos-installer install \
      --console=tty0 \1
      --console=ttyS0,<options> \2
      --ignition-url=http://host/worker.ign /dev/disk/by-id/scsi-<serial_number>
    1
    所需的二级控制台。在这种情况下,是图形控制台。省略这个选项将禁用图形控制台。
    2
    所需的主控制台。在这种情况下,是串行控制台。options 字段定义 baud 速率和其他设置。此字段的一个常见值为 11520n8。如果没有提供选项,则使用默认内核值 9600n8。有关这个选项格式的更多信息,请参阅 Linux 内核串口控制台 文档。
  3. 重启安装的系统。

    注意

    可以使用 coreos-installer install --append-karg 选项来获取类似的结果,并使用 console= 指定控制台。但是,这只会为内核设置控制台,而不为引导装载程序设置控制台。

要配置 PXE 安装,请确保省略 coreos.inst.install_dev 内核命令行选项,并使用 shell 提示符使用上述 ISO 安装过程手动运行 coreos-installer

2.11.3.6. 自定义 live RHCOS ISO 或 PXE 安装

您可以通过将 Ignition 配置文件直接注入镜像中来使用 live ISO 镜像或 PXE 环境来安装 RHCOS。这会创建一个自定义镜像,供您用来置备系统。

对于 ISO 镜像,此操作的机制是 coreos-installer iso custom 子命令,它使用您的配置修改 .iso 文件。同样,PXE 环境的机制是 coreos-installer pxe customize 子命令,它会创建一个包含自定义的新 initramfs 文件。

custom 子命令是一个通用工具,也可以嵌入其他类型的自定义。以下任务是一些更常见的自定义示例:

  • 当公司安全策略需要使用时,注入自定义的 CA 证书。
  • 在不需要内核参数的情况下配置网络设置。
  • 嵌入任意预安装和安装后脚本或二进制文件。

2.11.3.7. 自定义 live RHCOS ISO 镜像

您可以使用 coreos-installer iso custom 子命令直接自定义 live RHCOS ISO 镜像。当您引导 ISO 镜像时,会自动应用自定义。

您可以使用此功能配置 ISO 镜像来自动安装 RHCOS。

流程

  1. coreos-installer 镜像镜像页面下载 coreos-installer 二进制文件。
  2. 从 RHCOS 镜像镜像页面和 Ignition 配置文件检索 RHCOS ISO 镜像,然后运行以下命令来直接将 Ignition 配置注入 ISO 镜像:

    $ coreos-installer iso customize rhcos-<version>-live.x86_64.iso \
        --dest-ignition bootstrap.ign \ 1
        --dest-device /dev/disk/by-id/scsi-<serial_number> 2
    1
    openshift-installer 安装程序生成的 Ignition 配置文件。
    2
    当您指定这个选项时,ISO 镜像会自动运行安装。否则,镜像为安装配置,但不会自动安装,除非您指定了 coreos.inst.install_dev 内核参数。
  3. 可选: 要删除 ISO 镜像自定义并将镜像返回到其 pristine 状态,请运行:

    $ coreos-installer iso reset rhcos-<version>-live.x86_64.iso

    现在,您可以重新自定义 live ISO 镜像,或者在其 pristine 状态中使用它。

应用您的自定义会影响每个后续 RHCOS 引导。

2.11.3.7.1. 修改实时安装 ISO 镜像以启用串行控制台

在使用 OpenShift Container Platform 4.12 及更高版本安装的集群中,串行控制台默认被禁用,所有输出都会写入图形控制台。您可以按照以下流程启用串行控制台。

流程

  1. coreos-installer 镜像镜像页面下载 coreos-installer 二进制文件。
  2. RHCOS image mirror 页中获取 RHCOS ISO 镜像,并运行以下命令来自定义 ISO 镜像,使串行控制台能够接收输出:

    $ coreos-installer iso customize rhcos-<version>-live.x86_64.iso \
      --dest-ignition <path> \1
      --dest-console tty0 \2
      --dest-console ttyS0,<options> \3
      --dest-device /dev/disk/by-id/scsi-<serial_number> 4
    1
    要安装 Ignition 配置的位置。
    2
    所需的二级控制台。在这种情况下,是图形控制台。省略这个选项将禁用图形控制台。
    3
    所需的主控制台。在这种情况下,是串行控制台。options 字段定义 baud 速率和其他设置。此字段的一个常见值为 115200n8。如果没有提供选项,则使用默认内核值 9600n8。有关这个选项格式的更多信息,请参阅 Linux 内核串口控制台文档。
    4
    要安装到的指定磁盘。如果省略这个选项,ISO 镜像会自动运行安装程序,除非还指定了 coreos.inst.install_dev 内核参数。
    注意

    --dest-console 选项会影响安装的系统,而不是实时 ISO 系统。要修改 live ISO 系统的控制台,请使用 --live-karg-append 选项并使用 console= 指定控制台。

    自定义会被应用,并影响每个后续 ISO 镜像引导。

  3. 可选: 要删除 ISO 镜像自定义并将镜像返回到其原始状态,请运行以下命令:

    $ coreos-installer iso reset rhcos-<version>-live.x86_64.iso

    现在,您可以重新自定义 live ISO 镜像,或者在其原始状态中使用它。

2.11.3.7.2. 修改实时安装 ISO 镜像以使用自定义证书颁发机构

您可以使用 custom 子命令的 --ignition-ca 标志向 Ignition 提供证书颁发机构(CA)证书。您可以在安装过程中使用 CA 证书,并在置备安装的系统时使用 CA 证书。

注意

自定义 CA 证书会影响 Ignition 获取远程资源的方式,但它们不会影响安装到系统中的证书。

流程

  1. coreos-installer 镜像镜像页面下载 coreos-installer 二进制文件。
  2. 从 RHCOS 镜像镜像页面检索 RHCOS ISO 镜像,并运行以下命令来自定义 ISO 镜像以用于自定义 CA:

    $ coreos-installer iso customize rhcos-<version>-live.x86_64.iso --ignition-ca cert.pem
重要

coreos.inst.ignition_url 内核参数无法使用 --ignition-ca 标志。您必须使用 --dest-ignition 标志为每个集群创建自定义镜像。

应用自定义 CA 证书会影响每个后续 RHCOS 引导。

2.11.3.7.3. 使用自定义网络设置修改实时安装 ISO 镜像

您可以将 NetworkManager 密钥文件嵌入到 live ISO 镜像中,并使用 customize 子命令的 --network-keyfile 标志将其传递给安装的系统。

警告

在创建连接配置文件时,您必须在连接配置文件的文件名中使用 .nmconnection 文件名扩展名。如果不使用 .nmconnection 文件名扩展,集群会将连接配置集应用到 live 环境,但它不会在集群首次启动节点时应用配置,从而导致无法正常工作的设置。

流程

  1. coreos-installer 镜像镜像页面下载 coreos-installer 二进制文件。
  2. 为绑定接口创建连接配置集。例如,在本地目录中创建 bond0.nmconnection 文件,其内容如下:

    [connection]
    id=bond0
    type=bond
    interface-name=bond0
    multi-connect=1
    
    [bond]
    miimon=100
    mode=active-backup
    
    [ipv4]
    method=auto
    
    [ipv6]
    method=auto
  3. 为二级接口创建连接配置集,以添加到绑定中。例如,在本地目录中创建 bond0-proxy-em1.nmconnection 文件,其内容如下:

    [connection]
    id=em1
    type=ethernet
    interface-name=em1
    master=bond0
    multi-connect=1
    slave-type=bond
  4. 为二级接口创建连接配置集,以添加到绑定中。例如,在本地目录中创建 bond0-proxy-em2.nmconnection 文件,其内容如下:

    [connection]
    id=em2
    type=ethernet
    interface-name=em2
    master=bond0
    multi-connect=1
    slave-type=bond
  5. RHCOS 镜像镜像页面检索 RHCOS ISO 镜像,并运行以下命令来使用您配置网络自定义 ISO 镜像:

    $ coreos-installer iso customize rhcos-<version>-live.x86_64.iso \
        --network-keyfile bond0.nmconnection \
        --network-keyfile bond0-proxy-em1.nmconnection \
        --network-keyfile bond0-proxy-em2.nmconnection

    网络设置应用于实时系统,并传输到目标系统。

2.11.3.8. 自定义 live RHCOS PXE 环境

您可以使用 coreos-installer pxe customize 子命令直接自定义 live RHCOS PXE 环境。当您引导 PXE 环境时,会自动应用自定义。

您可以使用此功能配置 PXE 环境来自动安装 RHCOS。

流程

  1. coreos-installer 镜像镜像页面下载 coreos-installer 二进制文件。
  2. RHCOS 镜像镜像页面和 Ignition 配置文件获取 RHCOS kernel, initramfsrootfs 文件,然后运行以下命令创建一个包含 Ignition 配置中的自定义的新 initramfs 文件:

    $ coreos-installer pxe customize rhcos-<version>-live-initramfs.x86_64.img \
        --dest-ignition bootstrap.ign \ 1
        --dest-device /dev/disk/by-id/scsi-<serial_number> \ 2
        -o rhcos-<version>-custom-initramfs.x86_64.img 3
    1
    openshift-installer 生成的 Ignition 配置文件。
    2
    当您指定这个选项时,PXE 环境会自动运行安装。否则,为安装配置了镜像,除非指定了 coreos.inst.install_dev 内核参数,否则不会自动这样做。
    3
    在 PXE 配置中使用自定义 initramfs 文件。添加 ignition.firstbootignition.platform.id=metal 内核参数(如果它们尚不存在)。

应用您的自定义会影响每个后续 RHCOS 引导。

2.11.3.8.1. 修改实时安装 PXE 环境以启用串行控制台。

在使用 OpenShift Container Platform 4.12 及更高版本安装的集群中,串行控制台默认被禁用,所有输出都会写入图形控制台。您可以按照以下流程启用串行控制台。

流程

  1. coreos-installer 镜像镜像页面下载 coreos-installer 二进制文件。
  2. RHCOS image mirror 页面获取 kernel, initramfsrootfs 文件,然后运行以下命令来创建新的自定义 initramfs 文件,以便串行控制台接收输出:

    $ coreos-installer pxe customize rhcos-<version>-live-initramfs.x86_64.img \
      --dest-ignition <path> \1
      --dest-console tty0 \2
      --dest-console ttyS0,<options> \3
      --dest-device /dev/disk/by-id/scsi-<serial_number> \4
      -o rhcos-<version>-custom-initramfs.x86_64.img 5
    1
    要安装 Ignition 配置的位置。
    2
    所需的二级控制台。在这种情况下,是图形控制台。省略这个选项将禁用图形控制台。
    3
    所需的主控制台。在这种情况下,是串行控制台。options 字段定义 baud 速率和其他设置。此字段的一个常见值为 115200n8。如果没有提供选项,则使用默认内核值 9600n8。有关这个选项格式的更多信息,请参阅 Linux 内核串口控制台文档。
    4
    要安装到的指定磁盘。如果省略这个选项,PXE 环境会自动运行安装程序,除非还指定了 coreos.inst.install_dev 内核参数。
    5
    在 PXE 配置中使用自定义 initramfs 文件。添加 ignition.firstbootignition.platform.id=metal 内核参数(如果它们尚不存在)。

    自定义会被应用,并影响 PXE 环境的每个后续引导。

2.11.3.8.2. 修改实时安装 PXE 环境以使用自定义证书颁发机构

您可以使用 custom 子命令的 --ignition-ca 标志向 Ignition 提供证书颁发机构(CA)证书。您可以在安装过程中使用 CA 证书,并在置备安装的系统时使用 CA 证书。

注意

自定义 CA 证书会影响 Ignition 获取远程资源的方式,但它们不会影响安装到系统中的证书。

流程

  1. coreos-installer 镜像镜像页面下载 coreos-installer 二进制文件。
  2. RHCOS 镜像镜像页面获取 RHCOS kernelinitramfsrootfs 文件,并运行以下命令来创建一个新的自定义 initramfs 文件以用于自定义 CA:

    $ coreos-installer pxe customize rhcos-<version>-live-initramfs.x86_64.img \
        --ignition-ca cert.pem \
        -o rhcos-<version>-custom-initramfs.x86_64.img
  3. 在 PXE 配置中使用自定义 initramfs 文件。添加 ignition.firstbootignition.platform.id=metal 内核参数(如果它们尚不存在)。
重要

coreos.inst.ignition_url 内核参数无法使用 --ignition-ca 标志。您必须使用 --dest-ignition 标志为每个集群创建自定义镜像。

应用自定义 CA 证书会影响每个后续 RHCOS 引导。

2.11.3.8.3. 使用自定义网络设置修改实时安装 PXE 环境

您可以将 NetworkManager 密钥文件嵌入到 live PXE 环境中,并使用 customize 子命令的 --network-keyfile 标志将其传递给安装的系统。

警告

在创建连接配置文件时,您必须在连接配置文件的文件名中使用 .nmconnection 文件名扩展名。如果不使用 .nmconnection 文件名扩展,集群会将连接配置集应用到 live 环境,但它不会在集群首次启动节点时应用配置,从而导致无法正常工作的设置。

流程

  1. coreos-installer 镜像镜像页面下载 coreos-installer 二进制文件。
  2. 为绑定接口创建连接配置集。例如,在本地目录中创建 bond0.nmconnection 文件,其内容如下:

    [connection]
    id=bond0
    type=bond
    interface-name=bond0
    multi-connect=1
    
    [bond]
    miimon=100
    mode=active-backup
    
    [ipv4]
    method=auto
    
    [ipv6]
    method=auto
  3. 为二级接口创建连接配置集,以添加到绑定中。例如,在本地目录中创建 bond0-proxy-em1.nmconnection 文件,其内容如下:

    [connection]
    id=em1
    type=ethernet
    interface-name=em1
    master=bond0
    multi-connect=1
    slave-type=bond
  4. 为二级接口创建连接配置集,以添加到绑定中。例如,在本地目录中创建 bond0-proxy-em2.nmconnection 文件,其内容如下:

    [connection]
    id=em2
    type=ethernet
    interface-name=em2
    master=bond0
    multi-connect=1
    slave-type=bond
  5. RHCOS 镜像镜像页面获取 RHCOS kernelinitramfsrootfs 文件,并运行以下命令来创建一个新的自定义 initramfs 文件,它包括您的配置网络:

    $ coreos-installer pxe customize rhcos-<version>-live-initramfs.x86_64.img \
        --network-keyfile bond0.nmconnection \
        --network-keyfile bond0-proxy-em1.nmconnection \
        --network-keyfile bond0-proxy-em2.nmconnection \
        -o rhcos-<version>-custom-initramfs.x86_64.img
  6. 在 PXE 配置中使用自定义 initramfs 文件。添加 ignition.firstbootignition.platform.id=metal 内核参数(如果它们尚不存在)。

    网络设置应用于实时系统,并传输到目标系统。

2.11.3.9. 高级 RHCOS 安装参考

本节演示了网络配置和其他高级选项,允许您修改 Red Hat Enterprise Linux CoreOS(RHCOS)手动安装过程。下表描述了您可以用于 RHCOS live 安装程序和 coreos-installer 命令的内核参数和命令行选项。

2.11.3.9.1. ISO 安装的网络和绑定选项

如果从 ISO 镜像安装 RHCOS,您可以在引导镜像时手动添加内核参数,以便为节点配置网络。如果没有指定网络参数,当 RHCOS 检测到需要网络来获取 Ignition 配置文件时,在 initramfs 中激活 DHCP。

重要

在手动添加网络参数时,还必须添加 rd.neednet=1 内核参数,以便在 initramfs 中启动网络。

以下信息提供了在 RHCOS 节点上为 ISO 安装配置网络和绑定的示例。示例描述了如何使用 ip=、name server =bond= 内核参数。

注意

添加内核参数时顺序非常重要: ip=、name server=,然后 bond=

网络选项在系统引导过程中传递给 dracut 工具。有关 dracut 支持的网络选项的更多信息,请参阅 dracut.cmdline 手册页

以下示例是 ISO 安装的网络选项。

配置 DHCP 或静态 IP 地址

要配置 IP 地址,可使用 DHCP(ip=dhcp)或设置单独的静态 IP 地址(ip=<host_ip>)。如果设置静态 IP,则必须在每个节点上识别 DNS 服务器 IP 地址(名称服务器=<dns_ip>)。以下示例集:

  • 节点的 IP 地址为 10.10.10.2
  • 网关地址为 10.10.10.254
  • 子网掩码为 255.255.255.0
  • core0.example.com 的主机名
  • DNS 服务器地址为 4.4.4.41
  • 自动配置值为 none。当以静态方式配置 IP 网络时,不需要自动配置。
ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:enp1s0:none
nameserver=4.4.4.41
注意

当您使用 DHCP 为 RHCOS 机器配置 IP 寻址时,机器还通过 DHCP 获取 DNS 服务器信息。对于基于 DHCP 的部署,您可以通过 DHCP 服务器配置定义 RHCOS 节点使用的 DNS 服务器地址。

配置没有静态主机名的 IP 地址

您可以在不分配静态主机名的情况下配置 IP 地址。如果用户没有设置静态主机名,则会提取并通过反向 DNS 查找自动设置。要在没有静态主机名的情况下配置 IP 地址,请参考以下示例:

  • 节点的 IP 地址为 10.10.10.2
  • 网关地址为 10.10.10.254
  • 子网掩码为 255.255.255.0
  • DNS 服务器地址为 4.4.4.41
  • 自动配置值为 none。当以静态方式配置 IP 网络时,不需要自动配置。
ip=10.10.10.2::10.10.10.254:255.255.255.0::enp1s0:none
nameserver=4.4.4.41
指定多个网络接口

您可以通过设置多个 ip= 条目来指定多个网络接口。

ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:enp1s0:none
ip=10.10.10.3::10.10.10.254:255.255.255.0:core0.example.com:enp2s0:none
配置默认网关和路由

可选:您可以通过设置 a rd.route= 值来配置到额外网络的路由。

注意

当您配置一个或多个网络时,需要一个默认网关。如果额外网络网关与主要网络网关不同,则默认网关必须是主要网络网关。

  • 运行以下命令来配置默认网关:

    ip=::10.10.10.254::::
  • 输入以下命令为额外网络配置路由:

    rd.route=20.20.20.0/24:20.20.20.254:enp2s0
在单个接口中禁用 DHCP

您可以在单一接口中禁用 DHCP,例如当有两个或者多个网络接口时,且只有一个接口被使用。在示例中,enp1s0 接口具有一个静态网络配置,而 enp2s0 禁用了 DHCP,不使用它:

ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:enp1s0:none
ip=::::core0.example.com:enp2s0:none
合并 DHCP 和静态 IP 配置

您可以将系统上的 DHCP 和静态 IP 配置与多个网络接口合并,例如:

ip=enp1s0:dhcp
ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:enp2s0:none
在独立接口上配置 VLAN

可选: 您可以使用 vlan= 参数在单个接口上配置 VLAN。

  • 要在网络接口中配置 VLAN 并使用静态 IP 地址,请运行以下命令:

    ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:enp2s0.100:none
    vlan=enp2s0.100:enp2s0
  • 要在网络接口中配置 VLAN 并使用 DHCP,请运行以下命令:

    ip=enp2s0.100:dhcp
    vlan=enp2s0.100:enp2s0
提供多个 DNS 服务器

您可以通过为每个服务器添加一个 nameserver= 条目来提供多个 DNS 服务器,例如

nameserver=1.1.1.1
nameserver=8.8.8.8
将多个网络接口绑定到一个接口

可选: 您可以使用 bond= 选项将多个网络接口绑定到一个接口。请参见以下示例:

  • 配置绑定接口的语法为: bond=<name>[:<network_interfaces>][:options]

    <name> 是绑定设备名称 (bond0)、<network_interfaces> 代表以逗号分隔的物理(以太网)接口列表(em1,em2),options 是用逗号分开的绑定选项列表。输入 modinfo bonding 查看可用选项。

  • 当使用 bond= 创建绑定接口时,您必须指定如何分配 IP 地址以及绑定接口的其他信息。

    • 要将绑定接口配置为使用 DHCP,请将绑定的 IP 地址设置为 dhcp。例如:

      bond=bond0:em1,em2:mode=active-backup
      ip=bond0:dhcp
    • 要将绑定接口配置为使用静态 IP 地址,请输入您需要的特定 IP 地址和相关信息。例如:

      bond=bond0:em1,em2:mode=active-backup
      ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:bond0:none
将多个 SR-IOV 网络接口绑定到双端口 NIC 接口
重要

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

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

可选: 您可以使用 bond= 选项将多个 SR-IOV 网络接口绑定到双端口 NIC 接口。

在每个节点上,您必须执行以下任务:

  1. 按照管理 SR-IOV 设备中的指导创建 SR-IOV 虚拟功能(VF)。按照"将 SR-IOV 网络设备附加到虚拟机"部分中的步骤操作。
  2. 创建绑定,将所需的 VF 附加到绑定,并根据配置网络绑定的指导设置绑定链接状态。按照任何描述的步骤创建绑定。

以下示例演示了您必须使用的语法:

  • 配置绑定接口的语法为:bond=<name>[:<network_interfaces>][:options]

    <name> 是绑定设备名称 (bond0)、<network_interfaces> 由内核中已知的名称来代表虚拟功能(VF),并显示在 ip link 命令的输出中 (eno1f0,eno2f0),options 是以逗号分隔的绑定选项列表。输入 modinfo bonding 查看可用选项。

  • 当使用 bond= 创建绑定接口时,您必须指定如何分配 IP 地址以及绑定接口的其他信息。

    • 要将绑定接口配置为使用 DHCP,请将绑定的 IP 地址设置为 dhcp。例如:

      bond=bond0:eno1f0,eno2f0:mode=active-backup
      ip=bond0:dhcp
    • 要将绑定接口配置为使用静态 IP 地址,请输入您需要的特定 IP 地址和相关信息。例如:

      bond=bond0:eno1f0,eno2f0:mode=active-backup
      ip=10.10.10.2::10.10.10.254:255.255.255.0:core0.example.com:bond0:none
使用网络团队

可选: 您可以使用 team= 参数来将网络团队用作绑定的替代选择:

  • 配置组接口的语法为: team=name[:network_interfaces]

    name 是组设备名称(team0),network_interfaces 代表以逗号分隔的物理(以太网)接口(em1、em2)列表。

注意

当 RHCOS 切换到即将推出的 RHEL 版本时,团队(team)功能被计划弃用。如需更多信息,请参阅红帽知识库文章

使用以下示例配置网络团队:

team=team0:em1,em2
ip=team0:dhcp
2.11.3.9.2. ISO 和 PXE 安装的 coreos-installer 选项

从 ISO 镜像引导 RHCOS live 环境后,您可以通过 在命令提示符下运行 coreos-installer install <options> <device > 来安装 RHCOS。

下表显示了您可以传递给 coreos-installer 命令的子命令、选项和参数。

表 2.12. coreos-installer 子命令、命令行选项和参数

coreos-installer install 子命令

子命令

描述

$ coreos-installer install <options> <device>

在 ISO 镜像中嵌入 Ignition 配置。

coreos-installer install 子命令选项

选项

描述

-u, --image-url <url>

手动指定镜像 URL。

-f,--image-file <path>

手动指定本地镜像文件。用于调试。

-i, --ignition-file <path>

从文件中嵌入 Ignition 配置。

-i,--ignition-url <URL>

从 URL 嵌入 Ignition 配置。

--ignition-hash <digest>

Ignition 配置 的 type-value 的摘要值。

-p, --platform <name>

覆盖已安装系统的 Ignition 平台 ID。

--console <spec>

为安装的系统设置内核和引导装载程序控制台。有关 <spec> 格式的更多信息,请参阅 Linux 内核串口控制台文档。

--append-karg <arg>…​

将默认内核参数附加到安装的系统中。

--delete-karg <arg>…​

从安装的系统中删除默认内核参数。

-n, --copy-network

从安装环境中复制网络配置。

重要

copy-network 选项仅复制在 /etc/NetworkManager/system-connections 下找到的网络配置。特别是,它不会复制系统主机名。

--network-dir <path>

用于 -n。默认为 /etc/NetworkManager/system-connections/

--save-partlabel <lx>..

使用这个标签 glob 保存分区。

--save-partindex <id>…​

使用这个数值或范围保存分区。

--insecure

跳过 RHCOS 镜像签名验证。

--insecure-ignition

允许没有 HTTPS 或 hash 的 Ignition URL。

--architecture <name>

目标 CPU 架构.有效值为 x86_64aarch64

--preserve-on-error

出错时不要清除分区表。

-h,--help

打印帮助信息.

coreos-installer install 子命令参数

参数

描述

<device>

目标设备.

coreos-installer ISO 子命令

子命令

描述

$ coreos-installer iso customize <options> <ISO_image>

自定义 RHCOS live ISO 镜像。

coreos-installer iso reset <options> <ISO_image>

将 RHCOS live ISO 镜像恢复到默认设置。

coreos-installer iso ignition remove <options> <ISO_image>

从 ISO 镜像中删除嵌入的 Ignition 配置。

coreos-installer ISO customize 子命令选项

选项

描述

--dest-ignition <path>

将指定的 Ignition 配置文件合并到目标系统的新配置片段中。

--dest-console <spec>

为目标系统指定内核和引导装载程序控制台。

--dest-device <path>

安装并覆盖指定的目标设备。

--dest-karg-append <arg>

为每个目标系统引导添加一个内核参数。

--dest-karg-delete <arg>

从目标系统的每个引导中删除内核参数。

--network-keyfile <path>

使用指定的 NetworkManager 密钥文件进行实时和目标系统配置网络。

--ignition-ca <path>

指定要被 Ignition 信任的额外 TLS 证书颁发机构。

--pre-install <path>

在安装之前运行指定的脚本。

--post-install <path>

安装后运行指定的脚本。

--installer-config <path>

应用指定的安装程序配置文件。

--live-ignition <path>

将指定的 Ignition 配置文件合并到实时环境的新配置片段中。

--live-karg-append <arg>

为每个实时环境引导添加一个内核参数。

--live-karg-delete <arg>

从实时环境每次引导时删除内核参数。

--live-karg-replace <k=o=n>

在每次启动 live 环境时替换内核参数,格式为 key=old=new

-f,--force

覆盖现有的 Ignition 配置。

-o,--output <path>

将 ISO 写入到新的输出文件。

-h,--help

打印帮助信息.

coreos-installer PXE 子命令

子命令

描述

请注意,并非所有子命令都接受所有这些选项。

coreos-installer pxe customize <options> <path>

自定义 RHCOS live PXE 引导配置。

coreos-installer pxe ignition wrap <options>

在镜像中嵌套 Ignition 配置。

coreos-installer pxe ignition unwrap <options> <image_name>

在镜像中显示嵌套的 Ignition 配置。

coreos-installer PXE customize 子命令选项

选项

描述

请注意,并非所有子命令都接受所有这些选项。

--dest-ignition <path>

将指定的 Ignition 配置文件合并到目标系统的新配置片段中。

--dest-console <spec>

为目标系统指定内核和引导装载程序控制台。

--dest-device <path>

安装并覆盖指定的目标设备。

--network-keyfile <path>

使用指定的 NetworkManager 密钥文件进行实时和目标系统配置网络。

--ignition-ca <path>

指定要被 Ignition 信任的额外 TLS 证书颁发机构。

--pre-install <path>

在安装之前运行指定的脚本。

post-install <path>

安装后运行指定的脚本。

--installer-config <path>

应用指定的安装程序配置文件。

--live-ignition <path>

将指定的 Ignition 配置文件合并到实时环境的新配置片段中。

-o, --output <path>

将 initramfs 写入一个新输出文件。

注意

PXE 环境需要这个选项。

-h,--help

打印帮助信息.

2.11.3.9.3. coreos.inst 引导选项用于 ISO 或 PXE 安装

您可以通过将 coreos.inst boot 参数传递给 RHCOS live 安装程序,在引导时自动调用 coreos-installer 选项。这些是在标准引导参数之外提供的。

  • 对于 ISO 安装,可以通过在启动加载器菜单中中断自动引导来添加 coreos.inst 选项。您可以在突出显示 RHEL CoreOS(Live) 菜单选项时按 TAB 来中断自动引导。
  • 对于 PXE 或 iPXE 安装,在引导 RHCOS live 安装程序前,coreos.inst 选项必须添加到 APPEND 行。

下表显示了用于 ISO 和 PXE 安装的 RHCOS live 安装程序 coreos.inst 引导选项。

表 2.13. coreos.inst 引导选项
参数描述

coreos.inst.install_dev

必需。要安装到的系统中的块设备。建议您使用完整路径,如 /dev/sda,但 允许使用

coreos.inst.ignition_url

可选:嵌入到安装的系统中的 Ignition 配置的 URL。如果没有指定 URL,则不会嵌入 Ignition 配置。仅支持 HTTP 和 HTTPS 协议。

coreos.inst.save_partlabel

可选:在安装过程中要保留的分区分离标签。允许使用 glob 风格的通配符。指定分区不需要存在。

coreos.inst.save_partindex

可选:在安装过程中压缩要保留的分区索引。允许 m-n 范围,mn 可以被省略。指定分区不需要存在。

coreos.inst.insecure

可选:将 coreos.inst.image_url 指定的 OS 镜像提交取消签名。

coreos.inst.image_url

可选:下载并安装指定的 RHCOS 镜像。

  • 这个参数不应该在生产环境中使用,而是只用于调试目的。
  • 虽然此参数可用于安装与 live 介质不匹配的 RHCOS 版本,但建议您使用与您要安装版本匹配的介质。
  • 如果您使用 coreos.inst.image_url,还必须使用 coreos.inst.insecure。这是因为,裸机介质没有为 OpenShift Container Platform 进行 GPG 签名。
  • 仅支持 HTTP 和 HTTPS 协议。

coreos.inst.skip_reboot

可选:安装后系统不会重启。安装完成后,您将收到提示,提示您检查在安装过程中发生的情况。这个参数不应该在生产环境中使用,而是只用于调试目的。

coreos.inst.platform_id

可选:安装 RHCOS 镜像的平台的 Ignition 平台 ID。默认为 metal。这个选项决定是否从云供应商(如 VMware)请求 Ignition 配置。例如: coreos.inst.platform_id=vmware

ignition.config.url

可选:用于实时引导的 Ignition 配置的 URL。例如,这可用于自定义调用 coreos-installer 的方式,或者用于在安装前或安装后运行代码。这与 coreos.inst.ignition_url (这是已安装系统的 Ignition 配置)不同。

2.11.4. 在 RHCOS 上启用带有内核参数的多路径

RHCOS 支持主磁盘上的多路径,支持更强大的硬件故障弹性,以获得更高的主机可用性。

您可以在安装时为 OpenShift Container Platform 4.8 或更高版本置备的节点启用多路径。虽然安装后支持可以通过机器配置激活多路径来实现,但建议在安装过程中启用多路径。

在任何 I/O 到未优化路径会导致 I/O 系统错误的设置中,您必须在安装时启用多路径。

重要

在 IBM Z 和 IBM® LinuxONE 中,您只能在在安装过程中为它配置集群时启用多路径。如需更多信息,请参阅在 IBM Z 和 IBM® LinuxONE 上安装使用 z/VM 的集群"安装 RHCOS 并启动 OpenShift Container Platform bootstrap 过程"。

以下流程在安装时启用多路径,并在 coreos-installer install 命令中附加内核参数,以便安装的系统本身将使用从第一次引导开始的多路径。

注意

OpenShift Container Platform 不支持在从 4.6 或更早版本升级的节点上启用多路径作为 2 天的活动。

先决条件

  • 已为集群创建 Ignition 配置文件。
  • 您已参阅 安装 RHCOS 并启动 OpenShift Container Platform bootstrap 过程

流程

  1. 要启用多路径并启动 multipathd 守护进程,请在安装主机上运行以下命令:

    $ mpathconf --enable && systemctl start multipathd.service
    • 可选:如果引导 PXE 或 ISO,则可以通过从内核命令行添加 rd.multipath=default 来启用多路径。
  2. 通过调用 coreos-installer 程序附加内核参数:

    • 如果只有一个多路径设备连接到计算机,则应在路径 /dev/mapper/mpatha 上可用。例如:

      $ coreos-installer install /dev/mapper/mpatha \1
      --ignition-url=http://host/worker.ign \
      --append-karg rd.multipath=default \
      --append-karg root=/dev/disk/by-label/dm-mpath-root \
      --append-karg rw
      1
      表示单一多路径设备的路径。
    • 如果有多个多路径设备连接到计算机,或者更为明确,而不是使用 /dev/mapper/mpatha,则建议使用 /dev/disk/by-id 中可用的 World Wide Name(WWN)符号链接。例如:

      $ coreos-installer install /dev/disk/by-id/wwn-<wwn_ID> \1
      --ignition-url=http://host/worker.ign \
      --append-karg rd.multipath=default \
      --append-karg root=/dev/disk/by-label/dm-mpath-root \
      --append-karg rw
      1
      表示目标多路径设备的 WWN ID。例如: 0xx194e957fcedb4841

      当使用特殊 coreos.inst.* 参数指示 live 安装程序时,这个符号链接也可以用作 coreos.inst.install_dev 内核参数。如需更多信息,请参阅"安装 RHCOS 和启动 OpenShift Container Platform bootstrap 过程"。

  3. 重启安装的系统。
  4. 前往其中一个 worker 节点并列出内核命令行参数(主机上的 /proc/cmdline 中),以检查内核参数是否正常工作:

    $ oc debug node/ip-10-0-141-105.ec2.internal

    输出示例

    Starting pod/ip-10-0-141-105ec2internal-debug ...
    To use host binaries, run `chroot /host`
    
    sh-4.2# cat /host/proc/cmdline
    ...
    rd.multipath=default root=/dev/disk/by-label/dm-mpath-root
    ...
    
    sh-4.2# exit

    您应看到添加的内核参数。

2.11.4.1. 在辅助磁盘中启用多路径

RHCOS 还支持辅助磁盘上的多路径。在安装时,您可以使用 Ignition 为辅助磁盘启用多路径,而不是内核参数。

先决条件

  • 您已阅读了 磁盘分区 一节
  • 您已在 RHCOS 中使用内核参数读取启用多路径
  • 已安装 Butane 工具。

流程

  1. 使用类似如下的信息创建一个 Butane 配置:

    multipath-config.bu示例

    variant: openshift
    version: 4.13.0
    systemd:
      units:
        - name: mpath-configure.service
          enabled: true
          contents: |
            [Unit]
            Description=Configure Multipath on Secondary Disk
            ConditionFirstBoot=true
            ConditionPathExists=!/etc/multipath.conf
            Before=multipathd.service 1
            DefaultDependencies=no
    
            [Service]
            Type=oneshot
            ExecStart=/usr/sbin/mpathconf --enable 2
    
            [Install]
            WantedBy=multi-user.target
        - name: mpath-var-lib-container.service
          enabled: true
          contents: |
            [Unit]
            Description=Set Up Multipath On /var/lib/containers
            ConditionFirstBoot=true 3
            Requires=dev-mapper-mpatha.device
            After=dev-mapper-mpatha.device
            After=ostree-remount.service
            Before=kubelet.service
            DefaultDependencies=no
    
            [Service] 4
            Type=oneshot
            ExecStart=/usr/sbin/mkfs.xfs -L containers -m reflink=1 /dev/mapper/mpatha
            ExecStart=/usr/bin/mkdir -p /var/lib/containers
    
            [Install]
            WantedBy=multi-user.target
        - name: var-lib-containers.mount
          enabled: true
          contents: |
            [Unit]
            Description=Mount /var/lib/containers
            After=mpath-var-lib-containers.service
            Before=kubelet.service 5
    
            [Mount] 6
            What=/dev/disk/by-label/dm-mpath-containers
            Where=/var/lib/containers
            Type=xfs
    
            [Install]
            WantedBy=multi-user.target

    1
    在启动 multipath 守护进程前,必须设置配置。
    2
    启动 mpathconf 实用程序。
    3
    此字段必须设置为 true
    4
    创建文件系统和目录 /var/lib/containers
    5
    在启动任何节点前必须挂载该设备。
    6
    将设备挂载到 /var/lib/containers 挂载点。此位置不能是符号链接。
  2. 运行以下命令来创建 Ignition 配置:

    $ butane --pretty --strict multipath-config.bu > multipath-config.ign
  3. 继续第一个引导 RHCOS 安装过程的其余部分。

    重要

    不要在安装过程中在命令行上添加 rd.multipathroot 内核参数,除非主磁盘也多路径。

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.