本章节介绍了创建LoadBalancer类型的服务(Service)的使用场景。LoadBalancer类型的服务适用于需要从集群外部访问的场景,它是NodePort类型的扩展。通过一个专用的负载均衡器,集群外部的请求将被转发到集群节点的端口上。负载均衡器的访问地址可以在[业务视图]-[网络管理]-[服务]页面的列表中的”IP地址”字段中查看。
约束与限制
- 在Kubernetes容器服务中,使用独享型负载均衡服务提供的LoadBalancer能力的默认最低配置要求为1CPU2GB内存。
- 解绑LoadBalancer类型服务的原公网ip后重新绑定其他公网IP,该LoadBalancer服务公网IP不会更新。
- 自动创建的独享型负载均衡服务实例建议不要被其他资源使用,否则会在删除时被占用,导致资源残留。
创建LoadBalancer类型Service
在Kubernetes容器服务中,可以通过”独享型负载均衡服务”或”基础网络服务”提供LoadBalancer访问类型的网络访问功能。根据所安装的云产品类型,适配不同的LoadBalancer能力。
使用“独享型负载均衡器服务”提供LoadBalancer能力
注意:
使用独享型负载均衡服务提供LoadBalancer能力需要安装“SDN网络服务”和“独享型负载均衡服务”。
“SDN网络服务”提供Kubernetes容器服务所需的网络、公网IP等网络资源和相关服务。“独享型负载均衡服务”为Kubernetes容器服务提供独占负载均衡资源,能够轻松处理大量的业务访问请求,显著提升业务的容错能力和可用性。
访问[产品与服务]-[Kubernetes容器服务]-[网络管理],进入[服务]页面,点击“创建服务”。
配置参数
参数 说明 名称 自定义服务名称,可与工作负载名称保持一致。 类型 选择“LoadBalancer”服务。 可用区 创建该负载均衡器实例所需要的可用区。 规格 创建该负载均衡器实例所需要的规格配置。 CPU架构 根据实际业务选择X86或ARM。请确保选择的可用区内有对应架构的节点。 拓扑模式 负载均衡器的拓扑结构,支持主备模式、多活模式。多活模式最高可支持8个实例数。 子网 创建负载均衡器所需要的子网。 协议 “LoadBalancer”仅支持TCP协议。 容器端口 容器实例中工作负载实际监听的端口。 访问端口 容器端口映射到节点IP上的端口。当访问方式为“NodePort”时,支持随机生成。 关联工作负载 选择服务需关联的工作负载。 点击“创建”,创建服务(Service)。
- 当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
表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
使用“基础网络服务“提供LoadBalancer能力
注意
选择安装基础网络服务时,它为Kubernetes容器服务提供网络、公网IP、负载均衡等网络资源和相关服务。
访问[产品与服务]-[Kubernetes容器服务]-[网络管理],进入[服务]页面,点击“创建服务”。
配置参数
参数 说明 名称 自定义服务名称,可与工作负载名称保持一致。 类型 选择“LoadBalancer”服务。 协议 “LoadBalancer”仅支持TCP协议。 容器端口 容器实例中工作负载实际监听的端口。 访问端口 容器端口映射到节点IP上的端口。当访问方式为“NodePort”时,支持随机生成。 关联工作负载 选择服务需关联的工作负载。 点击“创建”,创建服务(Service)。
当LoadBalancer状态为”运行中”时,你可以在页面列表中查看”IP地址”,使用IP地址+访问端口即可访问后端负载。
附录
在使用Yaml创建时,会用到注解,具体请参见以下注解说明。
表1:annotations关键参数说明:
参数 | 是否必填 | 参数类型 | 描述 |
---|---|---|---|
service.beta.kubernetes.io/openstack-internal-load-balancer | 否 | String | 该注解用于指定是否分配公网IP给负载均衡器。当该注解的值为“true”时,将不会为该负载均衡器分配公网IP。 |