文档首页/ 云容器引擎 CCE/ 常见问题/ 集群/ 集群升级/ CCE集群升级时,ELB Ingress与ELB配置不一致如何处理?
更新时间:2026-09-23 GMT+08:00
分享

CCE集群升级时,ELB Ingress与ELB配置不一致如何处理?

ELB资源简介

在CCE集群中,使用ELB Ingress可以将外部流量路由到集群内的服务。Ingress中定义的一系列参数实际上是作用于弹性负载均衡器(ELB)的配置,以便更好地控制流量管理和分发。表1将详细介绍这些ELB配置与Ingress参数的对应关系。

表1 ELB配置与ELB Ingress中的对应关系

ELB配置

说明

ELB Ingress中的对应关系

负载均衡器(elb)

-

接受来自客户端的传入流量并将请求转发到一个或多个可用区中的后端服务器。

对应Ingress注解中的kubernetes.io/elb.id

监听器(listener)

-

监听器使用配置的协议和端口检查来自客户端的连接请求,并根据定义的分配策略和转发策略将请求转发到一个后端服务器组里的后端服务器。

对应Ingress注解中的kubernetes.io/elb.port,如果不填默认是80/443

转发策略(l7policy)

转发策略

ELB转发规则:通过域名、路径进行转发。

转发规则中的域名和路径分别对应Ingress参数中的spec.rules[].host和spec.rules[].http.paths[].path配置

ELB转发动作:转发至后端服务器组。

后端服务器组对应Ingress参数中spec.rules[].http.paths[].backend.service填写的Service后端服务

高级转发策略

ELB转发规则:域名、路径、HTTP请求方法、HTTP请求头、查询字符串、网段。

对应Ingress注解中kubernetes.io/elb.actions、kubernetes.io/elb.conditions等高级转发策略相关的注解。

ELB转发动作:转发至后端服务器组、重定向至监听器、重定向至URL、返回固定响应、重写、写入Header、删除Header、限速。

后端服务器组(pool)

-

后端服务器组是一个或多个后端服务器的逻辑集合,用于将客户端的流量转发到一个或多个后端服务器,满足用户同时处理海量并发业务的需求。后端服务器可以是云服务器实例、辅助弹性网卡或IP地址。

对应Ingress参数中的spec.rules[].http.paths[].backend

后端服务器(member)

-

负载均衡器会将客户端的请求转发给后端服务器处理。例如,您可以添加ECS实例作为负载均衡器的后端服务器,监听器使用您配置的协议和端口检查来自客户端的连接请求,并根据您定义的分配策略将请求转发到后端服务器组里的后端服务器。

Ingress对应Service的endpoint

Ingress与ELB配置不一致处理思路

集群升级前检查中,可能扫描出多个Ingress与ELB配置不一致项,并显示每个不一致项期望的配置。示例如下:

由于资源之间有依赖关系,建议按以下顺序处理:

建议您在处理完几条关键的不一致异常后重新运行检测,大多数情况下处理了父级资源的问题,子级资源的不一致异常会自动消失。

异常资源类型

不一致说明

解决方案

监听器

ELB侧配置缺失

ELB侧配置缺失,需要创建监听器

ELB侧配置被修改

ELB侧配置被修改,需要更新监听器

ELB侧转发策略优先级被修改

ELB侧转发策略优先级被修改,需要编辑转发规则

转发策略

ELB侧配置缺失

ELB侧配置缺失,需要创建转发策略

ELB侧配置被修改

ELB侧配置被修改,需要更新转发策略

ELB侧配置冗余

ELB侧配置冗余,需要删除转发策略

转发规则

ELB侧配置缺失/ELB侧配置冗余

ELB侧配置缺失/冗余,需要创建/删除转发规则

后端服务器组

ELB侧配置缺失

ELB侧配置缺失,需要创建后端服务器组

后端服务器

ELB侧配置缺失

ELB侧配置缺失,需要创建后端服务器

