第 5 章 Networking Operators


5.1. Kubernetes NMState Operator

Kubernetes NMState Operator 提供了一个 Kubernetes API,用于使用 NMState 在 OpenShift Container Platform 集群的节点上执行状态驱动的网络配置。Kubernetes NMState Operator 为用户提供了在集群节点上配置各种网络接口类型、DNS 和路由的功能。另外,集群节点中的守护进程会定期向 API 服务器报告每个节点的网络接口状态。

重要

红帽在使用裸机、IBM Power®、IBM Z®、IBM® LinuxONE、VMware vSphere 和 OpenStack 安装的生产环境中支持 Kubernetes NMState Operator。

在 OpenShift Container Platform 中使用 NMState 之前,必须安装 Kubernetes NMState Operator。安装 Kubernetes NMState Operator 后,您可以完成以下任务:

  • 观察和更新节点网络状态和配置
  • 有关创建包含自定义 br-ex 网桥的清单对象,以了解有关这些任务的更多信息,请参阅附加资源部分

在 OpenShift Container Platform 中使用 NMState 之前,必须安装 Kubernetes NMState Operator。

注意

Kubernetes NMState Operator 更新二级 NIC 的网络配置。Operator 无法更新主 NIC 的网络配置,或更新大多数内部网络中的 br-ex 网桥。

在裸机平台上,只有在将 br-ex 网桥设置为机器配置时,才支持使用 Kubernetes NMState Operator 更新 br-ex 网桥网络配置。要将 br-ex 网桥更新为安装后任务,您必须将 br-ex 网桥设置为集群的 NodeNetworkConfigurationPolicy 自定义资源 (CR) 的 NMState 配置中的接口。如需更多信息,请参阅安装后配置中的创建包含自定义 br-ex 网桥的清单对象

OpenShift Container Platform 使用 nmstate 来报告并配置节点网络的状态。这样便可通过将单个配置清单应用到集群来修改网络策略配置,例如在所有节点上创建 Linux 网桥。

节点网络由以下对象监控和更新:

NodeNetworkState
报告该节点上的网络状态。
NodeNetworkConfigurationPolicy
描述节点上请求的网络配置。您可以通过将 NodeNetworkConfigurationPolicy CR 应用到集群来更新节点网络配置,包括添加和删除网络接口 。
NodeNetworkConfigurationEnactment
报告每个节点上采用的网络策略。

5.1.1. 安装 Kubernetes NMState Operator

您可以使用 web 控制台或 CLI 安装 Kubernetes NMState Operator。

您可以使用 web 控制台安装 Kubernetes NMState Operator。安装 Kubernetes NMState Operator 后,Operator 将 NMState State Controller 部署为在所有集群节点中的守护进程集。

先决条件

  • 您以具有 cluster-admin 权限的用户身份登录。

流程

  1. 选择 Operators OperatorHub
  2. All Items 下面的搜索字段中, 输入 nmstate 并点 Enter 来搜索 Kubernetes NMState Operator。
  3. 点 Kubernetes NMState Operator 搜索结果。
  4. Install 打开 Install Operator 窗口。
  5. Install 安装 Operator。
  6. Operator 安装完成后,点 View Operator
  7. Provided APIs 下,点 Create Instance 打开对话框以创建 kubernetes-nmstate 实例。
  8. 在对话框的 Name 字段中,确保实例的名称是 nmstate.

    注意

    名称限制是一个已知问题。该实例是整个集群的单个实例。

  9. 接受默认设置并点 Create 创建实例。

5.1.1.2. 使用 CLI 安装 Kubernetes NMState Operator

您可以使用 OpenShift CLI(oc) 安装 Kubernetes NMState Operator。安装后,Operator 可将 NMState State Controller 部署为在所有集群节点中的守护进程集。

先决条件

  • 已安装 OpenShift CLI(oc)。
  • 您以具有 cluster-admin 权限的用户身份登录。

流程

  1. 创建 nmstate Operator 命名空间:

    $ cat << EOF | oc apply -f -
    apiVersion: v1
    kind: Namespace
    metadata:
      name: openshift-nmstate
    spec:
      finalizers:
      - kubernetes
    EOF
    Copy to Clipboard Toggle word wrap
  2. 创建 OperatorGroup

    $ cat << EOF | oc apply -f -
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: openshift-nmstate
      namespace: openshift-nmstate
    spec:
      targetNamespaces:
      - openshift-nmstate
    EOF
    Copy to Clipboard Toggle word wrap
  3. 订阅 nmstate Operator:

    $ cat << EOF| oc apply -f -
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: kubernetes-nmstate-operator
      namespace: openshift-nmstate
    spec:
      channel: stable
      installPlanApproval: Automatic
      name: kubernetes-nmstate-operator
      source: redhat-operators
      sourceNamespace: openshift-marketplace
    EOF
    Copy to Clipboard Toggle word wrap
  4. 确认 nmstate Operator 部署的 ClusterServiceVersion (CSV) 状态等于 Succeeded

    $ oc get clusterserviceversion -n openshift-nmstate \
     -o custom-columns=Name:.metadata.name,Phase:.status.phase
    Copy to Clipboard Toggle word wrap
  5. 创建 nmstate Operator 实例:

    $ cat << EOF | oc apply -f -
    apiVersion: nmstate.io/v1
    kind: NMState
    metadata:
      name: nmstate
    EOF
    Copy to Clipboard Toggle word wrap
  6. 如果您的集群因为 DNS 连接问题导致 DNS 健康检查探测出现问题,您可以在 NMState CRD 中添加以下 DNS 主机名配置,以便在可以解决这些问题的健康检查中构建:

    apiVersion: nmstate.io/v1
    kind: NMState
    metadata:
      name: nmstate
    spec:
      probeConfiguration:
        dns:
          host: redhat.com
    # ...
    Copy to Clipboard Toggle word wrap
    1. 运行以下命令,将 DNS 主机名配置应用到集群网络。确保将 <filename> 替换为 CRD 文件的名称。

      $ oc apply -f <filename>.yaml
      Copy to Clipboard Toggle word wrap

