Loading
close

负载均衡(LoadBalancer)

time 更新时间:2024-07-24 10:34:45

本章节介绍了创建LoadBalancer类型的服务(Service)的使用场景。LoadBalancer类型的服务适用于需要从集群外部访问的场景,它是NodePort类型的扩展。通过一个专用的负载均衡器,集群外部的请求将被转发到集群节点的端口上。负载均衡器的访问地址可以在[业务视图]-[网络管理]-[服务]页面的列表中的”IP地址”字段中查看。

../Service/images/eks-image-guide-06.png
图 负载均衡访问图例

约束与限制

  • 在Kubernetes容器服务中,使用独享型负载均衡服务提供的LoadBalancer能力的默认最低配置要求为1CPU2GB内存。
  • 解绑LoadBalancer类型服务的原公网ip后重新绑定其他公网IP,该LoadBalancer服务公网IP不会更新。
  • 自动创建的独享型负载均衡服务实例建议不要被其他资源使用,否则会在删除时被占用,导致资源残留。

创建LoadBalancer类型Service

在Kubernetes容器服务中,可以通过”独享型负载均衡服务”或”基础网络服务”提供LoadBalancer访问类型的网络访问功能。根据所安装的云产品类型,适配不同的LoadBalancer能力。

使用“独享型负载均衡器服务”提供LoadBalancer能力

注意:
使用独享型负载均衡服务提供LoadBalancer能力需要安装“SDN网络服务”和“独享型负载均衡服务”。
“SDN网络服务”提供Kubernetes容器服务所需的网络、公网IP等网络资源和相关服务。“独享型负载均衡服务”为Kubernetes容器服务提供独占负载均衡资源,能够轻松处理大量的业务访问请求,显著提升业务的容错能力和可用性。

  1. 访问[产品与服务]-[Kubernetes容器服务]-[网络管理],进入[服务]页面,点击“创建服务”。

  2. 配置参数

    参数 说明
    名称 自定义服务名称,可与工作负载名称保持一致。
    类型 选择“LoadBalancer”服务。
    可用区 创建该负载均衡器实例所需要的可用区。
    规格 创建该负载均衡器实例所需要的规格配置。
    CPU架构 根据实际业务选择X86或ARM。请确保选择的可用区内有对应架构的节点。
    拓扑模式 负载均衡器的拓扑结构,支持主备模式、多活模式。多活模式最高可支持8个实例数。
    子网 创建负载均衡器所需要的子网。
    协议 “LoadBalancer”仅支持TCP协议。
    容器端口 容器实例中工作负载实际监听的端口。
    访问端口 容器端口映射到节点IP上的端口。当访问方式为“NodePort”时,支持随机生成。
    关联工作负载 选择服务需关联的工作负载。
  3. 点击“创建”,创建服务(Service)。

../Service/images/eks-image-guide-07.png

  1. 当LoadBalancer状态为”运行中”时,你可以在页面列表中查看”IP地址”,使用IP地址+访问端口即可访问后端负载。

附录

在使用Yaml创建时,会用到注解,具体请参见以下注解说明。

表1:annotations关键参数说明:

参数 是否必填 参数类型 描述
loadbalancer.openstack.org/availability-zone String 该注解指定了负载均衡器所在的可用区。
loadbalancer.openstack.org/flavor-id String 该注解指定了负载均衡器对应的规格。
loadbalancer.openstack.org/load-balancer-id - String 该注解用于表示负载均衡器的UUID是否已经创建完成。当负载均衡器创建完成后,会将其UUID信息回写到该注解中。
service.beta.kubernetes.io/openstack-internal-load-balancer String 该注解用于指定是否分配公网IP给负载均衡器。当该注解的值为“true”时,将不会为该负载均衡器分配公网IP。
loadbalancer.openstack.org/subnet-id String 该注解用于指定独享型负载均衡器的子网id。当该注解未填写,会使用Kubernetes容器服务集群中默认的负载均衡器子网配置,详细配置参考master节点 /etc/kubernetes/cloud-config文件。

表2:loadbalancer.openstack.org/availability-zone 字段数据结构说明

参数 是否必填 参数类型 描述
compute_zone String 虚拟机所在可用区
cpu_arch String CPU架构
network_zone String 子网所在可用区

示例代码:

apiVersion: v1
kind: Service
metadata:
  labels:
    ecns.es.io/workload: deployment-test
    name: test1-lb-fake-13
    namespace: test
    annotations:
    loadbalancer.openstack.org/availability-zone: "octavia-az-f36e640e-39c7-4fd8-a76f-064199d6e990"
spec:
  ports:
  - name: test80
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    ecns.es.io/workload: deployment-test
  sessionAffinity: None
  type: LoadBalancer

响应信息:
../Service/images/eks-image-guide-08.png

表3:loadbalancer.openstack.org/flavor-id 字段数据结构说明

参数 是否必填 参数类型 描述
amp_volume_type String 磁盘类型
vcpus String 对应虚拟机CPU
ram String 对应虚拟机内存
replicas Object 对应多活副本数目
network_zone Object 子网所在可用区
compute_flavor String 对应单虚拟机规格。当Replicas数目为多个(多活下)时,单个虚拟机CPU=(vcpus/replicas)/2,否则为单个虚拟机CPU=(vcpus/2)

示例代码:

apiVersion: v1
kind: Service
metadata:
  name: test-lb
  annotations:
    loadbalancer.openstack.org/flavor-id: "f5d5c5f5-5d5c-5f5d-5c5f-5d5c5f5d5c5f"
spec:
  type: LoadBalancer
  ports:
  - port: 80
    targetPort: 8000
  selector:
    app: test-app

响应信息:
../Service/images/eks-image-guide-09.png

使用“基础网络服务“提供LoadBalancer能力

注意
选择安装基础网络服务时,它为Kubernetes容器服务提供网络、公网IP、负载均衡等网络资源和相关服务。

  1. 访问[产品与服务]-[Kubernetes容器服务]-[网络管理],进入[服务]页面,点击“创建服务”。

  2. 配置参数

    参数 说明
    名称 自定义服务名称,可与工作负载名称保持一致。
    类型 选择“LoadBalancer”服务。
    协议 “LoadBalancer”仅支持TCP协议。
    容器端口 容器实例中工作负载实际监听的端口。
    访问端口 容器端口映射到节点IP上的端口。当访问方式为“NodePort”时,支持随机生成。
    关联工作负载 选择服务需关联的工作负载。
  3. 点击“创建”,创建服务(Service)。

  4. 当LoadBalancer状态为”运行中”时,你可以在页面列表中查看”IP地址”,使用IP地址+访问端口即可访问后端负载。

附录

在使用Yaml创建时,会用到注解,具体请参见以下注解说明。

表1:annotations关键参数说明:

参数 是否必填 参数类型 描述
service.beta.kubernetes.io/openstack-internal-load-balancer String 该注解用于指定是否分配公网IP给负载均衡器。当该注解的值为“true”时,将不会为该负载均衡器分配公网IP。
此篇文章对你是否有帮助?
没帮助
locked-file

您暂无权限访问该产品