第 28 章 Kubernetes NMState


28.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 更新二级 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
报告每个节点上采用的网络策略。

28.1.1. 安装 Kubernetes NMState Operator

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

28.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 创建实例。

概述

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

28.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:
      labels:
        kubernetes.io/metadata.name: openshift-nmstate
        name: openshift-nmstate
      name: openshift-nmstate
    spec:
      finalizers:
      - kubernetes
    EOF
  2. 创建 OperatorGroup

    $ cat << EOF | oc apply -f -
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      annotations:
        olm.providedAPIs: NMState.v1.nmstate.io
      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:
      labels:
        operators.coreos.com/kubernetes-nmstate-operator.openshift-nmstate: ""
      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.16.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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.