验证

  • 输入以下命令验证 NMState Operator 的所有 pod 是否具有 Running 状态:

    $ oc get pod -n openshift-nmstate
    Copy to Clipboard Toggle word wrap

5.1.2. 卸载 Kubernetes NMState Operator

您可以使用 Operator Lifecycle Manager (OLM)卸载 Kubernetes NMState Operator,但设计 OLM 不会删除任何关联的自定义资源定义(CRD)、自定义资源(CR)或 API Services。

在从 OLM 使用的 Subcription 资源卸载 Kubernetes NMState Operator 前,请确定要删除的 Kubernetes NMState Operator 资源。此标识可确保您可以在不影响正在运行的集群的情况下删除资源。

如果您需要重新安装 Kubernetes NMState Operator,请参阅"使用 CLI 安装 Kubernetes NMState Operator"或"使用 web 控制台安装 Kubernetes NMState Operator"。

先决条件

  • 已安装 OpenShift CLI(oc)。
  • 已安装 jq CLI 工具。
  • 您以具有 cluster-admin 权限的用户身份登录。

流程

  1. 运行以下命令,从 Subcription 资源取消订阅 Kubernetes NMState Operator:

    $ oc delete --namespace openshift-nmstate subscription kubernetes-nmstate-operator
    Copy to Clipboard Toggle word wrap
  2. 查找与 Kubernetes NMState Operator 关联的 ClusterServiceVersion (CSV) 资源:

    $ oc get --namespace openshift-nmstate clusterserviceversion
    Copy to Clipboard Toggle word wrap

    列出 CSV 资源的输出示例

    NAME                              	  DISPLAY                   	VERSION   REPLACES     PHASE
    kubernetes-nmstate-operator.v4.18.0   Kubernetes NMState Operator   4.18.0           	   Succeeded
    Copy to Clipboard Toggle word wrap

  3. 删除 CSV 资源。删除文件后,OLM 会删除其为 Operator 创建的某些资源,如 RBAC

    $ oc delete --namespace openshift-nmstate clusterserviceversion kubernetes-nmstate-operator.v4.18.0
    Copy to Clipboard Toggle word wrap
  4. 运行以下命令来删除 nmstate CR 和任何关联的 Deployment 资源:

    $ oc -n openshift-nmstate delete nmstate nmstate
    Copy to Clipboard Toggle word wrap
    $ oc delete --all deployments --namespace=openshift-nmstate
    Copy to Clipboard Toggle word wrap
  5. 删除 nmstate CR 后,从 console.operator.openshift.io/cluster CR 中删除 nmstate-console-plugin 控制台插件名称。

    1. 运行以下命令,存储在启用插件列表中存在 nmstate-console-plugin 条目的位置。以下命令使用 jq CLI 工具将条目的索引存储在名为 INDEX 的环境变量中:

      INDEX=$(oc get console.operator.openshift.io cluster -o json | jq -r '.spec.plugins | to_entries[] | select(.value == "nmstate-console-plugin") | .key')
      Copy to Clipboard Toggle word wrap
    2. 运行以下 patch 命令,从 console.operator.openshift.io/cluster CR 中删除 nmstate-console-plugin 条目:

      $ oc patch console.operator.openshift.io cluster --type=json -p "[{\"op\": \"remove\", \"path\": \"/spec/plugins/$INDEX\"}]" 
      1
      Copy to Clipboard Toggle word wrap
      1
      INDEX 是辅助变量。您可以为此变量指定不同的名称。
  6. 运行以下命令删除所有自定义资源定义 (CRD),如 nmstates.nmstate.io

    $ oc delete crd nmstates.nmstate.io
    Copy to Clipboard Toggle word wrap
    $ oc delete crd nodenetworkconfigurationenactments.nmstate.io
    Copy to Clipboard Toggle word wrap
    $ oc delete crd nodenetworkstates.nmstate.io
    Copy to Clipboard Toggle word wrap
    $ oc delete crd nodenetworkconfigurationpolicies.nmstate.io
    Copy to Clipboard Toggle word wrap
  7. 删除命名空间:

    $ oc delete namespace kubernetes-nmstate
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat