6.4. 将 worker 节点添加到内部集群中


对于内部集群,您可以使用 OpenShift CLI (oc) 添加 worker 节点来生成 ISO 镜像,然后可用于引导目标集群中的一个或多个节点。无论如何安装集群,都可以使用此过程。

您可以在使用更复杂的配置(如静态网络配置)自定义每个节点时添加一个或多个节点,或者只能指定每个节点的 MAC 地址。任何在 ISO 生成期间未指定的配置都会从目标集群检索并应用到新节点。

在引导 ISO 镜像时也会执行 preflight 验证检查,以便在尝试引导每个节点前通知会导致失败的问题。

6.4.1. 支持的平台

以下平台支持使用此方法添加节点:

  • baremetal
  • vsphere
  • none
  • external

6.4.2. 在集群中添加节点

您可以使用以下两种方式添加节点:

  • 使用配置文件添加一个或多个节点。

    在运行 oc adm node-image create 命令前,您可以在 nodes-config.yaml 文件中指定一个或多个节点的配置。如果您要一次添加多个节点,或者指定了复杂的配置,这非常有用。

  • 仅使用命令标志添加单一节点。

    您可以通过运行 oc adm node-image create 命令添加节点,并使用标志来指定您的配置。如果您只想一次添加单个节点,且只有一个简单的配置来为该节点指定,这非常有用。

6.4.2.1. 使用配置文件添加一个或多个节点

您可以使用 nodes-config.yaml 文件在集群中添加一个或多个节点,以指定新节点的配置。

先决条件

  • 已安装 OpenShift CLI (oc)
  • 您有一个与目标集群的活动连接
  • 您有一个 kubeconfig 文件可用

流程

  1. 创建一个新的 YAML 文件,其中包含您要添加的节点的配置,并命名为 nodes-config.yaml。您必须为每个新节点提供 MAC 地址。

    在以下示例中,使用初始静态网络配置描述了两个新 worker:

    nodes-config.yaml 文件示例

    hosts:
    - hostname: extra-worker-1
      rootDeviceHints:
       deviceName: /dev/sda
      interfaces:
       - macAddress: 00:00:00:00:00:00
         name: eth0
      networkConfig:
       interfaces:
         - name: eth0
           type: ethernet
           state: up
           mac-address: 00:00:00:00:00:00
           ipv4:
             enabled: true
             address:
               - ip: 192.168.122.2
                 prefix-length: 23
             dhcp: false
    - hostname: extra-worker-2
      rootDeviceHints:
       deviceName: /dev/sda
      interfaces:
       - macAddress: 00:00:00:00:00:02
         name: eth0
      networkConfig:
       interfaces:
         - name: eth0
           type: ethernet
           state: up
           mac-address: 00:00:00:00:00:02
           ipv4:
             enabled: true
             address:
               - ip: 192.168.122.3
                 prefix-length: 23
             dhcp: false

  2. 运行以下命令来生成 ISO 镜像:

    $ oc adm node-image create nodes-config.yaml
    重要

    要让 create 命令获取与目标集群版本匹配的发行镜像,您必须指定一个有效的 pull secret。您可以使用 -registry-config 标志或预先设置 REGISTRY_AUTH_FILE 环境变量来指定 pull secret。

    注意

    如果没有使用 --dir 标志指定 nodes-config.yaml 文件的目录,该工具会在当前目录中查找该文件。

  3. 验证 asset 目录中是否存在一个新的 node.<arch>.iso 文件。资产目录是您的当前目录,除非您在创建 ISO 镜像时指定了不同的目录。
  4. 使用生成的 ISO 镜像引导所选节点。
  5. 运行以下命令跟踪节点创建的进度:

    $ oc adm node-image monitor --ip-addresses <ip_addresses>

    其中:

    <ip_addresses>

    指定要添加的节点的 IP 地址列表。

    注意

    如果您的节点没有反向 DNS 条目,oc adm node-image monitor 命令会跳过检查待处理的证书签名请求 (CSR)。如果跳过这些检查,则必须通过运行 oc get csr 命令手动检查 CSR。

  6. 为每个 CSR 运行以下命令批准 CSR:

    $ oc adm certificate approve <csr_name>

6.4.2.2. 使用命令标记添加节点

您可以使用命令标志在集群中添加单一节点,以指定新节点的配置。

先决条件

  • 已安装 OpenShift CLI (oc)
  • 您有一个与目标集群的活动连接
  • 您有一个 kubeconfig 文件可用

流程

  1. 运行以下命令来生成 ISO 镜像。必须使用命令标志来指定 MAC 地址。有关可用于这个命令的更多标记,请参阅"集群配置参考"部分。

    $ oc adm node-image create --mac-address=<mac_address>

    其中:

    <mac_address>
    指定要添加的节点的 MAC 地址。
    重要

    要让 create 命令获取与目标集群版本匹配的发行镜像,您必须指定一个有效的 pull secret。您可以使用 -registry-config 标志或预先设置 REGISTRY_AUTH_FILE 环境变量来指定 pull secret。

    提示

    要查看可用于配置节点的额外标记,请运行以下 oc adm node-image create --help 命令。

  2. 验证 asset 目录中是否存在一个新的 node.<arch>.iso 文件。资产目录是您的当前目录,除非您在创建 ISO 镜像时指定了不同的目录。
  3. 使用生成的 ISO 镜像引导节点。
  4. 运行以下命令跟踪节点创建的进度:

    $ oc adm node-image monitor --ip-addresses <ip_address>

    其中:

    <ip_address>
    指定要添加的节点的 IP 地址列表。
    注意

    如果您的节点没有反向 DNS 条目,oc adm node-image monitor 命令会跳过检查待处理的证书签名请求 (CSR)。如果跳过这些检查,则必须通过运行 oc get csr 命令手动检查 CSR。

  5. 为每个 CSR 运行以下命令批准待处理的 CSR:

    $ oc adm certificate approve <csr_name>

