第 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
权限的用户身份登录。
流程
-
选择 Operators
OperatorHub。 -
在 All Items 下面的搜索字段中, 输入
nmstate
并点 Enter 来搜索 Kubernetes NMState Operator。 - 点 Kubernetes NMState Operator 搜索结果。
- 点 Install 打开 Install Operator 窗口。
- 点 Install 安装 Operator。
- Operator 安装完成后,点 View Operator。
-
在 Provided APIs 下,点 Create Instance 打开对话框以创建
kubernetes-nmstate
实例。 在对话框的 Name 字段中,确保实例的名称是
nmstate.
注意名称限制是一个已知问题。该实例是整个集群的单个实例。
- 接受默认设置并点 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
权限的用户身份登录。
流程
创建
nmstate
Operator 命名空间:$ cat << EOF | oc apply -f - apiVersion: v1 kind: Namespace metadata: name: openshift-nmstate spec: finalizers: - kubernetes EOF
创建
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
订阅
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
确认
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
创建
nmstate
Operator 实例:$ cat << EOF | oc apply -f - apiVersion: nmstate.io/v1 kind: NMState metadata: name: nmstate EOF
验证 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 版本之间有所变化。
在 Developer 和 Administrator 视角中, 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
清单,并将其应用到集群。
流程
如果要从 OpenShift Container Platform Web 控制台中的 Developer 视角查看指标,请完成以下任务:
- 点 Observe。
-
要查看特定项目的指标,请在 Project: 列表中选择该项目。例如,
openshift-nmstate
。 - 点 Metrics 选项卡。
要在图表中视觉化指标,请从 Select query 列表中选择查询,或者通过选择 Show PromQL 根据所选查询创建自定义 PromQL 查询。
注意在 Developer 视角中,您一次只能运行一个查询。
如果要从 OpenShift Container Platform Web 控制台中的 Administrator 视角查看指标,请完成以下任务:
-
点 Observe
Metrics。 -
在 Expression 字段中输入
kubernetes_nmstate_features_applied
。 - 点 Add query,然后点 Run query。
-
点 Observe
要探索视觉化的指标,请执行以下操作之一:
要放大图表并更改时间范围,请执行以下任何任务:
- 要可视化选择时间范围,请单击并拖动图表。
- 要选择时间范围,请使用控制台左上角的菜单。
- 要重置时间范围,请选择 Reset Zoom。
- 要显示所有查询在特定时间点的输出,请将鼠标光标停留在图表中的对应点上。查询输出显示在弹出窗口中。