1.10. 示例:IP 管理


以下配置片段示例演示了不同的 IP 管理方法。

这些示例使用 ethernet 接口类型来简化示例,同时显示 Policy 配置中相关的上下文。这些 IP 管理示例可与其他接口类型一起使用。

1.10.1. Static

以下片段在以太网接口中静态配置 IP 地址:

# ...
    interfaces:
    - name: eth1
      description: static IP on eth1
      type: ethernet
      state: up
      ipv4:
        dhcp: false
        address:
        - ip: 192.168.122.250 
1

          prefix-length: 24
        enabled: true
# ...
Copy to Clipboard Toggle word wrap
1
使用接口的静态 IP 地址替换这个值。

1.10.2. 没有 IP 地址

以下片段确保接口没有 IP 地址:

# ...
    interfaces:
    - name: eth1
      description: No IP on eth1
      type: ethernet
      state: up
      ipv4:
        enabled: false
# ...
Copy to Clipboard Toggle word wrap
重要

当您将 ipv4.enabledipv6.enabled 参数设置为 false 时,始终将 state 参数设置为 up,以禁用接口。如果使用此配置设置了 state: down,接口会因为自动 DHCP 分配而接收 DHCP IP 地址。

1.10.3. 动态主机配置

以下片段配置了一个以太网接口,它使用动态 IP 地址、网关地址和 DNS:

# ...
    interfaces:
    - name: eth1
      description: DHCP on eth1
      type: ethernet
      state: up
      ipv4:
        dhcp: true
        enabled: true
# ...
Copy to Clipboard Toggle word wrap

以下片段配置了一个以太网接口,它使用动态 IP 地址,但不使用动态网关地址或 DNS:

# ...
    interfaces:
    - name: eth1
      description: DHCP without gateway or DNS on eth1
      type: ethernet
      state: up
      ipv4:
        dhcp: true
        auto-gateway: false
        auto-dns: false
        enabled: true
# ...
Copy to Clipboard Toggle word wrap

1.10.4. 介质访问控制(MAC)地址

您可以使用 MAC 地址来识别网络接口,而不使用网络接口的名称。网络接口名称可能会因为各种原因而改变,如操作系统配置更改。但是,每个网络接口都有一个不更改的唯一 MAC 地址。这意味着,使用 MAC 地址是更永久地识别特定网络接口的方法。

identifier 参数支持的值包括默认 name 值和 mac-address 值。name 值将配置应用到包含指定接口名称的接口。

mac-address 值用于 identifier 参数表示 MAC 地址是网络接口的标识符。如果将 identifier 值设置为 mac-address,则必须在以下 mac-address 参数字段中输入特定的 MAC 地址。

注意

您仍然可以为 name 参数指定一个值,但设置 identifier: mac-address 值表示 MAC 地址用作网络接口的主标识符。如果您指定了不正确的 MAC 地址,nmstate 会报告无效的参数错误。

以下片段将 MAC 地址指定为名为 eth1 的以太网设备的主标识符,其 MAC 地址为 8A:8C:92:1A:F6:98

# ...
interfaces:
- name: eth1
  profile-name: wan0
  type: ethernet
  state: up
  identifier: mac-address
  mac-address: 8A:8C:92:1A:F6:98
# ...
Copy to Clipboard Toggle word wrap

1.10.5. DNS

默认情况下,nmstate API 会在全局范围内存储 DNS 值,而不是将其存储在网络接口中。在某些情况下,您必须配置网络接口来存储 DNS 值。

提示

设置一个 DNS 配置与修改 /etc/resolv.conf 文件相当。

要为网络接口定义 DNS 配置,您必须首先在网络接口 YAML 配置文件中指定 dns-resolver 部分。要将 NNCP 配置应用到您的网络接口,您需要运行 oc apply -f <nncp_file_name> 命令。

以下示例显示了全局存储 DNS 值的默认情况:

  • 配置没有网络接口的静态 DNS。请注意,当更新主机节点上的 /etc/resolv.conf 文件时,您不需要在 NodeNetworkConfigurationPolicy (NNCP)清单中指定一个接口 (IPv4 或 IPv6)。

    全局存储 DNS 值的网络接口的 DNS 配置示例

    apiVersion: nmstate.io/v1
    kind: NodeNetworkConfigurationPolicy
    metadata:
     name: worker-0-dns-testing
    spec:
      nodeSelector:
        kubernetes.io/hostname: <target_node>
      desiredState:
        dns-resolver:
          config:
            server:
            - 2001:db8:f::1
            - 192.0.2.251
            search:
            - example.com
            - example.org
    # ...
    Copy to Clipboard Toggle word wrap

    重要

    您可以在 NNCP 文件的 dns-resolver.config 部分下指定 DNS 选项,如下例所示:

    # ...
    desiredState:
        dns-resolver:
          config:
            options:
             - timeout:2
             - attempts:3
    # ...
    Copy to Clipboard Toggle word wrap

    如果要从网络接口中删除 DNS 选项,请将以下配置应用到 NNCP,然后运行 oc apply -f <nncp_file_name> 命令:

    # ...
        dns-resolver:
          config: {}
        interfaces: []
    # ...
    Copy to Clipboard Toggle word wrap

