1.7. 使用 CLI 管理策略


1.7.1. 在节点上创建接口

通过将一个 NodeNetworkConfigurationPolicy (NNCP) 清单应用到集群来在集群的节点上创建一个接口。清单详细列出了请求的接口配置。

默认情况下,清单会应用到集群中的所有节点。要将接口只添加到特定的节点,在节点选择器上添加 spec: nodeSelector 参数和适当的 <key>:<value>

您可以同时配置多个支持 nmstate 节点。该配置适用于并行节点的 50%。如果网络连接失败,此策略可防止整个集群不可用。要将策略配置并行应用到集群的特定部分,请使用 NodeNetworkConfigurationPolicy 清单配置文件中的 maxUnavailable 参数。

注意

如果您有两个节点,并且对这些节点应用了一个 NNCP 清单,其中 maxUnavailable 参数设置为 50%, 则一次只有一个节点可以接收 NNCP 配置。如果您引入一个额外的 NNCP 清单文件,其 maxUnavailable 参数设置为 50%,则这个 NCCP 独立于初始 NNCP。这意味着,如果 NNCP 清单对节点应用错误配置,则您无法保证集群有一半的功能。

先决条件

  • 已安装 OpenShift CLI(oc)。

流程

  1. 创建 NodeNetworkConfigurationPolicy 清单。以下示例在所有 worker 节点上配置了一个 Linux 桥接并配置 DNS 解析器:

    apiVersion: nmstate.io/v1
    kind: NodeNetworkConfigurationPolicy
    metadata:
      name: br1-eth1-policy 
    1
    
    spec:
      nodeSelector: 
    2
    
        node-role.kubernetes.io/worker: "" 
    3
    
      maxUnavailable: 3 
    4
    
      desiredState:
        interfaces:
          - name: br1
            description: Linux bridge with eth1 as a port 
    5
    
            type: linux-bridge
            state: up
            ipv4:
              dhcp: true
              enabled: true
              auto-dns: false
            bridge:
              options:
                stp:
                  enabled: false
              port:
                - name: eth1
        dns-resolver: 
    6
    
          config:
            search:
            - example.com
            - example.org
            server:
            - 8.8.8.8
    Copy to Clipboard Toggle word wrap
    1
    策略的名称。
    2
    可选: 如果没有包括 nodeSelector 参数,策略会应用到集群中的所有节点。
    3
    本例使用 node-role.kubernetes.io/worker:"" 节点选择器来选择集群中的所有 worker 节点。
    4
    可选:指定策略配置可同时应用到的最大 nmstate 节点数。这个参数可以设置为百分比值(字符串),如 "10%",也可以是绝对值(数字),如 3
    5
    可选:接口人类可读的描述。
    6
    可选:指定 DNS 服务器的搜索和服务器设置。
  2. 创建节点网络策略:

    $ oc apply -f br1-eth1-policy.yaml 
    1
    Copy to Clipboard Toggle word wrap
    1
    节点网络配置策略清单的文件名。

其他资源

1.7.2. 确认节点上的节点网络策略更新

当您应用节点网络策略时,会为集群中的每个节点创建一个 NodeNetworkConfigurationEnactment 对象。节点网络配置是一个只读对象,代表在该节点上执行策略的状态。如果策略在节点上应用失败,则该节点会包括 traceback 用于故障排除。

先决条件

  • 已安装 OpenShift CLI(oc)。

流程

  1. 要确认策略已应用到集群,请列出策略及其状态:

    $ oc get nncp
    Copy to Clipboard Toggle word wrap
  2. 可选:如果策略配置成功的时间比预期的要长,您可以检查特定策略请求的状态和状态条件:

    $ oc get nncp <policy> -o yaml
    Copy to Clipboard Toggle word wrap
  3. 可选:如果策略在所有节点上配置成功的时间比预期的要长,您可以列出集群中的 Enactments 的状态:

    $ oc get nnce
    Copy to Clipboard Toggle word wrap
  4. 可选:要查看特定的 Enactment 的配置,包括对失败配置进行任何错误报告:

    $ oc get nnce <node>.<policy> -o yaml
    Copy to Clipboard Toggle word wrap

1.7.3. 从节点中删除接口

您可以通过编辑 NodeNetworkConfigurationPolicy 对象从集群中的一个或多个节点中删除接口,并将接口的状态设置为 absent

从节点中删除接口不会自动将节点网络配置恢复到以前的状态。如果要恢复之前的状态,则需要在策略中定义节点网络配置。

如果删除了网桥或绑定接口,以前附加到该网桥或绑定接口的任何节点 NIC 都会处于 down 状态并变得不可访问。为了避免连接丢失,在相同策略中配置节点 NIC,使其具有 up 状态,以及使用 DHCP 或一个静态 IP 地址。

注意

删除添加接口的节点网络策略不会更改节点上的策略配置。虽然 NodeNetworkConfigurationPolicy 是集群中的一个对象,但对象只代表请求的配置。同样,删除接口不会删除策略。

先决条件

  • 已安装 OpenShift CLI(oc)。

流程

  1. 更新用来创建接口的 NodeNetworkConfigurationPolicy 清单。以下示例删除了 Linux 网桥,并使用 DHCP 配置 eth1 NIC 以避免断开连接:

    apiVersion: nmstate.io/v1
    kind: NodeNetworkConfigurationPolicy
    metadata:
      name: <br1-eth1-policy> 
    1
    
    spec:
      nodeSelector: 
    2
    
        node-role.kubernetes.io/worker: "" 
    3
    
      desiredState:
        interfaces:
        - name: br1
          type: linux-bridge
          state: absent 
    4
    
        - name: eth1 
    5
    
          type: ethernet 
    6
    
          state: up 
    7
    
          ipv4:
            dhcp: true 
    8
    
            enabled: true 
    9
    Copy to Clipboard Toggle word wrap
    1
    策略的名称。
    2
    可选: 如果没有包括 nodeSelector 参数,策略会应用到集群中的所有节点。
    3
    本例使用 node-role.kubernetes.io/worker:"" 节点选择器来选择集群中的所有 worker 节点。
    4
    将状态改为 absent 会删除接口。
    5
    要从网桥接口中取消附加的接口名称。
    6
    接口的类型。这个示例创建了以太网网络接口。
    7
    接口的请求状态。
    8
    可选:如果您不使用 dhcp,可以设置静态 IP,或让接口没有 IP 地址。
    9
    在这个示例中启用 ipv4
  2. 更新节点上的策略并删除接口:

    $ oc apply -f <br1-eth1-policy.yaml> 
    1
    Copy to Clipboard Toggle word wrap
    1
    策略清单的文件名。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat