30.2. 安装 MetalLB Operator


作为集群管理员,您可以添加 MetallB Operator,以便 Operator 可以管理集群中的 MetalLB 实例的生命周期。

MetalLB 和 IP 故障转移不兼容。如果您为集群配置了 IP 故障切换,请在安装 Operator 前执行删除 IP 故障切换的步骤。

30.2.1. 使用 Web 控制台从 OperatorHub 安装 MetalLB Operator

作为集群管理员,您可以使用 OpenShift Container Platform Web 控制台安装 MetalLB Operator。

先决条件

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

流程

  1. 在 OpenShift Container Platform Web 控制台中导航至 Operators OperatorHub
  2. Filter by keyword 框中输入关键字,或滚动以查找您想要的 Operator。例如,键入 metallb 来查找 MetalLB Operator。

    您还可以根据基础架构功能过滤选项。例如,如果您希望 Operator 在断开连接的环境中工作,请选择 Disconnected

  3. Install Operator 页面中,接受默认值并点 Install

验证

  1. 确认安装成功:

    1. 导航到 Operators Installed Operators 页面。
    2. 检查 Operator 是否安装在 openshift-operators 命名空间中,其状态是否为 Succeeded
  2. 如果 Operator 没有成功安装,请检查 Operator 的状态并查看日志:

    1. 导航到 Operators Installed Operators 页面,并检查 Status 列中是否有任何错误或故障。
    2. 导航到 Workloads Pods 页面,并检查 openshift-operators 项目中报告问题的 pod 的日志。

30.2.2. 使用 CLI 从 OperatorHub 安装

您可以使用 CLI 从 OperatorHub 安装 Operator,而不必使用 OpenShift Container Platform Web 控制台。您可以使用 OpenShift CLI(oc)安装 MetalLB Operator。

建议您在使用 metallb-system 命名空间中安装 Operator 的 CLI 时使用。

先决条件

  • 在裸机硬件上安装的集群。
  • 安装 OpenShift CLI(oc)。
  • 以具有 cluster-admin 特权的用户身份登录。

流程

  1. 输入以下命令为 MetalLB Operator 创建命名空间:

    $ cat << EOF | oc apply -f -
    apiVersion: v1
    kind: Namespace
    metadata:
      name: metallb-system
    EOF
  2. 在命名空间中创建 Operator 组自定义资源(CR):

    $ cat << EOF | oc apply -f -
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: metallb-operator
      namespace: metallb-system
    EOF
  3. 确认 Operator 组已安装在命名空间中:

    $ oc get operatorgroup -n metallb-system

    输出示例

    NAME               AGE
    metallb-operator   14m

  4. 创建一个 Subscription CR:

    1. 定义 Subscription CR 并保存 YAML 文件,如 metallb-sub.yaml

      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        name: metallb-operator-sub
        namespace: metallb-system
      spec:
        channel: stable
        name: metallb-operator
        source: redhat-operators 1
        sourceNamespace: openshift-marketplace
      1
      您必须指定 redhat-operators 值。
    2. 要创建 Subscription CR,请运行以下命令:

      $ oc create -f metallb-sub.yaml
  5. 可选: 要确保 BGP 和 BFD 指标出现在 Prometheus 中,您可以使用以下命令标记命名空间:

    $ oc label ns metallb-system "openshift.io/cluster-monitoring=true"

验证

验证步骤假定 metallb-system 命名空间中安装了 MetalLB Operator。

  1. 确认安装计划位于命名空间中:

    $ oc get installplan -n metallb-system

    输出示例

    NAME            CSV                                   APPROVAL    APPROVED
    install-wzg94   metallb-operator.4.11.0-nnnnnnnnnnnn   Automatic   true

    注意

    安装 Operator 可能需要几秒钟。

  2. 要验证是否已安装 Operator,请输入以下命令:

    $ oc get clusterserviceversion -n metallb-system \
      -o custom-columns=Name:.metadata.name,Phase:.status.phase

    输出示例

    Name                                  Phase
    metallb-operator.4.11.0-nnnnnnnnnnnn   Succeeded

30.2.3. 在集群中启动 MetalLB

安装 Operator 后,您需要配置 MetalLB 自定义资源的单一实例。配置自定义资源后,Operator 会在集群中启动 MetalLB。

先决条件

  • 安装 OpenShift CLI(oc)。
  • 以具有 cluster-admin 特权的用户身份登录。
  • 安装 MetalLB Operator。

流程

此流程假设 MetalLB Operator 已安装在 metallb-system 命名空间中。如果使用 Web 控制台安装,请替换命名空间的 openshift-operators

  1. 创建 MetalLB 自定义资源的单一实例:

    $ cat << EOF | oc apply -f -
    apiVersion: metallb.io/v1beta1
    kind: MetalLB
    metadata:
      name: metallb
      namespace: metallb-system
    EOF

验证

确认 MetalLB 控制器的部署和 MetalLB speaker 的守护进程集正在运行。

  1. 验证控制器的部署是否正在运行:

    $ oc get deployment -n metallb-system controller

    输出示例

    NAME         READY   UP-TO-DATE   AVAILABLE   AGE
    controller   1/1     1            1           11m

  2. 验证发言人的守护进程集是否正在运行:

    $ oc get daemonset -n metallb-system speaker

    输出示例

    NAME      DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE
    speaker   6         6         6       6            6           kubernetes.io/os=linux   18m

    示例输出显示 6 个 speaker Pod。集群中的 speaker pod 数量可能与示例输出不同。确保输出指示集群中每个节点有一个容器集。

30.2.3.1. 将 speaker pod 限制到特定的节点

默认情况下,当使用 MetalLB Operator 启动 MetalLB 时,Operator 会在集群中的每个节点上启动 speaker pod 的实例。只有具有 speaker pod 的节点可以公告负载均衡器 IP 地址。您可以使用节点选择器配置 MetalLB 自定义资源,以指定运行 speaker pod 的节点。

speaker Pod 限制到特定的节点的最常见原因是,确保只有具有特定网络上网络接口的节点公告负载均衡器 IP 地址。只有具有正在运行的 speaker pod 的节点才会公告为负载均衡器 IP 地址的目的地。

如果将 speaker 的 pod 限制到特定的节点,并为服务的外部流量策略指定 local,则必须确保该服务的应用程序 pod 部署到同一节点上。

将 speaker pod 限制为 worker 节点的配置示例

apiVersion: metallb.io/v1beta1
kind: MetalLB
metadata:
  name: metallb
  namespace: metallb-system
spec:
  nodeSelector:  <.>
    node-role.kubernetes.io/worker: ""
  speakerTolerations:   <.>
  - key: "Example"
    operator: "Exists"
    effect: "NoExecute"

<.> 示例配置指定将 speaker pod 分配给 worker 节点,但您可以指定分配给节点或任何有效的节点选择器的标签。<.> 在这个示例配置中,附加此容限的 pod 会容限使用 operator 的,与 key 的值和 effect 值匹配的污点。

使用 spec.nodeSelector 字段应用清单后,您可以检查 Operator 使用 oc get daemonset -n metallb-system speaker 命令部署的 pod 数量。同样,您可以使用 oc get nodes -l node-role.kubernetes.io/worker= 等命令显示与标签匹配的节点。

您可以选择允许节点使用关联性规则控制哪些 speaker pod 应该或不应该调度到节点上。您还可以通过应用容限列表来限制这些 pod。如需有关关联性规则、污点和容限的更多信息,请参阅其他资源。

30.2.4. 其他资源

30.2.5. 后续步骤

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.