以下示例显示,配置一个网络接口来存储 DNS 值:

  • 如果要将静态 DNS 名称服务器排名在动态 DNS 名称服务器上,请在网络接口 YAML 配置文件中定义运行动态主机配置协议(DHCP)或 IPv6 自动配置(autoconf)机制的接口。

    192.0.2.1 添加到从 DHCPv4 网络协议检索的 DNS 名称服务器中的示例

    # ...
    dns-resolver:
      config:
        server:
        - 192.0.2.1
    interfaces:
      - name: eth1
        type: ethernet
        state: up
        ipv4:
          enabled: true
          dhcp: true
          auto-dns: true
    # ...
    Copy to Clipboard Toggle word wrap

  • 如果您需要配置网络接口来存储 DNS 值,而不是使用默认方法(使用 nmstate API 在全局范围内存储 DNS 值),您可以在网络接口 YAML 文件中设置静态 DNS 值和静态 IP 地址。

    重要

    在网络接口级别上存储 DNS 值可能会导致名称解析问题,如 Open vSwitch (OVS) 网桥、Linux 网桥或绑定。

    在接口级别存储 DNS 值的配置示例

    # ...
    dns-resolver:
      config:
        server:
        - 2001:db8:1::d1
        - 2001:db8:1::d2
        - 192.0.2.1
        search:
        - example.com
        - example.org
    interfaces:
      - name: eth1
        type: ethernet
        state: up
        ipv4:
          address:
          - ip: 192.0.2.251
            prefix-length: 24
          dhcp: false
          enabled: true
        ipv6:
          address:
          - ip: 2001:db8:1::1
            prefix-length: 64
          dhcp: false
          enabled: true
          autoconf: false
    # ...
    Copy to Clipboard Toggle word wrap

  • 如果要为您的网络接口设置静态 DNS 搜索域和静态 DNS 名称服务器,请在网络接口 YAML 配置文件中定义运行动态主机配置协议(DHCP)或 IPv6 自动配置(autoconf)机制的静态接口。

    重要

    在网络接口 YAML 文件中指定以下 dns-resolver 配置可能会导致重启出现竞争条件,以防止 NodeNetworkConfigurationPolicy (NNCP)应用到集群中运行的 pod:

    • 为您的网络接口设置静态 DNS 搜索域和动态 DNS 名称服务器。
    • 为搜索参数指定域后缀,而不为 server 参数设置 IP 地址。

    设置 example.comexample.org 静态 DNS 搜索域以及静态 DNS 名称服务器设置的示例配置

    # ...
    dns-resolver:
      config:
        server:
        - 2001:db8:f::1
        - 192.0.2.251
        search:
        - example.com
        - example.org
    interfaces:
      - name: eth1
        type: ethernet
        state: up
        ipv4:
          enabled: true
          dhcp: true
          auto-dns: true
        ipv6:
          enabled: true
          dhcp: true
          autoconf: true
          auto-dns: true
    # ...
    Copy to Clipboard Toggle word wrap

1.10.6. 静态路由

以下片段在接口 eth1 中配置静态路由和静态 IP。

dns-resolver:
  config:
# ...
interfaces:
  - name: eth1
    description: Static routing on eth1
    type: ethernet
    state: up
    ipv4:
      dhcp: false
      enabled: true
      address:
      - ip: 192.0.2.251 
1

        prefix-length: 24
routes:
  config:
  - destination: 198.51.100.0/24
    metric: 150
    next-hop-address: 192.0.2.1 
2

    next-hop-interface: eth1
    table-id: 254
# ...
Copy to Clipboard Toggle word wrap
1
以太网接口的静态 IP 地址。
2
节点流量的下一跳地址。这必须与为以太接口设定的 IP 地址位于同一个子网中。
重要

在配置静态路由时,您无法使用 OVN-Kubernetes br-ex 网桥作为下一个跃点接口,除非您手动配置自定义的 br-ex 网桥。

如需更多信息,请参阅在裸机中部署安装程序置备的集群文档或在裸机中安装用户置备的集群 文档中的"创建包括自定义 br-ex 网桥的清单对象"。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat