第 6 章 网络 Operator


6.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 和 Red Hat OpenStack Platform (RHOSP) 安装上的生产环境中支持 Kubernetes NMState Operator。

红帽支持在 Microsoft Azure 上使用 Kubernetes NMState Operator,但有使用限制。支持仅限于将系统中的 DNS 服务器配置为安装后任务。

在 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
报告每个节点上采用的网络策略。

6.1.1. 安装 Kubernetes NMState Operator

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

6.1.1.1. 使用 Web 控制台安装 Kubernetes NMState Operator

您可以使用 web 控制台安装 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 创建实例。

概述

安装 Kubernetes NMState Operator 后,Operator 将 NMState State Controller 部署为在所有集群节点中的守护进程集。

6.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
  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

6.1.1.3. 查看 Kubernetes NMState Operator 收集的指标

Kubernetes NMState Operator kubernetes-nmstate-operator 可以从 kubernetes_nmstate_features_applied 组件收集指标,并将其公开为可随时使用的指标。作为查看指标的用例,请考虑创建 NodeNetworkConfigurationPolicy 自定义资源且您要确认策略处于活跃状态的情况。

注意

kubernetes_nmstate_features_applied 指标不是一个 API,可能会在 OpenShift Container Platform 版本之间有所变化。

DeveloperAdministrator 视角中, Metrics UI 包括所选项目的一些预定义 CPU、内存、带宽和网络数据包查询。您可以对项目的 CPU、内存、带宽、网络数据包和应用程序指标运行自定义 Prometheus Query Language (PromQL) 查询。

以下示例演示了一个 NodeNetworkConfigurationPolicy 清单示例,它应用到 OpenShift Container Platform 集群:

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

NodeNetworkConfigurationPolicy 清单会公开指标,并使其可用于 Cluster Monitoring 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 控制台中的 Developer 视角查看指标,请完成以下任务:

    1. Observe
    2. 要查看特定项目的指标,请在 Project: 列表中选择该项目。例如,openshift-nmstate
    3. Metrics 选项卡。
    4. 要在图表中视觉化指标,请从 Select query 列表中选择查询,或者通过选择 Show PromQL 根据所选查询创建自定义 PromQL 查询。

      注意

      Developer 视角中,您一次只能运行一个查询。

  2. 如果要从 OpenShift Container Platform Web 控制台中的 Administrator 视角查看指标,请完成以下任务:

    1. Observe Metrics
    2. Expression 字段中输入 kubernetes_nmstate_features_applied
    3. Add query,然后点 Run query
  3. 要探索视觉化的指标,请执行以下操作之一:

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

      • 要可视化选择时间范围,请单击并拖动图表。
      • 要选择时间范围,请使用控制台左上角的菜单。
    2. 要重置时间范围,请选择 Reset Zoom
    3. 要显示所有查询在特定时间点的输出,请将鼠标光标停留在图表中的对应点上。查询输出显示在弹出窗口中。

6.1.2. 其他资源

6.1.3. 后续步骤

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.