Kuberentes 通过声明式的方式管理资源,声明式 API 只需要声明一个期望的状态,系统就会自行调节以满足该状态。但声明式 API 也引入新的问题:无法感知资源当前状态信息,对任务的流程把握不够清晰。
为了保证负载均衡实例配置信息的一致性,整个 Service/Ingress 是作为一个资源整体进行同步的。若 CLB 类型的 Service/Ingress 有任何监听器级别的配置错误问题,会导致整个负载均衡同步失败,并以 Event 的形式反馈问题让用户进行处理。资源同步正确时,也会有该资源正常完成同步的 Event 更新。
Service/Ingress 作为用户直接对外提供服务的资源对象,如果异常将导致服务不可用,影响服务质量。本文提供了常见的 Service/Ingress 报错原因和处理办法。
如何查看 Service/Ingress Event 的报错信息?
1. 登录 容器服务控制台,选择左侧导航栏中的集群。
2. 在集群管理页面中,选择需要更新 YAML 的集群 ID,进入集群基本信息页面。
3. 选择服务与路由 > Service 或 Ingress,进入 Service 或 Ingress 信息页面。
4. 单击某个具体的 Service 或 Ingress 名称。
5. 在事件页签,可查看当前 Service 或 Ingress 的事件信息。如下图所示,可以查看当前 Service/Ingress 的 Event 报错代码。
![](https://qcloudimg.tencent-cloud.cn/image/document/541ae162b444fba3eb1e64fcb384cddd.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/541ae162b444fba3eb1e64fcb384cddd.png)
注意
资源事件只保存最近 1 小时内发生的事件,请尽快查阅。
获取异常 Ingress 资源列表和报错信息:
kubectl get event | grep ingress
获取异常 Service 资源列表和报错信息:
kubectl get event | grep service
Service Event 报错原因和处理办法
错误码 | 错误内容 | 解决方案 | 不修改可能存在的风险 |
E4001 | TKE_QCSRoles 授权 | 集群维度,组件不能正常工作 | |
E4004 | 负载均衡数量超出上限 | 新增资源没有流量接入 | |
E4005 | 负载均衡创建参数错误 | 新增资源没有流量接入 | |
E4008 | 子网 IP 不足 | 三种方案: 1. 更换其他有足够 IP 的子网新建子网。 2. 更新 Service 注解使用新的子网 ID。 3. 改为使用公网类型的负载均衡。 | 新增资源没有流量接入 |
E4009 | 欠费 | 您需要充值账户。 | 新增资源没有流量接入 |
E4011 | 使用已有负载均衡不存在 | 新增资源没有流量接入 | |
E4012 | 使用已有负载均衡是其他 TKE 管理的资源 | 新增资源没有流量接入 | |
E4013 | 使用已有负载均衡是其他集群使用的资源 | 新增资源没有流量接入 | |
E4014 | 使用已有负载均衡存在端口冲突 | 资源同步被阻塞,用户更新可能导致负载均衡后端不能正常更新。 | |
E4016 | 用户未开通复用功能 | 资源同步被阻塞,用户更新可能导致负载均衡后端不能正常更新。 | |
E4026 | 外挂配置未找到 | 1. 删除 Service 中该外挂配置功能。 2. 注解添加对应名称的 TkeServiceConfig 资源。 | 暂无 |
E4033 | 开启直连,但是没有工作负载后端支持直连接入 | 工作负载使用弹性网卡网络模式,并且关闭 HostNetwork 删除直连注解,使用 NodePort 接入,直连 Service 使用说明请参见 使用 LoadBalancer 直连 Pod 模式 Service。 | 后端更新可能失败,用户滚动更新时可能导致断流。 |
E4036 | 后端四元组冲突 | 负载均衡 VIP、监听器协议、后端 IP、后端端口,四元组必须保持唯一。负载均衡限制,用户需要在 Pod 上监听多个端口,分别进行绑定解决这个问题。 | 资源同步被阻塞,用户更新可能导致负载均衡后端不能正常更新。 |
E4037 | 子网不存在 | 三种方案: 1. 更换其他有足够 IP 的子网新建子网。 2. 更新 Service 注解使用新的子网 ID。 3. 改为使用公网类型的负载均衡。 | 新增资源没有流量接入 |
E4062 | 证书过期 | 资源同步被阻塞,用户更新可能导致负载均衡后端不能正常更新。 | |
E4075 | 跨地域功能,地域 ID 错误 | 新增资源没有流量接入 |
Ingress Event 报错原因和处理办法
错误码 | 错误内容 | 解决方案 | 不修改可能存在的风险 |
E4003 | 负载均衡数量到上限 | 提交工单 申请负载均衡数量 Quota。 | 新增资源没有流量接入 |
E4005 | 转发规则数量到上限 | 提交工单 申请负载均衡数量 Quota。 | 新增资源没有流量接入 |
E4008 | TKE_QCSRole 授权被删除 | 集群维度,组件不能正常工作 | |
E4009 | TLS 字段未配置 Secret 名称 | 若您需要 HTTPS 协议的转发规则,则需要修改 Ingress 里的 TLS 字段,配置 HTTPS 监听器需要的证书。详情可参见 Ingress 证书配置。若您不需要 HTTPS 协议的转发规则,删除 TLS 字段,使用 HTTP 协议进行服务暴露。 | 资源同步被阻塞,用户更新可能导致负载均衡后端不能正常更新。 |
E4010 | TLS 字段配置 Secret 无法找到 | 资源同步被阻塞,用户更新可能导致负载均衡后端不能正常更新。 | |
E4011 | TLS 字段配置 Secret 内容错误,没有证书 ID | 资源同步被阻塞,用户更新可能导致负载均衡后端不能正常更新。 | |
E4012 | 证书状态异常 | 资源同步被阻塞,用户更新可能导致负载均衡后端不能正常更新。 | |
E4018 | 指定已有负载均衡不存在 | 新增资源没有流量接入 | |
E4019 | 指定已有负载均衡是 TKE 创建的 | 新增资源没有流量接入 | |
E4020 | 指定已有负载均衡是其他 Ingress 使用的 | 新增资源没有流量接入 | |
E4021 | 指定已有负载均衡监听器未排空 | 登录负载均衡控制台,删除该负载均衡所有的监听器。 | 新增资源没有流量接入 |
E4022 | kubernetes.io/ingress.http-rules,注解格式不正确 | 资源同步被阻塞,用户更新可能导致负载均衡后端不能正常更新。 | |
E4023 | kubernetes.io/ingress.https-rules,注解格式不正确 | 资源同步被阻塞,用户更新可能导致负载均衡后端不能正常更新。 | |
E4027 | 账户欠费 | 您需要充值账户。 | 新增资源没有流量接入 |
E4031 | 转发规则存在不合法字符 | 修改转发规则 Rule 字段。负载均衡转发路径不支持正则。 | 资源同步被阻塞,用户更新可能导致负载均衡后端不能正常更新。 |
E4034 | IPv6 CLB,未声明 host 字段。(IPv4 可以不填 Host,默认为 VIP,IPv6 不支持) | 补充 Ingress 中所有 Host 字段,不能留空。 | 资源同步被阻塞,用户更新可能导致负载均衡后端不能正常更新。 |
E4035 | 证书 ID 格式错误 | 资源同步被阻塞,用户更新可能导致负载均衡后端不能正常更新。 | |
E4039 | 证书过期 | 资源同步被阻塞,用户更新可能导致负载均衡后端不能正常更新。 | |
E4040 | Ingress 存在域名没有声明对应证书。 | 资源同步被阻塞,用户更新可能导致负载均衡后端不能正常更新。 | |
E4041 | Ingress 中转发规则指定的 Service 不存在。 | 如果您的 Service 确实不存在,需要删除 Ingress 中使用该 Service 的转发规则如果您需要使用该 Service,则在与 Ingress 相同的命名空间下,新建该名称 Service 资源。 | 资源同步被阻塞,用户更新可能导致负载均衡后端不能正常更新。 |
E4042 | Ingress 中转发规则指定的 Service 不存在对应转发端口 | 如果您的 Service 确实不存在这样的端口,需要删除 Ingress 中使用该 Service 的转发规则如果是端口配置问题,需要更新成新端口。 | 资源同步被阻塞,用户更新可能导致负载均衡后端不能正常更新。 |
E4043 | Ingress 指定绑定的 TkeServiceConfig 资源不存在 | 不阻塞用户配置,详情可参见 Ingress 使用 TkeServiceConfig 配置 CLB,有两种方案:删除 Service 中该外挂配置功能注解添加对应名称的 TkeServiceConfig 资源。 | 暂无 |
E4044 | kubernetes.io/ingress.rule-mix,填了非合法值 | 资源同步被阻塞,用户更新可能导致负载均衡后端不能正常更新。 | |
E4046 | 资源带宽注解配置错误,格式错误或带宽范围错误 | 带宽合法值 1-2048 | 新增资源没有流量接入 |
E4047 | Ingress 中转发规则指定的 Service 为 ClusterIP 类型,没有转发端口接入 | 修改报错 Service 为 NodePort 类型 | 资源同步被阻塞,用户更新可能导致负载均衡后端不能正常更新。 |
E4048 | Ingress 存在域名声明了多个默认证书 | TLS 字段中声明了多个没有 Host 配置的 Secret。删除至只剩一个。 | 资源同步被阻塞,用户更新可能导致负载均衡后端不能正常更新。 |
E4049 | Ingress 存在某个固定域名声明了多个证书 | TLS 字段中有一个域名声明了多个 Secret。删除至只剩一个。 | 资源同步被阻塞,用户更新可能导致负载均衡后端不能正常更新。 |
E4051 | 用户手动外挂配置指定了系统自动化生成的配置 | 暂无 | |
E4052 | Ingress 中转发规则指定的域名不符合正则要求 | 检查并修改错误域名一般错误原因域名不带".",如 Host: test 域名用大写,如 Host: Test.com 正则: (\\*|[a-z0-9]([-a-z0-9]*[a-z0-9])?)(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)+ | 资源同步被阻塞,用户更新可能导致负载均衡后端不能正常更新。 |
E4053 | 子网 IP 用尽,无法创建负载均衡 | 三种方案: 1. 更换其他有足够 IP 的子网新建子网。 2. 更新 Service 注解使用新的子网 ID。 3. 改为使用公网类型的负载均衡。 | 新增资源没有流量接入 |
E4054 | 后端数量达到上限 | 提交工单 申请负载均衡后端数量 Quota。 | 后端更新可能失败,用户滚动更新时可能导致断流 |
E4055 | 子网不存在或格式错误,无法创建负载均衡 | 三种方案: 1. 更换其他有足够 IP 的子网新建子网。 2. 更新 Service 注解使用新的子网 ID。 3. 改为使用公网类型的负载均衡。 | 新增资源没有流量接入 |
E4060 | 账户未开白,无法为用户开启 SNAT Pro 功能 | 提交工单 申请负载均衡开白 SNAT Pro 能力。 | 资源同步被阻塞,用户更新可能导致负载均衡后端不能正常更新。 |
E4066 | 集群初始化失败,CRD 无法创建 | 集群维度,组件不能正常工作 | |
E4068 | 自动重定向规则和用户其他声明规则冲突 | 资源同步被阻塞,用户更新可能导致负载均衡后端不能正常更新。 | |
E4071 | 跨地域配置错误,CLB 所在 VPC 和当前集群所在 VPC 不在同一个云联网中 | 新增资源没有流量接入 | |
E4074 | 节点欠费可能,后端绑定失败 | CLB 后端绑定问题,可能节点遭到封锁。 | 后端更新可能失败,用户滚动更新时可能导致断流 |
E4081 | kubernetes.io/ingress.https-rules,注解格式不正确(配置冲突) | 资源同步被阻塞,用户更新可能导致负载均衡后端不能正常更新。 | |
E4082 | NoSelector Service 不支持绑定,Ingress 在直连场景下,声明使用了类似资源 | NoSelector Service 后端不支持直连接入,需要改用 NodePort。 | 资源同步被阻塞,用户更新可能导致负载均衡后端不能正常更新。 |
E4084 | 跨域绑定 1.0 方案下,不能使用 SNAT Pro 功能 | 系统限制,需要调整技术方案。 | 资源同步被阻塞,用户更新可能导致负载均衡后端不能正常更新。 |
E4098 | 指定已有负载均衡,负载均衡 ID 格式错误 | 新增资源没有流量接入 | |
E4101 | 指定已有负载均衡监听器存在冲突 | 检查 80/443 端口是否已经被其他资源占用。 | 资源同步被阻塞,用户更新可能导致负载均衡后端不能正常更新。 |