21.2. OpenShift Container Platform 中的 AWS Load Balancer Operator
AWS Load Balancer Operator 部署和管理 AWS Load Balancer Controller。您可以使用 OpenShift Container Platform Web 控制台或 CLI 安装来自 OperatorHub 的 AWS Load Balancer Operator。
21.2.1. AWS Load Balancer Operator 的注意事项
在安装和使用 AWS Load Balancer Operator 前查看以下限制:
- IP 流量模式仅适用于 AWS Elastic Kubernetes Service (EKS)。AWS Load Balancer Operator 禁用 AWS Load Balancer Controller 的 IP 流量模式。禁用 IP 流量模式后,AWS Load Balancer Controller 无法使用 pod 就绪度。
-
AWS Load Balancer Operator 将命令行标记(如
--disable-ingress-class-annotation
和--disable-ingress-group-name-annotation
)添加到 AWS Load Balancer Controller。因此,AWS Load Balancer Operator 不允许在Ingress
资源中使用kubernetes.io/ingress.class
和alb.ingress.kubernetes.io/group.name
注解。 -
您已配置了 AWS Load Balancer Operator,使 SVC 类型是
NodePort
(而不是LoadBalancer
或ClusterIP
)。
21.2.2. AWS Load Balancer Operator
如果缺少 kubernetes.io/role/elb
标签,AWS Load Balancer Operator 可以标记公共子网。另外,AWS Load Balancer Operator 从底层 AWS 云检测到以下信息:
- 托管 Operator 的集群的虚拟私有云 (VPC) 的 ID。
- 发现 VPC 的公共和私有子网。
AWS Load Balancer Operator 支持类型为 LoadBalancer
的 Kubernetes 服务资源,使用只有 instance
目标类型的 Network Load Balancer (NLB)。
流程
您可以通过运行以下命令来创建
Subscription
对象,以按需部署 AWS Load Balancer Operator:$ oc -n aws-load-balancer-operator get sub aws-load-balancer-operator --template='{{.status.installplan.name}}{{"\n"}}'
输出示例
install-zlfbt
运行以下命令,检查安装计划的状态是否为
Complete
:$ oc -n aws-load-balancer-operator get ip <install_plan_name> --template='{{.status.phase}}{{"\n"}}'
输出示例
Complete
运行以下命令,查看
aws-load-balancer-operator-controller-manager
部署的状态:$ oc get -n aws-load-balancer-operator deployment/aws-load-balancer-operator-controller-manager
输出示例
NAME READY UP-TO-DATE AVAILABLE AGE aws-load-balancer-operator-controller-manager 1/1 1 1 23h
21.2.3. 在 AWS VPC 集群中使用 AWS Load Balancer Operator 扩展至 Outpost
您可以配置 AWS Load Balancer Operator,以便在 AWS VPC 集群中置备 AWS Application Load Balancer。AWS Outposts 不支持 AWS Network Load Balancers。因此,AWS Load Balancer Operator 无法在 Outpost 中置备 Network Load Balancers。
您可以在云子网或 Outpost 子网中创建 AWS Application Load Balancer。云中的 Application Load Balancer 可以附加到基于云的计算节点,而 Outpost 中的 Application Load Balancer 可以附加到边缘计算节点。您必须使用 Outpost 子网或 VPC 子网来注解 Ingress 资源,但不能同时注解两者。
先决条件
- 您已将 AWS VPC 集群扩展到 Outpost。
-
已安装 OpenShift CLI(
oc
)。 - 已安装 AWS Load Balancer Operator 并创建了 AWS Load Balancer Controller。
流程
将
Ingress
资源配置为使用指定的子网:Ingress
资源配置示例apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: <application_name> annotations: alb.ingress.kubernetes.io/subnets: <subnet_id> 1 spec: ingressClassName: alb rules: - http: paths: - path: / pathType: Exact backend: service: name: <application_name> port: number: 80
- 1
- 指定要使用的子网。
- 要在 Outpost 中使用 Application Load Balancer,请指定 Outpost 子网 ID。
- 要在云中使用 Application Load Balancer,您必须在不同的可用区中指定至少两个子网。
21.2.4. AWS Load Balancer Operator 日志
您可以使用 oc logs
命令查看 AWS Load Balancer Operator 日志。
流程
运行以下命令,查看 AWS Load Balancer Operator 的日志:
$ oc logs -n aws-load-balancer-operator deployment/aws-load-balancer-operator-controller-manager -c manager