
# 负载均衡类型Service异常问题排查
负载均衡类型Service通过ELB负载均衡对外提供服务，创建负载均衡类型Service时，支持选择已有的ELB实例或自动创建ELB实例。若选择已有的ELB实例，CCE集群会为Service配置ELB监听器、后端服务器组等资源；若选择自动创建ELB实例，CCE除了会为Service配置ELB监听器、后端服务器组等资源，还会负责ELB实例的自动创建。本文将介绍负载均衡型Service的异常问题排查流程。
#### 排查流程
![](https://support.huaweicloud.com/cce_faq/zh-cn_image_0000002044985714.png "点击放大")
1. 登录CCE控制台。
2. 单击集群名称进入集群，在左侧选择"服务"。
3. 单击对应Service操作栏中的"事件"，查看Service是否存在异常事件。
   - 如果Service存在异常事件，可通过根据事件，参考[根据Service异常事件排查]查找异常的解决方案。
   
   - 如果Service不存在异常事件，则一般为访问类问题或周边服务配置引入的问题，可参考[根据常见问题对比排查]查找异常的解决方案。
    
 
 #### 根据Service异常事件排查
不同异常事件的解决方法如下表所示：
| 报错信息                                                                                                                                                                                                                      | 说明                                                                   | 解决方案                                                                                                                                                                                                                                                                                                                                                   |
|:---|:---|:---|
| Quota exceeded for resources: loadbalancer                                                                                                                                          | 负载均衡器配额不足，无法为Service自动创建负载均衡器。  | - 默认配额为100，请申请提升配额。关于如何查询和提升配额，请参见[如何申请扩大配额？](https://support.huaweicloud.com/cce_faq/cce_faq_00154.html#cce_faq_00154__section83979910619)。  - 不同Service可以共用同一个负载均衡器，请评估是否可以复用。   |
| Quota exceeded for resources: listener                                                                                                                                                                                    | 监听器配额不足，无法为Service创建ELB监听器。                                          | 默认配额为200，请申请提升配额。关于如何查询和提升配额，请参见[如何申请扩大配额？](https://support.huaweicloud.com/cce_faq/cce_faq_00154.html#cce_faq_00154__section83979910619)。                                                                                                                                                                                                             |
| can't find backend pod with service                                                                                                                                                                                       | Service无后端pod，请确认Service是否已关联Pod且Pod是否正常运行。                          | - 若未关联Pod，请将Service关联至对应的后端Pod。  - 若关联的Pod运行异常，请解决Pod异常的问题，请参见[工作负载状态异常定位方法](https://support.huaweicloud.com/cce_faq/cce_faq_00134.html)。                                          |
| failed to ensure load balancer: Not Found                                                                                                                                                                                 | Service关联的负载均衡器不存在。             | 登录ELB控制台，在对应的region，根据Service的annotations中kubernetes.io/elb.id值，搜索对应的负载均衡器。 如果确认对应的负载均衡器不存在，则按需重建相应的Service，选择其他已有的负载均衡器或选择自动创建负载均衡器。                                                                                                                                                                                 |
| Update loadbalancer of service(\[ServiceName\]/\[Namespace\]) error: listener is empty                                                                                                                                    | Service关联的负载均衡器的监听器可能被误删。                                            | 登录ELB控制台，在对应的region，根据Service的annotations中kubernetes.io/elb.id值，搜索对应的负载均衡器，并根据端口确认监听器是否存在。 如果确认负载均衡器的指定监听器不存在，则按需重新创建相应的Service。                                                                                                                                                                                         |
| Failed to CreateListener : request failed: {"error_msg":"Load Balancer \[ELB id\] already has a listener with protocol_port of \[端口号\].","error_code":"ELB.8907","request_id":"xxx"}, status code: 409                    | 监听器端口冲突，ELB侧已有该端口的监听器。          | 更新Service，设置其他可用的端口号。                                                                                                                                                                                                                                                                                                                                  |
| Failed to create member : {"error_msg":"Vpc \[集群VPC id\] of member's subnet_cidr \[期望监听器所属的子网\] and vpc \[ELB VPC id\] of loadbalancer \[ELB id\] mismatch","error_code":"ELB.8902","request_id":"xxx"}, status code: 400 | 创建Service时，关联了已有的负载均衡器，但负载均衡器和集群不在同一个VPC内。                           | 请确保您选择的负载均衡器和集群在同一个VPC内。                                                                                                                                                                                                                                                                                                                               |
| Failed to CreateListener : request failed: {"error_msg":"Loadbalancer \[ELB id\] has no flavor of type L7_elastic and cannot create listeners of type L7.","error_code":"ELB.8907","request_id":"xxx"}, status code: 409  | 网络型ELB无法创建七层监听器。                                                     | 按需准确选择对应规格的负载均衡器实例。 如果需要创建HTTP/HTTPS类型的七层监听器，请使用包含应用型规格的负载均衡器实例。                                                                                                                                                                                                                                                       |
| Failed to CreateListener : request failed: {"error_msg":"Loadbalancer \[ELB id\] has only flavor of type l7 and cannot create listeners of type l4.","error_code":"ELB.8907","request_id":"xxx"}, status code: 409        | 应用型ELB无法创建四层监听器。                                                     | 按需准确选择对应规格的负载均衡器实例。 如果需要创建TCP/UDP类型的四层监听器，请使用包含网络型规格的负载均衡器实例。                                                                                                                                                                                                                                                           |
   
 #### 根据常见问题对比排查
对于无Service异常事件的异常问题，请参考下表进行排查：
| 问题类别   | 问题现象             | 解决方案                                                                                                                                                                                                                                                                                                                                                                                      |
|:---|:---|:---|
| ELB访问类 | ELB负载不均          | 由于负载均衡配置的后端分配策略设置不合理导致ELB负载不均，详情请参见[ELB负载不均]。                                                                                                                                                                                                                                                                                                       |
| ELB访问类 | 集群内无法访问ELB       | 当Service设置了服务亲和为节点级别，即externalTrafficPolicy取值为Local时，在使用中可能会碰到从集群内部（节点上或容器中）访问不通的情况，详情请参见[集群内部无法使用ELB地址访问负载](https://support.huaweicloud.com/cce_faq/cce_faq_00390.html)。                                                                                                                                                                                                                 |
| ELB访问类 | 集群外无法访问ELB       | - 可能是由于ELB配置异常或后端服务器存在异常，详情请参见[集群外无法访问ELB]。  - 如果是Turbo集群独享型ELB访问不通，请检查ENI安全组并放通源地址网段，安全组规则配置详情请参见[如何修改集群安全组规则配置](https://support.huaweicloud.com/cce_faq/cce_faq_00265.html)。   |
| ELB配置类 | ELB配置被修改         | 请参见[ELB配置为什么会被修改]。                                                                                                                                                                                                                                                                                                                                  |
| ELB配置类 | ELB的后端被自动删除      | 请参见[服务发布到ELB，ELB的后端为何会被自动删除？](https://support.huaweicloud.com/cce_faq/cce_faq_00248.html)。                                                                                                                                                                                                                                                                                                |
| ELB删除类 | Service删除后ELB未删除 | 在不同的场景下，ELB的自动删除策略不同，详情请参见[ELB删除策略]。                                                                                                                                                                                                                                                                                                                 |
   
 #### ELB负载不均
**问题原因**
负载均衡配置的后端分配策略设置不合理。
**解决方案**
- externalTrafficPolicy为Local的Service需要将ELB后端分配策略设置为加权轮询算法，可通过页面配置或为Service添加注解kubernetes.io/elb.lb-algorithm: ROUND_ROBIN。
- 如果业务为长连接，则需要将ELB后端分配策略设置为加权最少连接算法，可通过页面配置或为Service添加注解kubernetes.io/elb.lb-algorithm: LEAST_CONNECTIONS。
 
 #### 集群外无法访问ELB
**问题原因**
ELB配置异常或后端服务器存在异常。
**排查步骤**
1. 执行以下命令，查看Service事件信息，并处理异常事件。具体操作，请参见[根据Service异常事件排查]。
   ```
   kubectl -n {your-namespace} describe svc {your-svc-name}
   ```
   
2. 检查相关端口或URL的后端服务器组是否符合预期。 如果后端服务器组为空，请检查业务Pod是否正常运行。若关联的Pod运行异常，请解决Pod异常的问题，请参见[工作负载状态异常定位方法](https://support.huaweicloud.com/cce_faq/cce_faq_00134.html)。
   
 
 #### ELB配置为什么会被修改
**问题原因**
CCE集群会在一定条件下根据Service的配置自动更新ELB配置。您额外在ELB控制台上修改的配置均存在被覆盖的风险。
**解决方案**
建议您**使用Annotation配置负载均衡类型的服务对应的ELB** 。关于注解配置方式的更多信息，请参见[使用Annotation配置负载均衡类型的服务](https://support.huaweicloud.com/usermanual-cce/cce_10_0385.html)。
![](https://support.huaweicloud.com/cce_faq/public_sys-resources/notice_3.0-zh-cn.png)
请勿在ELB控制台上手动修改CCE创建并维护的ELB的任何配置，否则有配置丢失的风险，造成Service不可访问。
 #### ELB删除策略
Service删除时对于ELB的自动删除策略如下：
- 对于Service自动创建的ELB：
  - 如果该ELB未被其他Service使用，则删除原Service时系统会自动删除对应的ELB。
  
  - 如果其他Service也关联了该ELB，则删除原Service时不会删除对应的ELB。
   
- Service选择已有的ELB时，删除Service时，不会删除原有的ELB。
 
#### 相关文档
[使用注解（Annotations）配置负载均衡的高级功能](https://support.huaweicloud.com/usermanual-cce/cce_10_0385.html)