ELB侧配置被修改

ELB侧配置被修改,需要更新后端服务器

ELB侧配置冗余

ELB侧配置冗余,需要删除后端服务器

健康检查

ELB侧配置被修改

ELB侧配置被修改,需要更新健康检查

ELB侧配置冗余

ELB侧配置冗余,需要删除健康检查

证书

ELB侧配置缺失

ELB侧配置缺失,需要创建证书

ELB侧配置被修改

ELB侧配置被修改,需要更新证书

每条不一致异常都有两种处理方式,您可以任选一种执行:

方式

解决方案

适用场景

方式一:修改Ingress

更新Ingress配置,让CCE下发的值对齐ELB现状

ELB上的修改是您有意为之,想保留

方式二:修改ELB

在ELB控制台把配置改回Ingress期望的值

ELB上的修改是误操作,想撤销

监听器存在不一致

ELB侧配置缺失,需要创建监听器

ELB配置一致性检查诊断出监听器存在不一致,不一致原因为ELB侧配置缺失,出现此问题一般是因为用户通过ELB控制台修改了监听器的名字、描述,或者删除了监听器。

您可在ELB控制台根据端口查看监听器是否存在,并进一步检查监听器名字与描述是否匹配,请按照以下步骤处理:

  • 方式一:修改Ingress

    如果监听器是您有意删除(如不再需要使用),则需在CCE集群中删除对应的Ingress。

  • 方式二:修改ELB

    在ELB控制台根据端口查看监听器是否存在,并进一步检查监听器名字与描述是否匹配,如不匹配则需要修改监听器的名字和描述。

    CCE自动添加的监听器描述信息格式如下,其中cluster_id的值为本集群ID。

    {"attention":"Auto-generated by CCE service, do not modify!","cluster_id":"5d4d44bd-0891-11f0-84d3-0255ac10003e"}

ELB侧配置被修改,需要更新监听器

ELB配置一致性检查诊断出监听器存在不一致,不一致原因为ELB侧配置被修改,出现此问题一般是因为用户通过ELB控制台修改了监听器的配置,并未在CCE侧同步。

您可在ELB控制台查看该监听器的实际配置,并与期望配置项逐一对比,若存在不一致,则需将监听器的配置手动修改为CCE侧的期望配置,或者修改Ingress。

常见的不一致字段有:

  • client_timeout:客户端超时时间
  • keepalive_timeout:长连接超时时间
  • http2_enable:HTTP2 开关
  • sni_container_refs:SNI 证书

请按照以下步骤处理:

  • 方式一:修改Ingress

    修改Ingress的annotation,让CCE下发值对齐ELB现状。

    例如监听器的期望配置为sni_container_refs: null,这是由于ELB侧监听器开启了SNI功能,而Ingress里没有配置,需在Ingress里加上对应的SNI配置。更多配置项请参见ELB Ingress注解(Annotations)配置合集。

    如果同一个端口有多个Ingress共用监听器,以最早创建的Ingress配置为准,修改其他Ingress配置不会生效。详情参考同一集群中多个Ingress使用同一个ELB的配置说明。

  • 方式二:修改ELB

    在ELB控制台根据端口查看监听器配置,将对应字段改回诊断报告中的期望值,与Ingress中的配置一致。

ELB侧转发策略优先级被修改,需要编辑转发规则

ELB配置一致性检查诊断出监听器存在不一致,不一致原因为ELB侧转发策略优先级被修改。该拦截在同时满足以下条件时触发:
  • Ingress同时配置了kubernetes.io/elb.ssl-redirect: 'true'(HTTP重定向到HTTPS)和kubernetes.io/elb.ingress-order(转发规则优先级)。
  • 该Ingress对接的ELB监听器上,还存在其他转发策略也配置了ingress-order。

