×

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

Red Hat支持在裸机、IBM Power®、IBM Z®、IBM® LinuxONE、VMware vSphere和Red Hat OpenStack Platform (RHOSP)安装的生产环境中使用Kubernetes NMState Operator。

Red Hat支持在Microsoft Azure上使用Kubernetes NMState Operator,但功能有限。支持仅限于在系统上将DNS服务器配置为安装后任务。

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

Kubernetes NMState Operator更新辅助NIC的网络配置。该Operator无法更新主NIC的网络配置,也无法更新大多数内部网络上的br-ex桥接。

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

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

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

NodeNetworkState

报告该节点上的网络状态。

NodeNetworkConfigurationPolicy

描述节点上所需的网络配置。通过将NodeNetworkConfigurationPolicy CR应用于集群,可以更新节点网络配置,包括添加和删除接口。

NodeNetworkConfigurationEnactment

报告对每个节点实施的网络策略。

安装Kubernetes NMState Operator

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

使用Web控制台安装Kubernetes NMState Operator

可以使用Web控制台安装Kubernetes NMState Operator。安装后,Operator可以将NMState状态控制器作为守护程序集部署到所有集群节点。

先决条件
  • 您已以具有cluster-admin权限的用户身份登录。

步骤
  1. 选择操作符OperatorHub

  2. 所有项目下方的搜索字段中,输入nmstate并单击Enter以搜索Kubernetes NMState Operator。

  3. 单击Kubernetes NMState Operator搜索结果。

  4. 单击安装以打开安装Operator窗口。

  5. 单击安装以安装Operator。

  6. Operator安装完成后,单击查看Operator

  7. 提供的API下,单击创建实例以打开创建kubernetes-nmstate实例的对话框。

  8. 在对话框的名称字段中,确保实例的名称为nmstate

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

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

摘要

安装 Kubernetes NMState Operator 后,Operator 会将 NMState 状态控制器作为守护程序集部署到集群中的所有节点。

使用 CLI 安装 Kubernetes NMState Operator

您可以使用 OpenShift CLI (oc) 安装 Kubernetes NMState Operator。安装后,Operator 可以将 NMState 状态控制器作为守护程序集部署到集群中的所有节点。

先决条件
  • 您已安装 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
  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
  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
  4. 确认nmstate Operator 部署的ClusterServiceVersion (CSV) 状态等于Succeeded

    $ oc get clusterserviceversion -n openshift-nmstate \
     -o custom-columns=Name:.metadata.name,Phase:.status.phase
    示例输出
    Name                                             Phase
    kubernetes-nmstate-operator.4.17.0-202210210157   Succeeded
  5. 创建nmstate Operator 的实例

    $ cat << EOF | oc apply -f -
    apiVersion: nmstate.io/v1
    kind: NMState
    metadata:
      name: nmstate
    EOF
  6. 验证 NMState Operator 的 Pod 是否正在运行

    $ oc get pod -n openshift-nmstate
    示例输出
    Name                                      Ready   Status  Restarts  Age
    pod/nmstate-cert-manager-5b47d8dddf-5wnb5   1/1   Running  0         77s
    pod/nmstate-console-plugin-d6b76c6b9-4dcwm  1/1   Running  0         77s
    pod/nmstate-handler-6v7rm                   1/1   Running  0         77s
    pod/nmstate-handler-bjcxw                   1/1   Running  0         77s
    pod/nmstate-handler-fv6m2                   1/1   Running  0         77s
    pod/nmstate-handler-kb8j6                   1/1   Running  0         77s
    pod/nmstate-handler-wn55p                   1/1   Running  0         77s
    pod/nmstate-operator-f6bb869b6-v5m92        1/1   Running  0        4m51s
    pod/nmstate-webhook-66d6bbd84b-6n674        1/1   Running  0         77s
    pod/nmstate-webhook-66d6bbd84b-vlzrd        1/1   Running  0         77s

查看 Kubernetes NMState Operator 收集的指标

Kubernetes NMState Operator (kubernetes-nmstate-operator) 可以从kubernetes_nmstate_features_applied组件收集指标,并将其作为可直接使用的指标公开。作为查看指标的用例,考虑您创建了NodeNetworkConfigurationPolicy自定义资源并想要确认该策略是否处于活动状态的情况。

kubernetes_nmstate_features_applied 指标并非 API,并且可能会在 OpenShift Container Platform 版本之间发生更改。

在**开发者**和**管理员**视角中,指标 UI 包含一些为所选项目预定义的 CPU、内存、带宽和网络数据包查询。您可以针对项目的 CPU、内存、带宽、网络数据包和应用程序指标运行自定义 Prometheus 查询语言 (PromQL) 查询。

以下示例演示了应用于 OpenShift Container Platform 集群的NodeNetworkConfigurationPolicy清单示例。

# ...
interfaces:
  - name: br1
    type: linux-bridge
    state: up
    ipv4:
      enabled: true
      dhcp: true
      dhcp-custom-hostname: foo
    bridge:
      options:
        stp:
          enabled: false
      port: []
# ...

NodeNetworkConfigurationPolicy清单公开指标并使其可用于集群监控 Operator (CMO)。以下示例显示了一些公开的指标。

controller_runtime_reconcile_time_seconds_bucket{controller="nodenetworkconfigurationenactment",le="0.005"} 16
controller_runtime_reconcile_time_seconds_bucket{controller="nodenetworkconfigurationenactment",le="0.01"} 16
controller_runtime_reconcile_time_seconds_bucket{controller="nodenetworkconfigurationenactment",le="0.025"} 16
...
# HELP kubernetes_nmstate_features_applied Number of nmstate features applied labeled by its name
# TYPE kubernetes_nmstate_features_applied gauge
kubernetes_nmstate_features_applied{name="dhcpv4-custom-hostname"} 1
先决条件
  • 您已安装 OpenShift CLI (oc)。

  • 您已以管理员身份登录 Web 控制台并安装了 Kubernetes NMState Operator。

  • 您可以作为开发者或具有您正在查看其指标的项目的查看权限的用户访问集群。

  • 您已为用户定义的项目启用监控。

  • 您已在用户定义的项目中部署了一个服务。

  • 您已创建NodeNetworkConfigurationPolicy清单并将其应用于您的集群。

步骤
  1. 如果您想在 OpenShift Container Platform Web 控制台中从**开发者**视角查看指标,请完成以下任务:

    1. 点击观察

    2. 要查看特定项目的指标,请在项目:列表中选择该项目。例如,openshift-nmstate

    3. 点击指标选项卡。

    4. 要在图上可视化指标,请从选择查询列表中选择一个查询,或通过选择显示 PromQL基于所选查询创建自定义 PromQL 查询。

      在**开发者**视角中,您一次只能运行一个查询。

  2. 如果您想在 OpenShift Container Platform Web 控制台中从**管理员**视角查看指标,请完成以下任务:

    1. 点击观察指标

    2. 表达式字段中输入kubernetes_nmstate_features_applied

    3. 点击添加查询,然后点击运行查询

  3. 要浏览可视化指标,请执行以下任一任务:

    1. 要放大图表并更改时间范围,请执行以下任一任务:

      • 要以视觉方式选择时间范围,请水平点击并拖动图表。

      • 要选择时间范围,请使用控制台左上角的菜单。

    2. 要重置时间范围,请选择重置缩放

    3. 要在特定时间点显示所有查询的输出,请将鼠标光标悬停在该时间点的图表上。查询输出将显示在一个弹出框中。