23.2. 安装 MetalLB Operator
作为集群管理员,您可以添加 MetallB Operator,以便 Operator 可以管理集群中的 MetalLB 实例的生命周期。
安装过程使用 metallb-system
命名空间。您可以安装 Operator 并在不同的命名空间中配置自定义资源。Operator 在安装 Operator 的同一命名空间中启动 MetalLB。
MetalLB 和 IP 故障转移不兼容。如果您为集群配置了 IP 故障切换,请在安装 Operator 前执行删除 IP 故障切换的步骤。
23.2.1. 使用 Web 控制台从 OperatorHub 安装
您可以使用 OpenShift Container Platform Web 控制台从 OperatorHub 安装并订阅 Operator。
流程
-
在 Web 控制台中导航至 Operators
OperatorHub 页面。 找到您需要的 Operator(滚动页面会在 Filter by keyword 框中输入查找关键字)。例如,键入
metallb
来查找 MetalLB Operator。您还可以根据基础架构功能过滤选项。例如,如果您希望 Operator 在断开连接的环境中工作,请选择 Disconnected。
选择要显示更多信息的 Operator。
注意选择 Community Operator 会警告红帽没有认证社区 Operator ; 您必须确认该警告方可继续。
- 阅读 Operator 信息并单击 Install。
在 Install Operator 页面中:
- 选择一个更新频道(如有多个可用)。
- 如前面所述,选择自动或手动批准策略。
点击 Install 使 Operator 可供 OpenShift Container Platform 集群上的所选命名空间使用。
如果选择了手动批准策略,订阅的升级状态将保持在 Upgrading 状态,直至您审核并批准安装计划。
在 Install Plan 页面批准后,订阅的升级状态将变为 Up to date。
- 如果选择了 Automatic 批准策略,升级状态会在不用人工参与的情况下变为 Up to date。
在订阅的升级状态成为 Up to date 后,选择 Operators
Installed Operators 来验证已安装 Operator 的 ClusterServiceVersion(CSV)是否最终出现了。状态最终会在相关命名空间中变为 InstallSucceeded。 注意对于 All namespaces… 安装模式,状态在
openshift-operators
命名空间中解析为 InstallSucceeded,但如果检查其他命名空间,则状态为 Copied。如果没有:
-
检查
openshift-operators
项目(如果选择了 A specific namespace… 安装模式)中的 openshift-operators 项目中的 pod 的日志,这会在 WorkloadsPods 页面中报告问题以便进一步排除故障。
-
检查
23.2.2. 使用 CLI 从 OperatorHub 安装
您可以使用 CLI 从 OperatorHub 安装 Operator,而不必使用 OpenShift Container Platform Web 控制台。使用 oc
命令来创建或更新一个订阅
对象。
先决条件
-
安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
特权的用户身份登录。
流程
确认 MetalLB Operator 可用:
$ oc get packagemanifests -n openshift-marketplace metallb-operator
输出示例
NAME CATALOG AGE metallb-operator Red Hat Operators 9h
创建
metallb-system
命名空间:$ cat << EOF | oc apply -f - apiVersion: v1 kind: Namespace metadata: name: metallb-system EOF
在命名空间中创建一个 Operator 组自定义资源:
$ cat << EOF | oc apply -f - apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: metallb-operator namespace: metallb-system spec: targetNamespaces: - metallb-system EOF
确认 Operator 组已安装在命名空间中:
$ oc get operatorgroup -n metallb-system
输出示例
NAME AGE metallb-operator 14m
订阅 MetalLB Operator。
运行以下命令以获取 OpenShift Container Platform 的主版本和次版本。您可以使用这些值来设置下一步中的
channel
值。$ OC_VERSION=$(oc version -o yaml | grep openshiftVersion | \ grep -o '[0-9]*[.][0-9]*' | head -1)
要为 Operator 创建订阅自定义资源,请输入以下命令:
$ cat << EOF| oc apply -f - apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: metallb-operator-sub namespace: metallb-system spec: channel: "${OC_VERSION}" name: metallb-operator source: redhat-operators sourceNamespace: openshift-marketplace EOF
确认安装计划位于命名空间中:
$ oc get installplan -n metallb-system
输出示例
NAME CSV APPROVAL APPROVED install-wzg94 metallb-operator.4.9.0-nnnnnnnnnnnn Automatic true
要验证是否已安装 Operator,请输入以下命令:
$ oc get clusterserviceversion -n metallb-system \ -o custom-columns=Name:.metadata.name,Phase:.status.phase
输出示例
Name Phase metallb-operator.4.9.0-nnnnnnnnnnnn Succeeded
23.2.3. 在集群中启动 MetalLB
安装 Operator 后,您需要配置 MetalLB 自定义资源的单一实例。配置自定义资源后,Operator 会在集群中启动 MetalLB。
先决条件
-
安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
权限的用户身份登录。 - 安装 MetalLB Operator。
流程
创建 MetalLB 自定义资源的单一实例:
$ cat << EOF | oc apply -f - apiVersion: metallb.io/v1beta1 kind: MetalLB metadata: name: metallb namespace: metallb-system EOF
验证
确认 MetalLB 控制器的部署和 MetalLB speaker 的守护进程集正在运行。
检查控制器的部署是否正在运行:
$ oc get deployment -n metallb-system controller
输出示例
NAME READY UP-TO-DATE AVAILABLE AGE controller 1/1 1 1 11m
检查 speaker 的守护进程集是否正在运行:
$ 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 数量可能与示例输出不同。确保输出指示集群中每个节点有一个容器集。