原因分析:低版本集群中,ssl-redirect生成的重定向转发策略ingress-order优先级默认最高,而同一监听器上其他Ingress配置了ingress-order,导致监听器内转发策略的优先级不一致。升级到新版本时,ssl-redirect生成的重定向转发策略ingress-order优先级按照真实配置值生效。升级过程中,CCE会校验同一监听器下所有转发策略的优先级一致性,校验时发现监听器内转发策略的优先级配置与实际生效值不一致,因此拦截升级。

整改方案:调整当前监听器上的所有转发策略ingress-order优先级配置,确保同一监听器内所有转发策略的优先级值唯一且有效。

  • 方式一:修改Ingress

    以Ingress同时配置了ssl-redirect和ingress-order为例:

    kind: Ingress
    apiVersion: networking.k8s.io/v1
    metadata:
      name: ingress1
      namespace: default
      uid: 028e0585-a02f-417b-a96d-c1935******
      resourceVersion: '10858'
      generation: 1
      creationTimestamp: '2026-08-03T09:06:36Z'
      annotations:
        kubernetes.io/elb.autocreate: '{"type":"inner","available_zone":["cn-north-7b"],"elb_virsubnet_ids":["aa417f90-a14f-49f4-8e44-1218d5******"],"ipv6_vip_virsubnet_id":"aa417f90-a14f-49f4-8e44-1218d5******","l7_flavor_name":"L7_flavor.elb.pro.max","l4_flavor_name":"","vip_subnet_cidr_id":"c0c78227-827e-432f-8899-dd2687******"}'
        kubernetes.io/elb.class: performance
        kubernetes.io/elb.enterpriseID: '0'
        kubernetes.io/elb.id: fef427e4-6d2c-4c63-bf26-270daa******
        kubernetes.io/elb.ingress-order: '8'  ### 设置80监听器的转发策略的优先级
        kubernetes.io/elb.ip: 10.20.**.**
        kubernetes.io/elb.listen-ports: '[{"HTTP":80},{"HTTPS":443}]' 
        kubernetes.io/elb.listener-master-ingress: default/ingress1
        kubernetes.io/elb.port: '80'    
        kubernetes.io/elb.ssl-redirect: 'true'  ### 设置http转https

    操作步骤:

    1. 查看该ELB监听器(80端口)上所有Ingress的转发策略,确认哪些Ingress缺少ingress-order注解。
    2. 为每个缺少该注解的Ingress补充kubernetes.io/elb.ingress-order注解,并设置合理的优先级值(取值范围1~1000,值越小优先级越高)。
    3. 确保同一监听器下所有Ingress的ingress-order值不重复。
    4. 重新执行集群升级操作。
  • 方式二:修改ELB

    在ELB控制台根据端口查看监听器配置,将转发策略优先级改回诊断报告中的期望值,与Ingress中的配置一致。

转发策略存在不一致

ELB侧配置缺失,需要创建转发策略

ELB配置一致性检查诊断出转发策略存在不一致,不一致原因为ELB侧配置缺失,出现此问题一般是因为用户通过ELB控制台修改了CCE创建的转发策略的描述,或者删除了转发策略。

您可在ELB控制台对应监听器下根据转发策略名字搜索其是否存在,并进一步检查转发策略的描述是否匹配,请按照以下步骤处理:

  • 方式一:修改Ingress

    从Ingress的spec.rules中删除对应的规则,让CCE下发值对齐ELB现状。

  • 方式二:修改ELB

    通过创建转发策略接口创建转发策略,参数需与Ingress中的配置一致。

ELB侧配置被修改,需要更新转发策略

ELB配置一致性检查诊断出转发策略存在不一致,不一致原因为ELB侧配置被修改,出现此问题一般是因为用户通过ELB控制台修改了CCE创建的转发策略的后端服务器组(redirect_pool_id)。

请按照以下步骤处理:

  • 方式一:修改Ingress

    修改Ingress的spec.rules中对应域名的backend.service,让CCE下发值对齐ELB现状。

  • 方式二:修改ELB

    在ELB控制台根据端口查看转发策略配置,将后端服务器组改回诊断报告中的期望值,与Ingress中的配置一致。