6.4.3. 集群配置参考

在创建 ISO 镜像时,配置从目标集群检索,并应用到新节点。任何集群的配置都会应用到节点,除非您覆盖 nodes-config.yaml 文件中的配置,或您添加到 oc adm node-image create 命令的任何标记。

6.4.3.1. YAML 文件参数

下表中描述了可在 nodes-config.yaml 文件中指定的配置参数:

表 6.2. nodes-config.yaml 参数
参数描述
hosts:

主机配置。

主机配置对象的数组。

hosts:
  hostname:

主机名.覆盖从动态主机配置协议(DHCP)或反向 DNS 查找中获取的主机名。每个主机必须具有由这些方法提供的唯一主机名,尽管通过此参数配置主机名是可选的。

字符串.

hosts:
  interfaces:

为主机上的接口提供名称和 MAC 地址映射表。如果在 nodes-config.yaml 文件中提供了 NetworkConfig 部分,则必须包括此表,值必须与 NetworkConfig 部分中提供的映射匹配。

主机配置对象的数组。

hosts:
  interfaces:
    name:

主机上接口名称。

字符串.

hosts:
  interfaces:
    macAddress:

主机上接口的 MAC 地址。

一个 MAC 地址,如以下示例:00-B0-D0-63-C2-26

hosts:
  rootDeviceHints:

启用将 Red Hat Enterprise Linux CoreOS (RHCOS)镜像置备到特定设备。node-adding 工具会按照发现设备的顺序检查设备,并将发现的值与 hint 值进行比较。它使用第一个与 hint 值匹配的发现设备。

键值对字典。如需更多信息,请参阅"为 OpenShift 安装设置环境"页面中的"Root 设备提示"。

hosts:
  rootDeviceHints:
    deviceName:

RHCOS 镜像置备为的设备的名称。

字符串.

hosts:
  networkConfig:

主机网络定义。配置必须与 nmstate 文档中定义的 Host Network Management API 匹配。

主机网络配置对象的字典。

cpuArchitecture

可选。指定您要添加的节点架构。如果需要,此参数允许您覆盖集群中的默认值。

字符串.

sshKey

可选。包含 SSH 密钥的文件,用于验证对集群机器的访问。

字符串.

6.4.3.2. 命令标志选项

您可以在 oc adm node-image create 命令中使用命令标志来配置您要创建的节点。

下表描述了没有仅限于单节点用例的命令标记:

表 6.3. 常规命令标记
标记描述

--certificate-authority

与受管容器镜像 registry 通信时使用的证书颁发机构捆绑包的路径。如果使用 --insecure 标志,则忽略这个标志。

字符串

--dir

如果提供,则包含配置文件的路径。此路径也用于存储生成的工件。

字符串

--insecure

允许通过 HTTP 对 registry 进行推送和拉取操作。

布尔值

-o, --output-name

生成的输出镜像的名称。

字符串

-a, --registry-config

到 registry 凭证的路径。或者,您可以指定 REGISTRY_AUTH_FILE 环境变量。默认路径为 ${XDG_RUNTIME_DIR}/containers/auth.json, /run/containers/${UID}/auth.json, ${XDG_CONFIG_HOME}/containers/auth.json, ${DOCKER_CONFIG}, ~/.docker/config.json, ~/.dockercfg.可以通过已弃用的 REGISTRY_AUTH_PREFERENCE 环境变量更改为"docker"值来更改顺序,以便优先选择使用 Podman 的 Docker 凭据。

字符串

--skip-verification

用于跳过验证检索内容的完整性的选项。不建议这样做,但在从旧镜像 registry 导入镜像时可能需要这样做。只有在 registry 已知可以被信任时才绕过验证。

布尔值

下表描述了仅在创建单一节点时使用的命令标记:

表 6.4. 仅限单节点命令的标记
标记描述

-c, --cpu-architecture

用于安装节点的 CPU 架构。此标志可用于仅创建单一节点,并且必须定义 --mac-address 标志。

字符串

--hostname

为节点设置的主机名。此标志可用于仅创建单一节点,并且必须定义 --mac-address 标志。

字符串

-m, --mac-address

用于标识要应用配置的主机的 MAC 地址。此标志可用于仅创建单一节点,并且必须定义 --mac-address 标志。

字符串

--network-config-path

包含要应用到节点的 NMState 配置的 YAML 文件的路径。此标志可用于仅创建单一节点,并且必须定义 --mac-address 标志。

字符串

--root-device-hint

用于指定镜像根文件系统存储位置的提示。接受的格式是 <hint_name>:<value>。此标志可用于仅创建单一节点,并且必须定义 --mac-address 标志。

字符串

-k, --ssh-key-path

用于访问节点的 SSH 密钥的路径。此标志可用于仅创建单一节点,并且必须定义 --mac-address 标志。

字符串

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.