27.2. 观察和更新节点网络状态和配置
有关如何安装 NMState Operator 的更多信息,请参阅 Kubernetes NMState Operator。
27.2.1. 查看节点的网络状态 复制链接链接已复制到粘贴板!
节点网络状态是集群中所有节点的网络配置。一个 NodeNetworkState
对象存在于集群中的每个节点上。此对象定期更新,并捕获该节点的网络状态。
流程
列出集群中的所有
NodeNetworkState
对象:oc get nns
$ oc get nns
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查
NodeNetworkState
对象以查看该节点上的网络。为了清楚,这个示例中的输出已被重新编辑:oc get nns node01 -o yaml
$ oc get nns node01 -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
27.2.2. NodeNetworkConfigurationPolicy 清单文件 复制链接链接已复制到粘贴板!
NodeNetworkConfigurationPolicy
(NNCP)清单文件定义 Kubernetes NMState Operator 用来为 OpenShift Container Platform 集群中存在的节点配置网络的策略。
如果要将多个 NNCP CR 应用到节点,您必须按照策略名称字母排序的逻辑顺序创建 NNCP。Kubernetes NMState Operator 持续检查新创建的 NNCP CR,以便 Operator 可立即将 CR 应用到节点。请考虑以下逻辑顺序问题示例:
-
您可以创建 NNCP 1 来定义侦听 VLAN 端口的网桥接口,如
eth1.1000
。 -
您可以创建 NNCP 2 来定义 VLAN 接口并为此接口指定端口,如
eth1.1000
。 - 在将 NNCP 2 应用到节点前,请应用 NNCP 1。
节点会遇到节点连接问题,因为端口 eth1.1000
不存在。因此,集群会失败。
将节点网络策略应用到节点后,Kubernetes NMState Operator 根据节点网络策略详情配置节点的网络配置。
您可以使用 OpenShift CLI (oc
)或 OpenShift Container Platform Web 控制台创建 NNCP。作为安装后任务,您可以创建 NNCP 或编辑现有的 NNCP。
在创建 NNCP 之前,请确保读取"示例不同接口的策略配置"文档。
如果要删除 NNCP,您可以使用 oc delete nncp
命令完成此操作。但是,此命令不会删除任何对象,如网桥接口。
删除向节点添加接口的节点网络策略不会更改节点上的策略配置。同样,删除接口不会删除策略,因为 Kubernetes NMState Operator 会在 pod 或节点重启时重新创建删除的接口。
要有效地删除 NNCP、节点网络策略和任何接口通常需要以下操作:
-
编辑 NNCP 并从文件中删除接口详情。确保您没有从文件中删除
name
,state
, 和type
参数。 -
在 NNCP 的
interfaces.state
部分下添加state: absent
。 -
运行
oc apply -f <nncp_file_name>
。在 Kubernetes NMState Operator 将节点网络策略应用到集群中的每个节点后,每个节点中存在的任何接口现在都会标记为 absent。 -
运行
oc delete nncp
以删除 NNCP。
其他资源
27.2.3. 使用 CLI 管理策略 复制链接链接已复制到粘贴板!
27.2.3.1. 在节点上创建接口 复制链接链接已复制到粘贴板!
通过将一个 NodeNetworkConfigurationPolicy
(NNCP) 清单应用到集群来在集群的节点上创建一个接口。清单详细列出了请求的接口配置。
默认情况下,清单会应用到集群中的所有节点。要将接口只添加到特定的节点,在节点选择器上添加 spec: nodeSelector
参数和适当的 <key>:<value>
。
您可以同时配置多个支持 nmstate 节点。该配置适用于并行节点的 50%。如果网络连接失败,此策略可防止整个集群不可用。要将策略配置并行应用到集群的特定部分,请使用 NodeNetworkConfigurationPolicy
清单配置文件中的 maxUnavailable
参数。
如果您有两个节点,并且对这些节点应用了一个 NNCP 清单,其中 maxUnavailable
参数设置为 50%
, 则一次只有一个节点可以接收 NNCP 配置。如果您引入一个额外的 NNCP 清单文件,其 maxUnavailable
参数设置为 50%
,则这个 NCCP 独立于初始 NNCP。这意味着,如果 NNCP 清单对节点应用错误配置,则您无法保证集群有一半的功能。
流程
创建
NodeNetworkConfigurationPolicy
清单。以下示例在所有 worker 节点上配置了一个 Linux 桥接并配置 DNS 解析器:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建节点网络策略:
oc apply -f br1-eth1-policy.yaml
$ oc apply -f br1-eth1-policy.yaml
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 节点网络配置策略清单的文件名。
其他资源
27.2.4. 确认节点上的节点网络策略更新 复制链接链接已复制到粘贴板!
当您应用节点网络策略时,会为集群中的每个节点创建一个 NodeNetworkConfigurationEnactment
对象。节点网络配置是一个只读对象,代表在该节点上执行策略的状态。如果策略在节点上应用失败,则该节点会包括 traceback 用于故障排除。
流程
要确认策略已应用到集群,请列出策略及其状态:
oc get nncp
$ oc get nncp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果策略配置成功的时间比预期的要长,您可以检查特定策略请求的状态和状态条件:
oc get nncp <policy> -o yaml
$ oc get nncp <policy> -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果策略在所有节点上配置成功的时间比预期的要长,您可以列出集群中的 Enactments 的状态:
oc get nnce
$ oc get nnce
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:要查看特定的 Enactment 的配置,包括对失败配置进行任何错误报告:
oc get nnce <node>.<policy> -o yaml
$ oc get nnce <node>.<policy> -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
27.2.5. 从节点中删除接口 复制链接链接已复制到粘贴板!
您可以通过编辑 NodeNetworkConfigurationPolicy
对象从集群中的一个或多个节点中删除接口,并将接口的状态
设置为 absent
。
从节点中删除接口不会自动将节点网络配置恢复到以前的状态。如果要恢复之前的状态,则需要在策略中定义节点网络配置。
如果删除了网桥或绑定接口,以前附加到该网桥或绑定接口的任何节点 NIC 都会处于 down
状态并变得不可访问。为了避免连接丢失,在相同策略中配置节点 NIC,使其具有 up
状态,以及使用 DHCP 或一个静态 IP 地址。
删除添加接口的节点网络策略不会更改节点上的策略配置。虽然 NodeNetworkConfigurationPolicy
是集群中的一个对象,但对象只代表请求的配置。同样,删除接口不会删除策略。
流程
更新用来创建接口的
NodeNetworkConfigurationPolicy
清单。以下示例删除了 Linux 网桥,并使用 DHCP 配置eth1
NIC 以避免断开连接:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新节点上的策略并删除接口:
oc apply -f <br1-eth1-policy.yaml>
$ oc apply -f <br1-eth1-policy.yaml>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 策略清单的文件名。
27.2.6. 不同接口的策略配置示例 复制链接链接已复制到粘贴板!
在读取不同示例 NodeNetworkConfigurationPolicy
(NNCP) 清单配置前,当您将策略应用到节点时请考虑以下因素,以便集群在其最佳性能条件下运行:
- 如果要将多个 NNCP CR 应用到节点,您必须按照策略名称字母排序的逻辑顺序创建 NNCP。Kubernetes NMState Operator 持续检查新创建的 NNCP CR,以便 Operator 可立即将 CR 应用到节点。
-
当您需要将策略应用到多个节点时,但只想为所有目标节点创建一个 NNCP,Kubernetes NMState Operator 会按顺序将策略应用到每个节点。您可以使用集群配置中的
maxUnavailable
参数为目标节点设置策略应用程序的速度和覆盖范围。通过为参数设置一个较低的百分比值,您可以在中断只会影响接收策略应用程序的一小部分节点时,降低出现集群范围中断的风险。 -
如果您在两个 NNCP 清单中将
maxUnavailable
参数设置为50%
,策略配置覆盖会应用到集群中的 100% 节点。 - 当节点重启时,Kubernetes NMState Operator 无法控制它将策略应用到节点的顺序。Kubernetes NMState Operator 可能会按顺序应用相互独立的策略,这会导致网络对象降级。
- 考虑在单个策略中指定所有相关网络配置。
27.2.6.1. 示例: Linux bridge interface 节点网络配置策略 复制链接链接已复制到粘贴板!
通过将一个 NodeNetworkConfigurationPolicy
清单应用到集群来在集群的节点上创建一个 Linux 网桥接口。
以下 YAML 文件是 Linux 网桥界面的清单示例。如果运行 playbook,其中会包含必须替换为您自己的信息的样本值。
27.2.6.2. 示例:VLAN 接口节点网络配置策略 复制链接链接已复制到粘贴板!
通过将一个 NodeNetworkConfigurationPolicy
清单应用到集群来在集群的节点上创建一个 VLAN 接口。
在单个 NodeNetworkConfigurationPolicy
清单中为节点的 VLAN 接口定义所有相关配置。例如,为节点定义 VLAN 接口,在同一 NodeNetworkConfigurationPolicy
清单中为 VLAN 接口定义相关的路由。
当节点重启时,Kubernetes NMState Operator 无法控制应用策略的顺序。因此,如果您将单独的策略用于相关的网络配置,Kubernetes NMState Operator 可能会按顺序应用这些策略,从而导致网络对象降级。
以下 YAML 文件是 VLAN 接口的清单示例。如果运行 playbook,其中会包含必须替换为您自己的信息的样本值。
27.2.6.3. 示例:绑定接口节点网络配置策略 复制链接链接已复制到粘贴板!
通过将一个 NodeNetworkConfigurationPolicy
清单应用到集群来在集群的节点上创建一个绑定接口。
OpenShift Container Platform 只支持以下绑定模式:
-
active-backup
-
balance-xor
-
802.3ad
不支持其他绑定模式。
balance-xor
和 802.3ad
绑定模式需要切换配置来建立"EtherChannel"或类似的端口分组。这两个模式还需要额外的负载均衡配置,具体取决于通过接口传递的流量的来源和目的地。active-backup
绑定模式不需要任何交换机配置。不支持其他绑定模式。
以下 YAML 文件是绑定接口的清单示例。如果运行 playbook,其中会包含必须替换为您自己的信息的样本值。
- 1
- 策略的名称。
- 2
- 可选: 如果没有包括
nodeSelector
参数,策略会应用到集群中的所有节点。 - 3
- 这个示例使用
hostname
节点选择器。 - 4
- 接口的名称。
- 5
- 可选:接口人类可读的接口描述。
- 6
- 接口的类型。这个示例创建了一个绑定。
- 7
- 创建后接口的请求状态。
- 8
- 可选:如果您不使用
dhcp
,可以设置静态 IP,或让接口没有 IP 地址。 - 9
- 在这个示例中启用
ipv4
。 - 10
- Bond 的驱动模式。这个示例使用
活跃的备份
。 - 11
- 可选:本例使用 miimon 检查每 140ms 的绑定链接。
- 12
- 绑定中的下级节点 NIC。
- 13
- 可选:绑定的最大传输单元(MTU)。如果没有指定,其默认值为
1500
。
27.2.6.4. 示例:以太网接口节点网络配置策略 复制链接链接已复制到粘贴板!
通过将 NodeNetworkConfigurationPolicy
清单应用到集群,在集群的节点上配置以太网接口。
以下 YAML 文件是一个以太接口的清单示例。它包含了示例值,需要使用自己的信息替换。
27.2.6.5. 示例:同一节点网络配置策略中的多个接口 复制链接链接已复制到粘贴板!
您可以在相同的节点网络配置策略中创建多个接口。这些接口可以相互引用,允许您使用单个策略清单来构建和部署网络配置。
以下示例 YAML 文件在两个 NIC 和 VLAN 之间创建一个名为 bond10
的绑定,名为 bond10.103
,它连接到绑定。
27.2.7. 捕获附加到网桥的 NIC 的静态 IP 复制链接链接已复制到粘贴板!
捕获 NIC 的静态 IP 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
在集群的节点上创建一个 Linux 网桥接口,并通过将单个 NodeNetworkConfigurationPolicy
清单应用到集群来将 NIC 的静态 IP 配置传输到桥接。
以下 YAML 文件是 Linux 网桥界面的清单示例。它包含了示例值,需要使用自己的信息替换。
27.2.8. 示例:IP 管理 复制链接链接已复制到粘贴板!
以下配置片段示例演示了不同的 IP 管理方法。
这些示例使用 ethernet
接口类型来简化示例,同时显示 Policy 配置中相关的上下文。这些 IP 管理示例可与其他接口类型一起使用。
27.2.8.1. Static 复制链接链接已复制到粘贴板!
以下片段在以太网接口中静态配置 IP 地址:
- 1
- 使用接口的静态 IP 地址替换这个值。
27.2.8.2. 没有 IP 地址 复制链接链接已复制到粘贴板!
以下片段确保接口没有 IP 地址:
当您将 ipv4.enabled
和 ipv6.enabled
参数设置为 false
时,始终将 state
参数设置为 up
,以禁用接口。如果使用此配置设置了 state: down
,接口会因为自动 DHCP 分配而接收 DHCP IP 地址。
27.2.8.3. 动态主机配置 复制链接链接已复制到粘贴板!
以下片段配置了一个以太网接口,它使用动态 IP 地址、网关地址和 DNS:
以下片段配置了一个以太网接口,它使用动态 IP 地址,但不使用动态网关地址或 DNS:
27.2.8.4. DNS 复制链接链接已复制到粘贴板!
将 DNS 配置设置为修改 /etc/resolv.conf
文件。以下片段在主机上设置 DNS 配置。
- 1
- 您必须配置带有
auto-dns: false
的接口,或者您必须在接口上使用静态 IP 配置,以便 Kubernetes NMState 存储自定义 DNS 设置。
在配置 DNS 解析器时,您无法使用 br-ex
(一个 由 OVNKubernetes 管理的 Open vSwitch 网桥)作为接口。
27.2.8.5. 静态路由 复制链接链接已复制到粘贴板!
以下片段在接口 eth1
中配置静态路由和静态 IP。
在配置静态路由时,您无法使用 OVN-Kubernetes br-ex
网桥作为下一个跃点接口,除非您手动配置自定义的 br-ex
网桥。