ELB侧配置冗余,需要删除转发策略

ELB配置一致性检查诊断出转发策略存在不一致,不一致原因为ELB侧配置冗余,出现此问题一般是因为用户通过ELB控制台在CCE创建的监听器下新建了转发策略。您需要根据转发策略id找到对应的转发策略,并将其删除。

  • 方式一:修改Ingress

    在Ingress的spec.rules中新增对应域名的规则,覆盖该转发策略,让CCE下发值对齐ELB现状。

  • 方式二:修改ELB

    通过查询转发策略详情接口查询该转发策略位于哪个ELB监听器下,并将其删除。

转发规则存在不一致

ELB侧配置缺失/冗余,需要创建/删除转发规则

ELB配置一致性检查诊断出转发规则存在不一致,不一致原因为ELB侧配置缺失/冗余,出现此问题一般是因为用户通过ELB控制台修改了CCE创建的转发策略下的转发规则,通常是修改了类型、匹配方式、路径。由于CCE对于转发规则的更新方式为删除后重创,因此需要创建/删除转发规则的不一致问题通常会同时出现。

请按照以下步骤处理:

  • 方式一:修改Ingress

    从Ingress的spec.rules中修改对应路径的规则,让CCE下发值对齐ELB现状。

  • 方式二:修改ELB

    在ELB控制台根据端口查看转发策略配置,将路径/匹配方式改回诊断报告中的期望值,与Ingress中的配置一致。

后端服务器组存在不一致

ELB侧配置缺失,需要创建后端服务器组

ELB配置一致性检查诊断出后端服务器组存在不一致,不一致原因为ELB侧配置缺失,出现此问题一般是因为用户通过ELB控制台修改了CCE创建的转发策略的后端服务器组(redirect_pool_id),通常伴随着转发策略不一致的异常一起出现。

您可根据后端服务器组的名称、监听器查找其是否存在。若存在,则需修改转发策略的后端服务器组。

  • 方式一:修改Ingress

    从Ingress的spec.rules中删除使用该Service的规则,让CCE下发值对齐ELB现状。

  • 方式二:修改ELB

    在ELB控制台创建后端服务器组,与Ingress中的配置一致。

后端服务器存在不一致

ELB侧配置缺失,需要创建后端服务器

ELB配置一致性检查诊断出后端服务器存在不一致,不一致原因为ELB侧配置缺失,出现此问题一般是因为用户通过ELB控制台修改了CCE创建的后端服务器组中的后端服务器。

  • 方式一:修改Ingress

    检查Ingress对应Service的Endpoints,如果确实不需要该Pod,调整Service选择器。

  • 方式二:修改ELB

    在后端服务器组中添加成员。注意,ELB控制台无法填写名称,您可通过创建后端服务器接口进行创建。

ELB侧配置被修改,需要更新后端服务器

ELB配置一致性检查诊断出后端服务器存在不一致,不一致原因为ELB侧配置被修改,出现此问题一般是因为用户通过ELB控制台修改了CCE创建的后端服务器组中的后端服务器的权重。

  • 方式一:修改Ingress

    检查Ingress中是否有annotation控制成员权重,如有则调整,与ELB侧保持一致。

  • 方式二:修改ELB

    在后端服务器组中编辑成员的权重,改回诊断报告中的期望值。

ELB侧配置冗余,需要删除后端服务器

ELB配置一致性检查诊断出后端服务器存在不一致,不一致原因为ELB侧配置冗余,出现此问题一般是因为用户通过ELB控制台修改了CCE创建的后端服务器组中的后端服务器。

  • 方式一:修改Ingress

    检查Ingress对应Service的Endpoints,如果确实需要该成员,调整Service选择器或调度Pod。

  • 方式二:修改ELB

    在后端服务器组中编辑成员,删除多余的成员。

健康检查配置存在不一致

ELB侧配置被修改,需要更新健康检查

