2.2. 配置公共子网


所有 OpenShift Container Platform 集群节点都必须位于公共子网中。{ibmcloudBMRegProductName} 不在子网上提供 DHCP 服务器。在 provisioner 节点上单独设置它。

您必须重置准备 provisioner 节点时定义的 BASH 变量。在准备完置备程序节点后,重新引导置备程序节点将删除之前设置的 BASH 变量。

流程

  1. 安装 dnsmasq:

    $ sudo dnf install dnsmasq
  2. 打开 dnsmasq 配置文件:

    $ sudo vi /etc/dnsmasq.conf
  3. dnsmasq 配置文件中添加以下配置:

    interface=baremetal
    except-interface=lo
    bind-dynamic
    log-dhcp
    
    dhcp-range=<ip_addr>,<ip_addr>,<pub_cidr> 1
    dhcp-option=baremetal,121,0.0.0.0/0,<pub_gateway>,<prvn_priv_ip>,<prvn_pub_ip> 2
    
    dhcp-hostsfile=/var/lib/dnsmasq/dnsmasq.hostsfile
    1
    设置 DHCP 范围。将 <ip_addr> 实例替换为一个来自公共子网的未使用的 IP 地址,以便 baremetal 网络的 dhcp-range 并以相同的 IP 地址开始和结尾。将 <pub_cidr> 替换为公共子网的 CIDR。
    2
    设置 DHCP 选项。将 <pub_gateway> 替换为 baremetal 网络的网关 IP 地址。将 <prvn_priv_ip> 替换为 provisioning 网络上 provisioner 节点的专用 IP 地址的 IP 地址。将 <prvn_pub_ip> 替换为 baremetal 网络中 provisioner 节点的公共 IP 地址的 IP 地址。

    要检索 <pub_cidr> 的值,请执行:

    $ ibmcloud sl subnet detail <publicsubnetid> --output JSON | jq .cidr

    <publicsubnetid> 替换为公共子网的 ID。

    要检索 <pub_gateway> 的值,请执行:

    $ ibmcloud sl subnet detail <publicsubnetid> --output JSON | jq .gateway -r

    <publicsubnetid> 替换为公共子网的 ID。

    要检索 <prvn_priv_ip> 的值,请执行:

    $ ibmcloud  sl hardware detail <id> --output JSON | \
                jq .primaryBackendIpAddress -r

    <id> 替换为 provisioner 节点的 ID。

    要检索 <prvn_pub_ip> 的值,请执行:

    $ ibmcloud sl hardware detail <id> --output JSON | jq .primaryIpAddress -r

    <id> 替换为 provisioner 节点的 ID。

  4. 获取集群的硬件列表:

    $ ibmcloud sl hardware list
  5. 获取每个节点的 MAC 地址和 IP 地址:

    $ ibmcloud sl hardware detail <id> --output JSON | \
      jq '.networkComponents[] | \
      "\(.primaryIpAddress) \(.macAddress)"' | grep -v null

    <id> 替换为节点的 ID。

    输出示例

    "10.196.130.144 00:e0:ed:6a:ca:b4"
    "141.125.65.215 00:e0:ed:6a:ca:b5"

    记录公共网络的 MAC 地址和 IP 地址。单独记录专用网络的 MAC 地址,稍后您将在 install-config.yaml 文件中使用它。对每个节点重复这个过程,直到您拥有公共 baremetal 网络的所有公共 MAC 和 IP 地址,以及私有 provisioning 网络的 MAC 地址。

  6. 将每个节点的 public baremetal 网络的 MAC 和 IP 地址对添加到 dnsmasq.hostsfile 文件中:

    $ sudo vim /var/lib/dnsmasq/dnsmasq.hostsfile

    输入示例

    00:e0:ed:6a:ca:b5,141.125.65.215,master-0
    <mac>,<ip>,master-1
    <mac>,<ip>,master-2
    <mac>,<ip>,worker-0
    <mac>,<ip>,worker-1
    ...

    <mac>,<ip> 替换为相应节点名称的公共 MAC 地址和公共 IP 地址。

  7. 启动 dnsmasq:

    $ sudo systemctl start dnsmasq
  8. 启用 dnsmasq,以便在引导节点时启动:

    $ sudo systemctl enable dnsmasq
  9. 验证 dnsmasq 是否正在运行:

    $ sudo systemctl status dnsmasq

    输出示例

    ● dnsmasq.service - DNS caching server.
    Loaded: loaded (/usr/lib/systemd/system/dnsmasq.service; enabled; vendor preset: disabled)
    Active: active (running) since Tue 2021-10-05 05:04:14 CDT; 49s ago
    Main PID: 3101 (dnsmasq)
    Tasks: 1 (limit: 204038)
    Memory: 732.0K
    CGroup: /system.slice/dnsmasq.service
    └─3101 /usr/sbin/dnsmasq -k

  10. 使用 UDP 协议打开端口 5367

    $ sudo firewall-cmd --add-port 53/udp --permanent
    $ sudo firewall-cmd --add-port 67/udp --permanent
  11. 使用 masquerade 为外部区添加 置备

    $ sudo firewall-cmd --change-zone=provisioning --zone=external --permanent

    这一步可确保将 IPMI 调用的网络地址转换为管理子网。

  12. 重新载入 firewalld 配置:

    $ sudo firewall-cmd --reload
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.