第 24 章 Kubernetes NMState
24.1. 观察和更新节点网络状态和配置
安装 Kubernetes NMState Operator 后,您可以使用 Operator 观察和更新集群的节点网络状态和网络配置。
有关如何安装 NMState Operator 的更多信息,请参阅 Kubernetes NMState Operator。
24.1.1. 使用 CLI 查看节点的网络状态
节点网络状态是集群中所有节点的网络配置。一个 NodeNetworkState
对象存在于集群中的每个节点上。此对象定期更新,并捕获该节点的网络状态。
流程
列出集群中的所有
NodeNetworkState
对象:$ oc get nns
检查
NodeNetworkState
对象以查看该节点上的网络。为了清楚,这个示例中的输出已被重新编辑:$ oc get nns node01 -o yaml
输出示例
apiVersion: nmstate.io/v1 kind: NodeNetworkState metadata: name: node01 1 status: currentState: 2 dns-resolver: # ... interfaces: # ... route-rules: # ... routes: # ... lastSuccessfulUpdateTime: "2020-01-31T12:14:00Z" 3
24.1.2. 从 Web 控制台查看节点的网络状态
作为管理员,您可以使用 OpenShift Container Platform Web 控制台观察 NodeNetworkState
资源和网络接口,并访问网络详情。
流程
进入到 Networking
NodeNetworkState。 在 NodeNetworkState 页面中,您可以查看
NodeNetworkState
资源列表以及节点上创建的对应接口。您可以基于接口状态, 接口类型, 和 IP 进行过滤,或者使用基于条件名称或标签的搜索栏来缩小显示的NodeNetworkState
资源范围。-
要访问
NodeNetworkState
资源的详细信息,请点 Name 列中列出的NodeNetworkState
资源名称。 -
要展开并查看
NodeNetworkState
资源的 Network Details 部分,点 > 图标。或者,您也可以点 Network interface 列下的每个接口类型来查看网络详情。
24.1.3. 从 Web 控制台管理策略
您可以通过将 NodeNetworkConfigurationPolicy
清单应用到集群来更新节点网络的配置,如为节点添加或删除接口。通过访问 Networking 菜单下的 NodeNetworkConfigurationPolicy 页面中创建的策略列表,从 web 控制台管理策略。通过此页面,您可以创建、更新、监控和删除策略。
24.1.3.1. 监控策略状态
您可以在 NodeNetworkConfigurationPolicy 页面中监控策略状态。本页以表格格式显示集群中创建的所有策略,其列如下:
- Name
- 创建的策略的名称。
- 匹配的节点
- 应用策略的节点计数。这可能是基于节点选择器或集群中的所有节点的节点子集。
- 节点网络状态
- 匹配节点的 Enactment 状态。您可以点 enactment 状态并查看状态的详细信息。
要查找所需的策略,您可以使用 Filter 选项或搜索选项根据 enactment 状态过滤列表。
24.1.3.2. 创建策略
您可以使用 web 控制台中的表单或 YAML 创建策略。
流程
-
进入到 Networking
NodeNetworkConfigurationPolicy。 在 NodeNetworkConfigurationPolicy 页面中,点 Create,然后选择 From Form 选项。
如果没有现有策略,您可以使用表单点 Create NodeNetworkConfigurationPolicy 来创建策略。
注意要使用 YAML 创建策略,请点 Create,然后选择 With YAML 选项。以下步骤仅适用于使用表单创建策略。
- 可选:选择 Apply this NodeNetworkConfigurationPolicy only to specific subsets of nodes using the node selector 复选框,以指定必须应用策略的节点。
- 在 Policy name 字段中输入策略名称。
- 可选:在 Description 字段中输入策略的描述。
可选:在 Policy Interface (s) 部分中,默认添加了一个桥接接口,带有可编辑的字段中的预设置值。通过执行以下步骤来编辑值:
- 在 Interface name 字段中输入接口名称。
- 从 Network 状态下拉菜单中选择网络状态。默认选择的值是 Up。
从类型下拉菜单中选择接口类型。可用的值包括 Bridge, Bonding, 和 Ethernet。默认选择的值是 Bridge。
注意不支持使用表单添加 VLAN 接口。要添加 VLAN 接口,您必须使用 YAML 来创建策略。添加后,您无法使用表单编辑策略。
可选: 在 IP 配置部分中,选中 IPv4 复选框,为接口分配 IPv4 地址,并配置 IP 地址分配详情:
- 点IP 地址,将接口配置为使用静态 IP 地址;或点 DHCP 将接口配置为自动分配 IP 地址。
如果您选择了 IP 地址 选项,在 IPV4 address 字段中输入 IPv4 地址,并在 Prefix length 字段中输入前缀长度。
如果您选择了 DHCP 选项,请取消选择您要禁用的选项。可用选项包括 Auto-DNS、Auto-routes 和 Auto-gateway。所有选项都被默认选择。
- 可选:在 Port 字段中输入端口号。
- 可选: 选中启用 STP复选框以启用 STP。
- 可选: 要为策略添加一个接口,点 Add another interface to the policy。
- 可选: 要从策略中删除接口,点接口旁的 图标。
注意或者,您可以点页面顶部的 Edit YAML 继续使用 YAML 编辑表单。
- 点 Create 以完成策略创建。
24.1.3.3. 更新策略
24.1.3.3.1. 使用表单更新策略
流程
-
进入到 Networking
NodeNetworkConfigurationPolicy。 - 在 NodeNetworkConfigurationPolicy 页面中,点您要编辑的策略旁的 图标,然后点 Edit。
- 编辑您要更新的字段。
- 点击 Save。
不支持使用表单添加 VLAN 接口。要添加 VLAN 接口,您必须使用 YAML 来创建策略。添加后,您无法使用表单编辑策略。
24.1.3.3.2. 使用 YAML 更新策略
流程
-
进入到 Networking
NodeNetworkConfigurationPolicy。 - 在 NodeNetworkConfigurationPolicy 页面中,点您要编辑的策略的 Name 列下的策略名称。
- 点 YAML 选项卡,并编辑 YAML。
- 点击 Save。
24.1.3.4. 删除策略
流程
-
进入到 Networking
NodeNetworkConfigurationPolicy。 - 在 NodeNetworkConfigurationPolicy 页面中,点您要删除的策略旁的 图标,然后点 Delete。
- 在弹出窗口中,输入策略名称以确认删除,然后点 Delete。
24.1.4. 使用 CLI 管理策略
24.1.4.1. 在节点上创建接口
通过将一个 NodeNetworkConfigurationPolicy
清单应用到集群来在集群的节点上创建一个接口。清单详细列出了请求的接口配置。
默认情况下,清单会应用到集群中的所有节点。要将接口只添加到特定的节点,在节点选择器上添加 spec: nodeSelector
参数和适当的 <key>:<value>
。
您可以同时配置多个支持 nmstate 节点。该配置适用于并行节点的 50%。如果网络连接失败,此策略可防止整个集群不可用。要将策略配置并行应用到集群的特定部分,请使用 maxUnavailable
字段。
流程
创建
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
创建节点网络策略:
$ oc apply -f br1-eth1-policy.yaml 1
- 1
- 节点网络配置策略清单的文件名。
其他资源
24.1.4.2. 确认节点上的节点网络策略更新
NodeNetworkConfigurationPolicy
清单描述了您为集群中的节点请求的网络配置。节点网络策略包括您请求的网络配置以及整个集群中的策略执行状态。
当您应用节点网络策略时,会为集群中的每个节点创建一个 NodeNetworkConfigurationEnactment
对象。节点网络配置是一个只读对象,代表在该节点上执行策略的状态。如果策略在节点上应用失败,则该节点会包括 traceback 用于故障排除。
流程
要确认策略已应用到集群,请列出策略及其状态:
$ oc get nncp
可选:如果策略配置成功的时间比预期的要长,您可以检查特定策略请求的状态和状态条件:
$ oc get nncp <policy> -o yaml
可选:如果策略在所有节点上配置成功的时间比预期的要长,您可以列出集群中的 Enactments 的状态:
$ oc get nnce
可选:要查看特定的 Enactment 的配置,包括对失败配置进行任何错误报告:
$ oc get nnce <node>.<policy> -o yaml
24.1.4.3. 从节点中删除接口
您可以通过编辑 NodeNetworkConfigurationPolicy
对象从集群中的一个或多个节点中删除接口,并将接口的状态
设置为 absent
。
从节点中删除接口不会自动将节点网络配置恢复到以前的状态。如果要恢复之前的状态,则需要在策略中定义节点网络配置。
如果删除了网桥或绑定接口,以前附加到该网桥或绑定接口的任何节点 NIC 都会处于 down
状态并变得不可访问。为了避免连接丢失,在相同策略中配置节点 NIC,使其具有 up
状态,以及使用 DHCP 或一个静态 IP 地址。
删除添加接口的节点网络策略不会更改节点上的策略配置。虽然 NodeNetworkConfigurationPolicy
是集群中的一个对象,但它只代表请求的配置。
同样,删除接口不会删除策略。
流程
更新用来创建接口的
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
更新节点上的策略并删除接口:
$ oc apply -f <br1-eth1-policy.yaml> 1
- 1
- 策略清单的文件名。
24.1.5. 不同接口的策略配置示例
在读取不同示例 NodeNetworkConfigurationPolicy
(NNCP)清单配置前,请在应用策略时请考虑以下因素,以便集群在其最佳性能条件下运行:
-
当您需要将策略应用到多个节点时,为每个目标节点创建一个
NodeNetworkConfigurationPolicy
清单。Kubernetes NMState Operator 以未指定顺序将策略应用到每个节点。使用此方法限制策略会缩短策略应用程序的时长,但如果集群的配置中出现错误,则可能会有在集群范围内出现运行中断的风险。为了避免这种类型的错误,首先将 NNCP 应用到某些节点,并在确认它们是否已正确配置后,继续执行将策略应用到剩余的节点。 -
当您需要将策略应用到多个节点时,但只想为所有目标节点创建一个 NNCP,Kubernetes NMState Operator 会按顺序将策略应用到每个节点。您可以使用集群配置中的
maxUnavailable
参数为目标节点设置策略应用程序的速度和覆盖范围。通过为参数设置一个较低的百分比值,您可以在中断只会影响接收策略应用程序的一小部分节点时,降低出现集群范围中断的风险。 - 考虑在单个策略中指定所有相关网络配置。
- 当节点重启时,Kubernetes NMState Operator 无法控制它将策略应用到节点的顺序。Kubernetes NMState Operator 可能会按顺序应用相互独立的策略,这会导致网络对象降级。
24.1.5.1. 示例: Linux bridge interface 节点网络配置策略
通过将一个 NodeNetworkConfigurationPolicy
清单应用到集群来在集群的节点上创建一个 Linux 网桥接口。
以下 YAML 文件是 Linux 网桥界面的清单示例。如果运行 playbook,其中会包含必须替换为您自己的信息的样本值。
apiVersion: nmstate.io/v1 kind: NodeNetworkConfigurationPolicy metadata: name: br1-eth1-policy 1 spec: nodeSelector: 2 kubernetes.io/hostname: <node01> 3 desiredState: interfaces: - name: br1 4 description: Linux bridge with eth1 as a port 5 type: linux-bridge 6 state: up 7 ipv4: dhcp: true 8 enabled: true 9 bridge: options: stp: enabled: false 10 port: - name: eth1 11
24.1.5.2. 示例:VLAN 接口节点网络配置策略
通过将一个 NodeNetworkConfigurationPolicy
清单应用到集群来在集群的节点上创建一个 VLAN 接口。
在单个 NodeNetworkConfigurationPolicy
清单中为节点的 VLAN 接口定义所有相关配置。例如,在同一 NodeNetworkConfigurationPolicy
清单中为节点定义 VLAN 接口和相关路由。
当节点重启时,Kubernetes NMState Operator 无法控制应用策略的顺序。因此,如果您将单独的策略用于相关的网络配置,Kubernetes NMState Operator 可能会按顺序应用这些策略,从而导致网络对象降级。
以下 YAML 文件是 VLAN 接口的清单示例。如果运行 playbook,其中会包含必须替换为您自己的信息的样本值。
apiVersion: nmstate.io/v1 kind: NodeNetworkConfigurationPolicy metadata: name: vlan-eth1-policy 1 spec: nodeSelector: 2 kubernetes.io/hostname: <node01> 3 desiredState: interfaces: - name: eth1.102 4 description: VLAN using eth1 5 type: vlan 6 state: up 7 vlan: base-iface: eth1 8 id: 102 9
24.1.5.3. 示例:虚拟功能的节点网络配置策略(技术预览)
通过应用 NodeNetworkConfigurationPolicy
清单,更新现有集群中的单根 I/O 虚拟化 (SR-IOV) 网络功能 (VF) 的主机网络设置。
为 SR-IOV 网络 VF 更新主机网络设置只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
您可以将 NodeNetworkConfigurationPolicy
清单应用到现有集群,以完成以下任务:
- 为 VF 配置 QoS 主机网络设置以优化性能。
- 为网络接口添加、删除或更新 VF。
- 管理 VF 绑定配置。
要在也通过 SR-IOV Network Operator 管理的物理功能上使用 NMState 更新 SR-IOV VF 的主机网络设置,您必须将相关 SriovNetworkNodePolicy
资源中的 externallyManaged
参数设置为 true
。如需更多信息,请参阅附加资源部分。
以下 YAML 文件是一个清单示例,它为 VF 定义 QoS 策略。此文件包含必须替换为您自己的信息的样本值。
apiVersion: nmstate.io/v1 kind: NodeNetworkConfigurationPolicy metadata: name: qos 1 spec: nodeSelector: 2 node-role.kubernetes.io/worker: "" 3 desiredState: interfaces: - name: ens1f0 4 description: Change QOS on VF0 5 type: ethernet 6 state: up 7 ethernet: sr-iov: total-vfs: 3 8 vfs: - id: 0 9 max-tx-rate: 200 10
以下 YAML 文件是一个清单示例,它在 VF 上创建 VLAN 接口并将其添加到绑定的网络接口中。如果运行 playbook,其中会包含必须替换为您自己的信息的样本值。
apiVersion: nmstate.io/v1 kind: NodeNetworkConfigurationPolicy metadata: name: addvf 1 spec: nodeSelector: 2 node-role.kubernetes.io/worker: "" 3 maxUnavailable: 3 desiredState: interfaces: - name: ens1f0v1 4 type: ethernet state: up - name: ens1f0v1.477 5 type: vlan state: up vlan: base-iface: ens1f0v1 6 id: 477 - name: bond0 7 description: Add vf 8 type: bond 9 state: up 10 link-aggregation: mode: active-backup 11 options: primary: ens1f1v0.477 12 port: 13 - ens1f1v0.477 - ens1f0v0.477 - ens1f0v1.477 14
其他资源
24.1.5.4. 示例:绑定接口节点网络配置策略
通过将一个 NodeNetworkConfigurationPolicy
清单应用到集群来在集群的节点上创建一个绑定接口。
OpenShift Container Platform 只支持以下绑定模式:
-
mode=1 active-backup
-
mode=2 balance-xor
-
mode=4 802.3ad
不支持其他绑定模式。
以下 YAML 文件是绑定接口的清单示例。如果运行 playbook,其中会包含必须替换为您自己的信息的样本值。
apiVersion: nmstate.io/v1 kind: NodeNetworkConfigurationPolicy metadata: name: bond0-eth1-eth2-policy 1 spec: nodeSelector: 2 kubernetes.io/hostname: <node01> 3 desiredState: interfaces: - name: bond0 4 description: Bond with ports eth1 and eth2 5 type: bond 6 state: up 7 ipv4: dhcp: true 8 enabled: true 9 link-aggregation: mode: active-backup 10 options: miimon: '140' 11 port: 12 - eth1 - eth2 mtu: 1450 13
- 1
- 策略的名称。
- 2
- 可选: 如果没有包括
nodeSelector
参数,策略会应用到集群中的所有节点。 - 3
- 这个示例使用
hostname
节点选择器。 - 4
- 接口的名称。
- 5
- 可选:接口人类可读的接口描述。
- 6
- 接口的类型。这个示例创建了一个绑定。
- 7
- 创建后接口的请求状态。
- 8
- 可选:如果您不使用
dhcp
,可以设置静态 IP,或让接口没有 IP 地址。 - 9
- 在这个示例中启用
ipv4
。 - 10
- Bond 的驱动模式。这个示例使用 active 备份模式。
- 11
- 可选:本例使用 miimon 检查每 140ms 的绑定链接。
- 12
- 绑定中的下级节点 NIC。
- 13
- 可选:绑定的最大传输单元(MTU)。如果没有指定,其默认值为
1500
。
24.1.5.5. 示例:以太网接口节点网络配置策略
通过将 NodeNetworkConfigurationPolicy
清单应用到集群,在集群的节点上配置以太网接口。
以下 YAML 文件是一个以太接口的清单示例。它包含了示例值,需要使用自己的信息替换。
apiVersion: nmstate.io/v1 kind: NodeNetworkConfigurationPolicy metadata: name: eth1-policy 1 spec: nodeSelector: 2 kubernetes.io/hostname: <node01> 3 desiredState: interfaces: - name: eth1 4 description: Configuring eth1 on node01 5 type: ethernet 6 state: up 7 ipv4: dhcp: true 8 enabled: true 9
24.1.5.6. 示例:同一节点网络配置策略中的多个接口
您可以在相同的节点网络配置策略中创建多个接口。这些接口可以相互引用,允许您使用单个策略清单来构建和部署网络配置。
以下示例 YAML 文件在两个 NIC 和 VLAN 之间创建一个名为 bond10
的绑定,名为 bond10.103
,它连接到绑定。
apiVersion: nmstate.io/v1 kind: NodeNetworkConfigurationPolicy metadata: name: bond-vlan 1 spec: nodeSelector: 2 kubernetes.io/hostname: <node01> 3 desiredState: interfaces: - name: bond10 4 description: Bonding eth2 and eth3 5 type: bond 6 state: up 7 link-aggregation: mode: balance-xor 8 options: miimon: '140' 9 port: 10 - eth2 - eth3 - name: bond10.103 11 description: vlan using bond10 12 type: vlan 13 state: up 14 vlan: base-iface: bond10 15 id: 103 16 ipv4: dhcp: true 17 enabled: true 18
24.1.5.7. 示例:带有 VRF 实例网络配置策略的网络接口
通过应用 NodeNetworkConfigurationPolicy
自定义资源(CR)将虚拟路由和转发(VRF)实例与网络接口关联。
将 VRF 实例与网络接口关联只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
通过将 VRF 实例与网络接口关联,您可以支持流量隔离、独立路由决策和网络资源的逻辑分离。
在裸机环境中,您可以使用 MetalLB 通过属于 VRF 实例的接口宣布负载均衡器服务。如需更多信息,请参阅附加资源部分。
以下 YAML 文件是一个将 VRF 实例与网络接口关联的示例。如果运行 playbook,其中会包含必须替换为您自己的信息的样本值。
apiVersion: nmstate.io/v1 kind: NodeNetworkConfigurationPolicy metadata: name: vrfpolicy 1 spec: nodeSelector: vrf: "true" 2 maxUnavailable: 3 desiredState: interfaces: - name: ens4vrf 3 type: vrf 4 state: up vrf: port: - ens4 5 route-table-id: 2 6
其他资源
24.1.6. 捕获附加到网桥的 NIC 的静态 IP
捕获 NIC 的静态 IP 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
24.1.6.1. 示例:Linux 网桥接口节点网络配置策略,用于从附加到网桥的 NIC 中继承静态 IP 地址
在集群的节点上创建一个 Linux 网桥接口,并通过将单个 NodeNetworkConfigurationPolicy
清单应用到集群来将 NIC 的静态 IP 配置传输到桥接。
以下 YAML 文件是 Linux 网桥界面的清单示例。它包含了示例值,需要使用自己的信息替换。
apiVersion: nmstate.io/v1 kind: NodeNetworkConfigurationPolicy metadata: name: br1-eth1-copy-ipv4-policy 1 spec: nodeSelector: 2 node-role.kubernetes.io/worker: "" capture: eth1-nic: interfaces.name=="eth1" 3 eth1-routes: routes.running.next-hop-interface=="eth1" br1-routes: capture.eth1-routes | routes.running.next-hop-interface := "br1" desiredState: interfaces: - name: br1 description: Linux bridge with eth1 as a port type: linux-bridge 4 state: up ipv4: "{{ capture.eth1-nic.interfaces.0.ipv4 }}" 5 bridge: options: stp: enabled: false port: - name: eth1 6 routes: config: "{{ capture.br1-routes.routes.running }}"
其他资源
24.1.7. 示例:IP 管理
以下配置片段示例演示了不同的 IP 管理方法。
这些示例使用 ethernet
接口类型来简化示例,同时显示 Policy 配置中相关的上下文。这些 IP 管理示例可与其他接口类型一起使用。
24.1.7.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
# ...
- 1
- 使用接口的静态 IP 地址替换这个值。
24.1.7.2. 没有 IP 地址
以下片段确保接口没有 IP 地址:
# ... interfaces: - name: eth1 description: No IP on eth1 type: ethernet state: up ipv4: enabled: false # ...
24.1.7.3. 动态主机配置
以下片段配置了一个以太网接口,它使用动态 IP 地址、网关地址和 DNS:
# ... interfaces: - name: eth1 description: DHCP on eth1 type: ethernet state: up ipv4: dhcp: true enabled: true # ...
以下片段配置了一个以太网接口,它使用动态 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 # ...
24.1.7.4. DNS
默认情况下,nmstate
API 会在全局范围内存储 DNS 值,而不是将其存储在网络接口中。在某些情况下,您必须配置网络接口来存储 DNS 值。
设置一个 DNS 配置与修改 /etc/resolv.conf
文件相当。
要为网络接口定义 DNS 配置,您必须首先在网络接口 YAML 配置文件中指定 dns-resolver
部分。
在配置 DNS 解析器时,您无法使用 br-ex
网桥(一个 OVNKubernetes 管理的 Open vSwitch 网桥)作为接口,除非您手动配置了自定义的 br-ex
网桥。
如需更多信息,请参阅在裸机中部署安装程序置备的集群文档或在裸机中安装用户置备的集群 文档中的"创建包括自定义 br-ex 网桥的清单对象"。
以下示例显示了全局存储 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: search: - example.com - example.org server: - 2001:db8:f::1 - 192.0.2.251 # ...
以下示例显示,配置一个网络接口来存储 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 # ...
如果您需要配置网络接口来存储 DNS 值,而不是使用默认方法(使用
nmstate
API 在全局范围内存储 DNS 值),您可以在网络接口 YAML 文件中设置静态 DNS 值和静态 IP 地址。重要在网络接口级别上存储 DNS 值可能会导致名称解析问题,如 Open vSwitch (OVS) 网桥、Linux 网桥或绑定。
在接口级别存储 DNS 值的配置示例
# ... dns-resolver: config: search: - example.com - example.org server: - 2001:db8:1::d1 - 2001:db8:1::d2 - 192.0.2.1 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 # ...
如果要为您的网络接口设置静态 DNS 搜索域和动态 DNS 名称服务器,请在网络接口 YAML 配置文件中定义运行动态主机配置协议(DHCP)或 IPv6 自动配置(
autoconf
)机制的动态接口。设置
example.com
和example.org
静态 DNS 搜索域以及动态 DNS 名称服务器设置的示例配置# ... dns-resolver: config: search: - example.com - example.org server: [] 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 # ...
24.1.7.5. 静态路由
以下片段在接口 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 # ...