ELB配置一致性检查诊断出健康检查存在不一致,不一致原因为ELB侧配置被修改,出现此问题一般是因为用户通过ELB控制台修改了后端服务器组的健康检查配置。

  • 方式一:修改Ingress

    修改Ingress的kubernetes.io/elb.health-check-flag和kubernetes.io/elb.health-check-option注解。

  • 方式二:修改ELB

    在ELB控制台查看后端服务器组,将健康检查参数改回诊断报告中的期望值,与Ingress中的配置一致。

ELB侧配置冗余,需要删除健康检查

ELB配置一致性检查诊断出健康检查存在不一致,不一致原因为ELB侧配置冗余,出现此问题一般是因为用户通过ELB控制台开启了后端服务器组的健康检查,而未在Ingress里配置。

例如:

inconsistent: need delete healthMonitor(ef7ad2c3-bdda-4727-8a1c-de37eeb48b55) of pool(402dbff8-58b8-4a49-bb99-0dc5cf87c35b)

需要将后端服务器组(id:402dbff8-58b8-4a49-bb99-0dc5cf87c35b)上配置的健康检查删除(可通过删除健康检查接口进行删除),或者在对应的Ingress中开启健康检查。

证书存在不一致

证书用于HTTPS加密通信。CCE管理的证书有两种来源:

来源

Ingress 配置

说明

K8s Secret

spec.tls

CCE从Secret读取证书内容(tls.crt/tls.key),在ELB上创建对应的证书资源。

ELB证书

kubernetes.io/elb.tls-certificate-ids

直接引用ELB上已有的证书ID。

只有使用K8s Secret来源的证书才会出现证书不一致。使用ELB证书只是引用已有证书的ID,不涉及证书内容的创建或更新。

ELB侧配置缺失,需要创建证书

ELB配置一致性检查诊断出证书存在不一致,不一致原因为ELB侧配置缺失,出现此问题一般是因为Ingress通过spec.tls引用了K8s Secret,但ELB上对应的证书资源不存在;或者Secret是新创建的,CCE还未完成同步。

  • 方式一:修改Ingress

    如果不需要该证书,从Ingress的spec.tls中移除对应条目。

  • 方式二:修改ELB

    在ELB控制台中创建/导入证书,证书内容需要与K8s Secret中的tls.crt/tls.key一致。

ELB侧配置被修改,需要更新证书

ELB配置一致性检查诊断出证书存在不一致,不一致原因为ELB侧配置被修改,出现此问题一般是因为用户手动在ELB控制台修改了证书的公钥或私钥内容(比如直接在ELB上更换了证书文件)。

  • 方式一:修改Ingress

    更新K8s Secret的tls.crt和tls.key,使其内容与ELB上当前的证书一致(适用于ELB侧的证书更换是有意为之的情况)。

  • 方式二:修改ELB

    在ELB控制台中编辑证书,将证书内容改回与K8s Secret一致(适用于ELB侧的修改是误操作的情况)。

报告中的secret字段显示的是K8s Secret的UID,domain显示证书域名。您可以通过这些信息在K8s集群中找到对应的 Secret,对比其tls.crt内容与ELB上的证书内容。

常见问题

  • 资源明明存在,为什么还显示“配置缺失”?

    CCE管理的ELB监听器/转发策略必须有固定格式的描述信息,如果描述被改了,CCE将无法识别并管理对应的监听器。请参考对应的提示查找本文中的解决方案进行处理。

  • 处理了部分不一致后,其他不一致消失了?

    这是正常现象。由于资源之间有依赖关系,处理了父级资源的问题后,子级资源的不一致可能会自动消失。建议按推荐顺序处理,处理完后重新运行检测。

  • 修改了Ingress的监听器配置,为什么不生效?

    如果同一个端口有多个Ingress共用监听器,以最早创建的Ingress配置为准,修改其他Ingress配置不会生效。详情参考同一集群中多个Ingress使用同一个ELB的配置说明。

相关文档